攻防世界——web(进阶区)

本文解析了三个Web安全挑战,包括乱码HTML分析、PHP变量解码及unserialize漏洞利用,展示了如何通过逆向工程和代码注入获取隐藏的flag。

前记

瞅瞅进阶区的,继续总结。

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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值