笔记36
Abstract: SQL 注入之宽字节注入、 HTTP 头注入和其他注入
Table of Contents
宽字节注入
原理:
GBK 占用两字节,ASCII 占用一个字节。PHP 中编码为 GBK,函数执行添加的是 ASCII 编码,添加的符号为 "\",MySQL 默认字符集是 GBK 等宽字节字符集。
%df' 被 PHP 中的 addslashes函数(开启 GPC 或者 iconv())转义成 %df\' ,其中 \ 的十六进制是 %5C,那么现在 %df\' = %df%5C%27 ,若程序默认的字符集是 GBK 等宽字节字符集,则 MySQL 用 GBK 编码时,会认为 %df%5c%27 是一个宽字符,即 運',出现单引号就好注入了。
宽字节注入,内联注入是无法使用的,宽字节注入推荐使用加前缀 --prefix和后缀 suffix 方法,不推荐写 tamper。
注意:
PHP5.3之前,PDO受宽字节注入影响- 如何防止宽字节注入?
mysql_set_chartset('GBK')mysql_real_escape_string($value)
二次编码注入
url 编码是一种浏览器用来打包表单输入的格式。url 编码就是一个字符 ascii码的十六进制,不过需要在前面加上 % ,比如 \ 的 ascii 是 92(0x5c),故\ 的 url 编码为 %5c
函数
- urldecode()
- rawurldecode()
1 |
|
注意:默认的 GET 和 POST 函数,先解码一次。
HTTP头注入
XFF 注入
X-Forwarded-For:简称 XFF 头,代表客户端,也就是 HTTP 的请求端真实的 IP,通常一些网站防注入功能会记录请求端真实 IP 地址并写入数据库或某文件。通过修改 XFF 头可以实现伪造 IP。
使用 Modify Headers 可以修改 X-Forwarded-For。

通过 burpsuite 抓包
