一个有趣的PHP一句话
目录
警告
本文最后更新于 2019-06-30,文中内容可能已过时。
在iscc线下赛awd中遇到了一个shell,挺有意思,记录一下。
源代码是这样的。其实刚拿到这个shell的时候我挺蒙的,不知道该怎么去利用,然后分析了一下,发现其实也还简单,下面我们一起来看下。
|
|
首先从请求中拿到$a
参数,然后经过一次var_dump
输出$$a
的值,最后交给eval
去执行。
那么显然eval
的参数我们是可以控制的,关键的点就在于怎么去控制var_dump
函数输出的内容。
我们先来看下var_dump函数的效果
|
|
可以看出来他会把变量的类型和变量的值都输出出来。
然后我们回头来看$$
,在之前的文章中提到过,$$
是存在变量覆盖的,那么我们可以通过$$
来把a
变量覆盖为我们想要的值。
可以看到,当我们post提交a=a=1
是,$a
的值被覆盖为1,此时eval
执行的是eval("var_dump($a=1);")
那么我们继续构造payload,闭合var_dump
来拼接我们自己的函数。
|
|
利用成功!
那么怎么让蚁剑也能用这个shell呢?继续修改我们的payload
|
|
然后蚁剑配置
密码是p。这样就能连上蚁剑了。
s1ye师傅提出了另一种思路${}
。他个臭嗨又偷偷看我文章
如果你觉得这篇文章对你有所帮助,欢迎赞赏或关注微信公众号~