picoCTF 2022 writeup (Reversing)

picoCTF 2022 の Rev 問題の Writeup.
難易度 medium のみ

unpackme

upx -d unpackme-upx -o out
        
objdump -d out -M intel
        

unpackme.py

import base64
from cryptography.fernet import Fernet



payload = b'gAAAAABkzWGSzE6VQNTzvRXOXekQeW4CY6NiRkzeImo9LuYBHAYw_hagTJLJL0c-kmNsjY33IUbU2IWlqxA3Fpp9S7RxNkiwMDZgLmRlI9-lGAEW-_i72RSDvylNR3QkpJW2JxubjLUC5VwoVgH62wxDuYu1rRD5KadwTADdABqsx2MkY6fKNTMCYY09Se6yjtRBftfTJUL-LKz2bwgXNd6O-WpbfXEMvCv3gNQ7sW4pgUnb-gDVZvrLNrug_1YFaIe3yKr0Awo0HIN3XMdZYpSE1c9P4G0sMQ=='

key_str = 'correctstaplecorrectstaplecorrec'
key_base64 = base64.b64encode(key_str.encode())
f = Fernet(key_base64)
plain = f.decrypt(payload)
print(plain.decode())
exec(plain.decode())
        

Safe Opener

patchme.py

Bbbbloat

ltrace bbbbloat
        
objdump -d bbbbloat -M intel > dumped.txt
        
mov    eax,DWORD PTR [rbp-0x40]
cmp    eax,0x86187
        

bloat.py

GDB Test Drive

ltrace gdbme
        
sleep(100000
        
gdb gdbme

(gdb) break *main+94
(gdb) run
(gdb) jump *main+104
        

Fresh Java

jadx KeygenMe.class
        

file-run1

file-run2

./run Hello!