(本题为赛后解出,特此补上wp)
**阶段一
**
使用IDA分析本题,发现存在花指令
其模式如图所示,通过xor + jz形式,看似为条件判断的jz,由于xor rax, rax必得0,故jz的跳转必定执行,而ida无法发现这一点。我们可以通过将jz指令改为直接跳转的jmp指令,从而避免ida误判。
阶段二
patch掉阶段一的花指令后,发现程序中存在大量int 3调试中断指令,又有位于0x140001320的调试中断事件处理函数,如下图所示:
该函数会根据int 3指令后一字节的值采取不同的处理方式,本质上是模拟一条指令的运行,如图中的case 4,等价于mov rcx, rsi。因此我们对所有int 3指令进行patch,转换为其等价的汇编指令。
阶段一和阶段二的patch脚本如下:
from keystone import *
patch后得到程序核心逻辑如下:
其中enc1函数为TEA加密
enc2函数为逐字节循环左移5位
解密脚本如下:
from struct import pack, unpack
0x2 simple math
脚本如下:
from Crypto.Util.number import *
0x3 easywork
根据https://blog.csdn.net/superprintf/article/details/108964563博客中的方法中求解a、b、n。
from math import gcd
p= 339088189917874808463944743121467561531
最后将f(e)带入sol后算出md5,与加密结果异或得到flag
有.git路径,所以有git泄露,拖源码
代码审计发现上传路径
上传后,由时间戳重命名
发现有后缀过滤
但htaccess过滤有问题,只过滤了.htaccess后缀的,所以可以上传.htaccess文件,且同时需要跟木马文件同一时间上传
成功解析
哥斯拉连上,读取flag
爆破密码得到密码99114514
发现password,7EqufFnrSGk=
base64解密得,EC4AAE7C59EB4869
尝试解MD5得,nmy0612
得到flag文件
爆破编码得flag,flag{d2112923-78d6-4064-977c-b73297dc4491}
文件名字tHXcode (后面才知道是汉信码)
Hxd打开文件 发现有PNG的特征 把它补全
打开来是二维码
扫描二维码 转到油管视频 翻了一下好像没有意义 https://www.youtube.com/watch?v=l3N9fPIT4yw
用stegsolve发现通道RGB 0 1通道有大概噪点
把噪点提取出来
import cv2
跑出来这样
长得像二维码少了定位标志 但又不太对 发现是汉信码
找个画格子网站https://www.pixilart.com/draw?ref=home-page 画出来
读取得到flag flag{ae0f3bce-814b-4928-9801-7a2f2ca88273}
伪加密,改09为00
得到图片
Stegsolve看一下,最后一个通道前面都是0和1
发现有108900个0或1
发现330*330=108900,尝试以1为黑,0为白,画图
import cv2
像是拼接的二维码,拼接一下
扫码得flag
反序列化要触发readfile函数读取flag,要找能够执行函数调用Onemore类的readfile方法,在suhasuha类的__set方法中($this->action)()存在函数调用点,因此要想办法触发__set魔术方法。在abaaba类中_get方法里存在$this->DoNotGet->$name = "two"的set链,因此需要将$this->DoNotGet设为suhashuha类,这样触发__get方法后尝试给suhasuha中的name参数赋值,触发suhasuha类中的__set方法。
接下来的问题是,如何触发abaaba类的__get魔术方法,在abaaba类中本身存在的__toString魔术方法中存在get操作,可以触发__get魔术方法,接着考虑如何触发abaaba类的__toString魔术方法,往下看在One类中的__destruct方法中可以将$count参数当字符串使用,此处将abaaba类实例传入$count参数即可触发__toString魔术方法,综上,正向调用链为首先初始化一个abaaba类将suhasuha类赋给DoNotGet参数,再利用One->__toString->abaaba->__toString->abaaba->__get->suhasuha->__set->Onemore->readfile。
safe过滤函数过滤了/../../和其转义变形,用%00绕过即可。
<?php