重要信息也是关键点:cookie中查询看看username强比较是否为admin,/var/babyctf中是否有success.txt
第一个很好弄,猜测就是可以传入cookie什么的,但是第二个该路径中要含有success.txt,既然题目要求,那就不可能有这个文件,所以要由我们自己创建
直接给了上传的路径就是题目要求我们的,应该是自己主机创建上传网页,上传到服务器
继续往下看,有点看不懂是啥意思,找万能的ai
ok啊可以读取文件,但是不知道有什么用,看了大佬的wp,直接悟了
漏了一个关键的点,session存储在和要求的success文件在同一个目录下,而且session的默认存储方式就是sess_PHPSESSID,我们直接利用download读取它,进行伪造
读取方式不太会的可以直接看上面download内容
源码:
<html>
<body>
<form action="http://3d512401-ecb4-497c-8b90-8fbfb5c808f1.node4.buuoj.cn:81/" method="POST" enctype="multipart/form-data">
<input type="file" name="up_file">
<input type="hidden" name="attr" name=".">
<input type="hidden" name="direction" value="upload">
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
修改guest为admin,在自己网页中上传,注意不要省略username前面不可见字符
上传成功后计算文件的sha256值,并且访问,获得admin(文件Hash计算 - 一个工具箱 - 好用的在线工具都在这里!)
当然也可以直接kali里面
接着我们直接上传succes.txt,这里不太能懂大佬们将attr中参数改为success.txt,看见很多大佬都在attr参数中加入success.txt但是我自己尝试不加也可以
看了很多,大佬们都是写脚本的,但是对于我这种菜鸡来说写脚本不如实操,毕竟主要积累经验嘛
总结:
知识点:session伪造和php的session存储方式
题目运用session伪造和文件上传,将原来的session修改为admin,上传success.txt,使得服务器满足所有条件,从而获得flag
参考资料: