前言
一切都是自己的理解,其中可能有各种错误,仅供参考。
easyphp
1 | //题目环境:php:7.4.8-apache |
这个题给出了一个php的版本:7.4.8,可能是考这个版本的某个漏洞,就去翻阅php7.4.9的修复,找到了一个东西

但是经过自己测试,感觉并没有什么用,首先我们访问这个网页是由子进程返回的,如果需要利用就还需要创建一个进程,再利用这个新的子进程进行利用。而主进程中有个phpinfo(),想着怎么才能看子进程,经过查阅发现pcntl_wait的作用,那么我们执行以下这个函数就能够回到主进程,进而调用了phpinfo()。

payload如下:
http://eci-2ze9505q64pi4jbaggsb.cloudeci1.ichunqiu.com/?a=call_user_func&b=pcntl_wait
在phpinfo中找到了flag。
babyunserialize
1 | /** |
直接给出payload,注意带上命名空间。
1 |
|
连接上去后发现没法执行命令,使用蚁剑的bypass disable_functions插件逐个尝试就进行了绕过,最后flag在/tmp目录下。
rceme
这个题没啥好说的,开始我们做出的题是在phpinfo中找到的flag,来构造一个phpinfo试试,本题代码如下。
1 |
|
php这些是黑名单,采用字符串拼接的方式来构造例如'sy'.'stem',接下来的工作就是读解析if的代码了,按规则写出模板代码即可。
poc:
a={if:1)(%27sy%27.%27stem%27)(ls);//}{end%20if}
最后flag还是在phpinfo中,即payload为:
a={if:1)(%27ph%27.%27pinfo%27)();//}{end%20if}
littlegame
nodejs的题,第一次做,还是挺有意思的,需要点前置知识:原型链污染。这个题的代码比较简单,并且是一个cve,而且有poc可以来参考,参考连接: https://snyk.io/vuln/SNYK-JS-SETVALUE-450213 。关键代码如下:
1 | router.post("/DeveloperControlPanel", function (req, res, next) { |
在DeveloperControlPanel方法中,如果是admin就能够看到flag了,而Privilege中可以修改key跟value,使用参考链接中的poc进行测试,过程如下:


easytrick
代码如下:
1 |
|
套娃题的老套路,payload如下:
1 |
|