首页
社区
课程
招聘
KCTF2023第五题 争分夺秒
发表于: 2023-9-13 09:26 9411

KCTF2023第五题 争分夺秒

2023-9-13 09:26
9411

程序存在大量混淆,可根据我们输入的交叉引用和函数返回值的交叉引用进行筛选

输入为base64编码

解编码后[-4:]为crc32校验值

分成2部分

每部分结构

a3、a4为分成的2个部分,交叉引用查找后续处理

校验每部分头部dw,(固定值,可通过求解逆元得到)

函数内通过 call check_ny_4CE450校验dw值

计算逆元

在xor_4E1620函数前后有混淆干扰,
xortable没必要获取,后面可通过校验结果反推。

xor data,通过dw值生成固定xor序列

校验data部分是否为固定值的逆元

可得到a,p,计算逆元可得b

第一部分

a

p

求得逆元b:

a2

p2

求得逆元b2:

但此时b经过前面xor处理,

只需再次构造输入后调试,便可得到正确的data

flag

.text:0047D5F7 loc_47D5F7:                             ; CODE XREF: check_47B430+21A9↑j
.text:0047D5F7                 lea     ecx, [ebp+outsz]
.text:0047D5FD                 push    ecx
.text:0047D5FE                 lea     edx, [ebp+out]
.text:0047D604                 push    edx
.text:0047D605                 mov     eax, [ebp+myinput]
.text:0047D608                 push    eax
.text:0047D609                 call    b64decode_40A580
.text:0047D5F7 loc_47D5F7:                             ; CODE XREF: check_47B430+21A9↑j
.text:0047D5F7                 lea     ecx, [ebp+outsz]
.text:0047D5FD                 push    ecx
.text:0047D5FE                 lea     edx, [ebp+out]
.text:0047D604                 push    edx
.text:0047D605                 mov     eax, [ebp+myinput]
.text:0047D608                 push    eax
.text:0047D609                 call    b64decode_40A580
.text:00480406 loc_480406:                             ; CODE XREF: check_47B430+4FD2↑j
.text:00480406                 mov     edx, [ebp+outsz]
.text:0048040C                 push    edx
.text:0048040D                 mov     eax, [ebp+out]
.text:00480413                 push    eax
.text:00480414                 call    check_crc32_455F80
.text:00480406 loc_480406:                             ; CODE XREF: check_47B430+4FD2↑j
.text:00480406                 mov     edx, [ebp+outsz]
.text:0048040C                 push    edx
.text:0048040D                 mov     eax, [ebp+out]
.text:00480413                 push    eax
.text:00480414                 call    check_crc32_455F80
struct Part{
    DWORD dw;
    DWORD sz;
    BYTE data[sz];
}
 
//整体结构
base64({
    Part1,Part2,Crc32
})
struct Part{
    DWORD dw;
    DWORD sz;
    BYTE data[sz];
}
 
//整体结构
base64({
    Part1,Part2,Crc32
})
.text:00482CEF loc_482CEF:                             ; CODE XREF: check_47B430+78BB↑j
.text:00482CEF                 lea     edx, [ebp+a4]
.text:00482CF5                 push    edx             ; a4
.text:00482CF6                 lea     eax, [ebp+a3]
.text:00482CFC                 push    eax             ; a3
.text:00482CFD                 mov     ecx, [ebp+outsz]
.text:00482D03                 sub     ecx, 4
.text:00482D06                 push    ecx             ; a2
.text:00482D07                 mov     edx, [ebp+out]
.text:00482D0D                 push    edx             ; a1
.text:00482D0E                 call    parse_2part_458D90
.text:00482CEF loc_482CEF:                             ; CODE XREF: check_47B430+78BB↑j
.text:00482CEF                 lea     edx, [ebp+a4]
.text:00482CF5                 push    edx             ; a4
.text:00482CF6                 lea     eax, [ebp+a3]
.text:00482CFC                 push    eax             ; a3
.text:00482CFD                 mov     ecx, [ebp+outsz]
.text:00482D03                 sub     ecx, 4
.text:00482D06                 push    ecx             ; a2

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 2
支持
分享
最新回复 (1)
雪    币: 2385
活跃值: (30681)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
感谢分享
2023-9-15 09:52
1
游客
登录 | 注册 方可回帖
返回
//