看到flag{we1c0m
按tab反编译看看
看到了。flag{we1c0me_to_rev3rse!!}
IDA64打开
data = "gmbh|D1ohsbuv2bu21ot1oQb332ohUifG2stuQ[HBMBYZ2fwf2~"
result = ''
for char in data:
xor_value = (ord(char)-1)
result += chr(xor_value)
print(result.encode('utf-8').decode('unicode_escape'))
# flag{C0ngratu1at10ns0nPa221ngTheF1rstPZGALAXY1eve1}
64bit的ELF文件
根据提示,Shift+F7
去掉LOAD和.prgend连接起来的就是flag了
flag{You_ar3_g0od_at_f1nding_ELF_segments_name}
64bit ELF文件
一个encode加密和一个base64加密。
没有进行换表,直接解密就好
import base64
# 要解码的 Base64 编码文本
encoded_text = "VlxRV2t0II8kX2WPJ15fZ49nWFEnj3V8do8hYy9t"
# 使用 base64 模块进行解码
decoded_bytes = base64.b64decode(encoded_text)
# 打印解码结果
print(decoded_bytes)
得到
V\QWkt \x8f$_e\x8f’^_g\x8fgXQ’\x8fu|v\x8f!c/m
再看encode加密部分,异或0x20后+16 那就逆向一下 -16再异或0x20
data = "V\\QWkt \x8f$_e\x8f'^_g\x8fgXQ'\x8fu|v\x8f!c/m"
result = ''
for char in data:
xor_value = (ord(char)-16)^0x20
result += chr(xor_value)
print(result.encode('utf-8').decode('unicode_escape'))
# flag{D0_4ou_7now_wha7_ELF_1s?}
numbers = [1968519710, 2069379587, 1297621516, 2068854845, 1936406553]
for num in numbers:
result = num ^ 0x12345678
ascii_result = "".join([chr((result >> (i * 8)) & 0xFF) for i in range(4)])
print(ascii_result, end='')
# flag{llittl_Endian_a
用JEB打开。看MainActivity;按TAB反编译一下
这里慢慢分析一共3处关键信息,第一是s异或s1 第二处就是s和s1了。写个exp
enc = ['\u000E', '\r', '\u0011', '\u0017', '\u0002', 'K', 'I', '7', ' ', '\u001E', '\u0014', 'I', '\n', '\u0002', '\f',
'>', '(', '@', '\u000B', '\'', 'K', 'Y', '\u0019', 'A', '\r']
enc1 = 'happyx3'
flag = []
for i in range(len(enc)):
flag.append(chr(ord(enc[i]) ^ ord(enc1[i % 7])))
print("".join(flag))
# flag{3z_And0r1d_X0r_x1x1}
打开来查壳发现,看不到什么信息,diagnose处看的到57 5A应该是pe文件损坏了
用十六进制编辑器WinHex打开看看
简单修改一下,WZ改成PE文件标识 MZ 后面第四行的90改成80 因为这里的文件偏移要指向PE起始处
再次用exeinfope打开就发现可以看到信息了
data = [0x0A, 0x0C, 0x04, 0x1F, 0x26, 0x6C, 0x43, 0x2D, 0x3C, 0x0C,
0x54, 0x4C, 0x24, 0x25, 0x11, 0x06, 0x05, 0x3A, 0x7C, 0x51,
0x38, 0x1A, 0x03, 0x0D, 0x01, 0x36, 0x1F, 0x12, 0x26, 0x04,
0x68, 0x5D, 0x3F, 0x2D, 0x37, 0x2A, 0x7D]
flag = []
for i in range(35, -1, -1):
data[i] = data[i + 1] ^ data[i] ^ i
for i in range(len(data)):
flag.append(chr(data[i]))
print("".join(flag))
# flag{Y0u_kn0w_what_1s_PE_File_F0rmat}
还是JEB打开
这一题用模拟器打开就是点击10000次就给flag,可以尝试找找flag在哪
最后在Resources里找,先找layout再跟进到layout_2
找到了。提交。