来签个到吧~~
我们审计代码,转义16进制为ascii码得到
1 | <?php |
1 | ?id=aGVuYW4= |
得到flag
貌似露了点什么?!
我们扫描目录,发现存在www.zip,我们将文件下载下来
发现里面有个文件
我们用记事本打开,得到flag
记得匿名哟~
这题考的是php的匿名类
1 | <?php |
我们先代码审计
先定义了一个匿名类并创建了一个对象
删除了之前创建的匿名类对象
然后通过$_GET['class']
来获取外部传入的参数并赋值给$a
:
这里有一个unset的操作,去搜一下就可以发现很多关于unset的解释,因为这个匿名类没有到256字节的长度,所以unset不会马上就删除掉它的内存,只是把这个名字给擦去了。
那么我们只需要找到这块内存,然后扒出来就行了。
1 | <?php |
找到了如何调用这个匿名类,但是有个问题就是,最后的数字一定要对上,:后面是类所在的行,$0后面是访问次数,要一致
payload
1 | ?class=class@anonymous%00/var/www/html/index.php:4$0 |
我们进行爆破
得到flag
哎哟你干嘛~~
我们看到题目需要我们点击图片99999999次,我们想到修改js或bp发包,我试了下bp发包不可行,那我们就尝试修改js
我们在index.js里面发现,如果H1的值是99999999的话,就会输出flag
我们在控制台进行修改,将H1改为99999998
我们再点击一下图片就能得到flag
进行base64解码得到flag
包简单,一把梭
刚看到这个题我以为是sql注入,但尝试了很久后发现没啥用,我们扫描目录
当目录为www.zip时报错,并提示了[ThinkPHP](http://www.thinkphp.cn/) V5.0.23 ,我们想到ThinkPHP V5.0.23 (远程代码执行)漏洞
漏洞引入:
其5.0.23以前的版本中,获取method的方法中没有正确处理方法名,导致攻击者可以调用Request类任意方法并构造利用链,从而导致远程代码执行漏洞
漏洞利用
- 1、访问靶机地址+端口号传入,url后接入/index.php?s=captcha进入首页
- 2、Burp抓包修改传参方式为Post,传入参数为”_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=pwd”,其中pwd为系统执行命令可进行一系列操作。
我们进行尝试
成功执行
我们尝试重定向写入phpinfo
1 | echo "<?php phpinfo(); ?>" > info.php |
我们访问info.php
执行成功
我们搜索flag
找到flag
玩会小游戏吧
题目提示玩到9999分就能得到flag,玩是不可能玩的,我们考虑修改js
我们修改重新开始的js方法的distanceRun为一个超大的值,flag就自己出来了