标签:get XML 位置 err serialize 提示 构造 turn 比较
CTF-安恒十二月月赛部分writeup
这次题目都比较简单蛤,连我这菜鸡都能做几道。
WEB1-ezweb2
打开网站,啥也没有,审计源代码,还是啥都没有,也没什么功能菜单,扫了一下目录,扫到了admin.php,但是提示:你不是管理员。好吧,抓个包看看
解一下码--:
将user改为admin,发现直接跳转到了admin.php页面。
这个框试了一下是可以执行命令的,ls
但是ls / 却错误,ls -l 也是错误,应该是过滤了空格通过 $IFS 可以绕过
cat /ffLAG_404 也就是cat$IFS/ffLAG_404即可读取flag
flag为:flag{6f1d95159e3b90ed28186c518dd15e8c}
WEB2-easy
是一道代码审计题
代码如下
<?php @error_reporting(1); include ‘flag.php‘; class baby { public $file; function __toString() { if(isset($this->file)) { $filename = "./{$this->file}"; if (file_get_contents($filename)) { return file_get_contents($filename); } } } } if (isset($_GET[‘data‘])) { $data = $_GET[‘data‘]; preg_match(‘/[oc]:\d+:/i‘,$data,$matches); if(count($matches)) { die(‘Hacker!‘); } else { $good = unserialize($data); echo $good; } } else { highlight_file("./index.php"); } ?>
unserialize 一眼就看到了是反序列化题目,
用户类定义了一个__toString为了让应用程序能够将类作为一个字符串输出(echo $good),而且其他类也可能定义了一个类允许__toString读取某个文件。
那么构造反序列化字符串即可读取任意文件,但是题目存在正则筛选,preg_match(‘/[oc]:\d+:/i‘,$data,$matches);筛掉了[oc]:数字:。
如果正常的反序列化payload:O:4:"baby":1:{s:4:"file";s:8:"flag.php";}中前面的O:4:符合正则的条件,因此将其绕过即可。利用符号+就不会正则匹配到数字
所以payload为:O:+4:"baby":1:{s:4:"file";s:8:"flag.php";}
flag为flag{ad2328a2c3f0933c053fd3c6f28f6143}
MISC2-签到
关注官方微信号 回答脑筋急转弯即可 答案为蜗牛
MISC3-学习资料
题目只有一个txt可以打开
压缩包是加密的,没有密码提示,也不是压缩包伪加密,那只能爆破了 上工具ARCHPR
N年以后....
密码居然有10位 : 1qazmko098
word隐写嘿嘿,套路1检查文档
有是有,但是找半天,后来发现flag在图片后面......
所以flag为flag{edaa144c91a4e5b817e4a18cbdb78879}
其实把word后缀改为zip,打开找word/document.xml
MISC4-juju
压缩包里只有一张png图,一顿测试后,发现在kali打不开
那就是说图片的文件内容肯定被改了,题目提示说有11只猪,但是png只有几只,所以大概知道是什么了
上winhex
这两个位置决定着图片的高度,如果更改它的值,图片高度也会发生变化,值越大图片越长
改了后面的参数几次还是没出来,所以直接该前一位 02为22
好了,图片够长了
base的格式,但是不是base64,是base32,解一下得到flag
所以flag为flag{a213072327f762855e475779eb081ca3}
标签:get XML 位置 err serialize 提示 构造 turn 比较
原文地址:https://www.cnblogs.com/pureqh/p/10161993.html