随手记录一下(
5呢
简单的正则
通过构造符合题意的正则表达式即可得到 flag。
http://10.60.38.227:34003/?s=the%20flag12/d/31
你会那样读文件吗
进入后链接提示我们跳转到 http://10.60.38.227:34007/index.php?file=hint.php ,之后在源码中找到提示:
然后通过 php 伪协议获得 flag.php 的 base64,再通过解码就能拿到 flag了:
http://10.60.38.227:34007/index.php?file=php://filter/read=convert.base64-encode/resource=flag.php
快速计算
标题虽然说是 Python 计算,但其实并用不到 Python(
通过观察我们知道我们需要计算的内容是第二个 div
里的算式去掉 =?
的部分,于是简单写一个油猴脚本:
1 | // ==UserScript== |
加载后刷新页面即可:
哪个才是 flag
找不同,在源码中找到真正的 flag:
Serialize & Unserialize
首先先根据题目要求构造字符串:
1 |
|
得到第一步答案:s:6:"Spirit";
,根据提示跳转到 info.php
:
1 |
|
根据观察,可以发现类从上到下类似链式调用,于是补充代码如下:
得到输出结果:
O:5:”Start”:2:{s:1:”a”;O:5:”Func1”:2:{s:1:”a”;O:5:”Func2”:2:{s:1:”a”;O:5:”Func3”:2:{s:1:”a”;O:4:”Flag”:0:{}s:1:”b”;N;}s:1:”b”;N;}s:1:”b”;N;}s:1:”b”;N;}flag{**}
log
首先观察 access.log 文件本身,我们可以发现其中充斥这很多 URI 编码后的字符串。我们先将其过一遍 decodeURIComponent
,再去除一些无用的内容,诸如 UserAgent
。
再观察,可以发现这是一次 SQL 注入的攻击日志,攻击者通过各位比较确认了 flag。于是我们可以利用攻击者确认 flag 的日志获得 flag。搜索 !=
:
可以看到,这些数字已经是我们想要的 f
,l
,a
了。最后将其拼接起来即可:
可靠的WebApp
通过观察可以发现核心在于 main.min.js
:
打开文件,发现文件经过了混淆。我们使用 JSNice
简单对内容进行反混淆:
再对所有用到 _0x76ef
的项进行整理,最后得到相对反混淆后的结果。在这个过程中,我们观察到这个对象:
1 | this.APIModels = { |
通过这个对象,我们构建出增加余额的函数(上文对象中 count
需要改大):
1 | this.adminAddCoin = function() { |
最后,用我们修改完的 main 函数在 Console 中替换原有的 console 即可:
最后修改后的 main.min.js
如下:
1 | ; |