长亭百川云 - 文章详情

2022网鼎杯白虎组部分wp(新增re-junk)

Red0

303

2024-07-13

0x0 junk

(本题为赛后解出,特此补上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

运行即可得到flag

0x1 签到题

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

0x4 Web**-923**

有.git路径,所以有git泄露,拖源码

代码审计发现上传路径

上传后,由时间戳重命名

发现有后缀过滤

但htaccess过滤有问题,只过滤了.htaccess后缀的,所以可以上传.htaccess文件,且同时需要跟木马文件同一时间上传

成功解析

哥斯拉连上,读取flag

0x5 Misc-620

爆破密码得到密码99114514

发现password,7EqufFnrSGk=

base64解密得,EC4AAE7C59EB4869

尝试解MD5得,nmy0612

得到flag文件

爆破编码得flag,flag{d2112923-78d6-4064-977c-b73297dc4491}

0x6 misc034

文件名字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}

0x7 MISC830

伪加密,改09为00

得到图片

Stegsolve看一下,最后一个通道前面都是0和1

发现有108900个0或1

发现330*330=108900,尝试以1为黑,0为白,画图

import cv2

像是拼接的二维码,拼接一下

扫码得flag

0x8 WEB925

反序列化要触发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
相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2