前几天去看了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}.