前记
瞅瞅进阶区的,继续总结。
1.NaNNaNNaNNaN-Batman

打开题目并下载附件

有乱码但看到<script>等标签的,后缀名改为html查看

毫无头绪,查看wp发现

整理下弹框内容发现

直接将下面代码复制到控制台执行
var t=["fl","s_a","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]);s[o%4].splice(0,1)
}
得到flag

2.PHP2

打开场景链接

你可以浏览这个网站吗?No,I can’t.
查看源码什么都没有,后面加上index.php。。。没用,加上index.phps(phps文件就是php的源代码文件,通常用于提供给用户(访问者)查看php代码,因为用户无法直接通过Web浏览器看到php文件的内容,所以需要用phps文件代替)

了解下urldecode()函数

然后分析代码,get传入的id经过urldecode()函数解码,如果解码结果为admin,输出“Access granted!”和Key值(即flag)。经过两次urlencode()函数解码,所以
payload:http://111.198.29.45:45494/index.php?id=a%2564min
得到flag

3.unserialize3

题目提示unserialize即反序列化,PHP魔法函数中存在__wakeup()方法,unserialize()会检查是否存在一个__wakeup方法。如果存在,则会先调用 __wakeup方法,预先准备对象数据。
于是构造
payload:O:4:"xctf":1:{s:4:"flag";s:3:"111";}
发现回显结果为:
bad requests
这里是因为__wakeup()的影响,所以要绕过__wakeup,当序列化字符串表示对象属性个数的值大于真实个数的属性时就会跳过__wakeup的执行
故构造
payload:http://111.198.29.45:57697/?code=O:4:"xctf":2:{s:4:"flag";s:3:"111";}
即可得出flag

后记
ok,so much for today.
本文解析了三个Web安全挑战,包括乱码HTML分析、PHP变量解码及unserialize漏洞利用,展示了如何通过逆向工程和代码注入获取隐藏的flag。
&spm=1001.2101.3001.5002&articleId=101380996&d=1&t=3&u=7e21b26ee0a643619c7ee53fe940267e)
1807

被折叠的 条评论
为什么被折叠?



