新生赛的两道题

前几天去看了PDSCTF的两个MCU感觉还挺有意思的就做了,然后其他的几乎都没什么了.
下载了附件后打开看到1602a.build_log.htm这个东西了感觉有点奇怪啊,然后去看看内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
米Vision Build Log

Tool Versions:

IDE-Version: 米Vision V5.25.3.0
Copyright (C) 2018 ARM Ltd and ARM Germany GmbH. All rights reserved.
License Information: cxk cxk, cxk, LIC=21NXV-PBB1R-SL3CN-Y18ZN-FH8E5-588TD

Tool Versions:
Toolchain: PK51 Prof. Developers Kit Version: 9.60.7.0
Toolchain Path: C:\Keil_v5\C51\BIN
C Compiler: C51.exe V9.60.7.0
Assembler: A51.exe V8.2.7.0
Linker/Locator: BL51.exe V6.22.4.0
Library Manager: LIB51.exe V4.30.1.0
Hex Converter: OH51.exe V2.7.0.0
CPU DLL: S8051.DLL V3.125.1.0
Dialog DLL: DP51.DLL V2.69.0.0
Project:

C:\Users\KanaDE\Desktop\1602A\1602a.uvproj
Project File Date: 10/17/2025

Output:

Rebuild target 'Target 1'
assembling MAIN.a51...
linking...
Program Size: data=8.0 xdata=0 code=508
creating hex file from ".\Objects\1602a"...
".\Objects\1602a" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:01

可以很明显的看出来是个单片机.那么就直接去看附件的(其实在这里看到了License Information里面的很多鸽鸽我是绷不住的,看来KanaDE也是一个小黑子啊)hex文件了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
:0300000002 0100FA
:1001000075 817078007400310B801331309001D408
:100110007F 00EF93B4FF0122F931790F80F47980E9
:100120007B 017CDC31B879C07B017CEC31B880FE8E
:10013000C0 30C03175301B7531DDD531FDD530FA99
:10014000D0 31D03022C030C0317530097531EFD593
:1001500031 FDD530FAD031D03022C030C031C0327C
:1001600075 300275316775328CD532FDD531FAD5CF
:1001700030 F7D032D031D0302231A475A0000089C0
:1001800080 0075A080000075A000002231A475A039
:1001900040 0088800075A0C0000075A0400022319A
:1001A00079 318C227580FF75A0200075A0A000E534
:1001B00080 75A02020E7F022E931798B838C827F43
:1001C00000 EF936009F831CF318C0FBF10F322E8B4
:1001D00064 AAF8223838380801060DFFFAEEF9E96A
:1001E000FEE CD1FDC5DDF5F3C5DFF5EBD8CFF59F0E
:0C01F0009B F5E7CBD9DECFD8D78A8A8AEE
:00000001FF

(我这里是嫌麻烦了给地址后面加空格了)这里会发现一个很神奇的0xAA是显眼的,那么把前面的进行反汇编可以发现里面的内容是xor.那么去一把梭里面看看这个0xAAxor后面的内容得到的东西是啥.至于问什么是0xAA还有其他地方可以找到.就是其他文件打开之后你会发现有很多空格,这里最后的地址后面是没东西的,那么空格只能出现在最多的8A8A这里,尝试让8A和空格的ascii码异或结果还是0xAA结果正确.
现在的难点是在于提取数据.先把整段放进去确定需要的长度.然后截取下来xor0xAA就可以得到结果,至少需要的内容是在AA后面的(还有个思路就是拿flag头去xor0xAA就可以确定flag起始位置.)

1
https://cyberchef.org/#recipe=XOR(%7B'option':'Hex','string':'AA'%7D,'Standard',false)To_Hex('Space',0)&input=UERTVENG

这里可以看出来起始部分是fa ee f9 fe e9 ec那么从这后面开始提取数据找到

1
https://www.ddosi.org/code/#recipe=From_Hex('Auto')XOR(%7B'option':'Hex','string':'AA'%7D,'Standard',false)&input=RkEgRUUgRjkgRTkgRkVFQ0QxRkRDNURERjVGM0M1REZGNUVCRDhDRkY1OUY5QkY1RTdDQkQ5REVDRkQ4RDc

这个就是结果了PDSCTF{Wow_You_Are_51_Master}.


新生赛的两道题
https://boke-git-main-huang-chaos-projects.vercel.app/2025/10/26/新生赛的两道题/
作者
Ined
发布于
2025年10月26日
许可协议