逆向_no-strings-attached

在linux中执行程序,提示段错误。

静态分析:

ida打开文件。找到main函数。

在调试时,发现在authenticate()会卡住无法执行。

说明程序在authenticate()中存在错误。

扫描二维码关注公众号,回复: 11057932 查看本文章

进入authenticate()函数内部。发现了个加密函数decrypt()。

传入了s2和dword_8048A90。

内部的逻辑是将传入这个函数的第一个数组减去第二个数组的值。

查看s和dword_8048A90处的值。

shift+e整合下来。编写代码。

s = [0x143A, 0x1436, 0x1437, 0x143B,
     0x1480, 0x147A, 0x1471, 0x1478,
     0x1463, 0x1466, 0x1473, 0x1467,
     0x1462, 0x1465, 0x1473, 0x1460,
     0x146B, 0x1471, 0x1478, 0x146A,
     0x1473, 0x1470, 0x1464, 0x1478,
     0x146E, 0x1470, 0x1470, 0x1464,
     0x1470, 0x1464, 0x146E, 0x147B,
     0x1476, 0x1478, 0x146A, 0x1473,
     0x147B, 0x1480]
"""
3A 14 00 00 36 14 00 00 37 14 00 00 3B 14 00 00 
80 14 00 00 7A 14 00 00 71 14 00 00 78 14 00 00 
63 14 00 00 66 14 00 00 73 14 00 00 67 14 00 00 
62 14 00 00 65 14 00 00 73 14 00 00 60 14 00 00 
6B 14 00 00 71 14 00 00 78 14 00 00 6A 14 00 00 
73 14 00 00 70 14 00 00 64 14 00 00 78 14 00 00 
6E 14 00 00 70 14 00 00 70 14 00 00 64 14 00 00 
70 14 00 00 64 14 00 00 6E 14 00 00 7B 14 00 00 
76 14 00 00 78 14 00 00 6A 14 00 00 73 14 00 00 
7B 14 00 00 80 14
"""
a = [0x1401, 0x1402, 0x1403, 0x1404, 0x1405]
v6 = len(s)
v7 = len(a)

l = 0
for i in range(v6):
    if l >= v7:
        l = 0
    s[i] -= a[l]
    l += 1

for i in s:
    print(chr(i), end='')
View Code

动态调试:

F7进入authenticate()函数中,F8步过decrypt。双击下方的eax便可以看到flag。

猜你喜欢

转载自www.cnblogs.com/TNTBomb/p/12757834.html