首页 > 其他分享 >[FlareOn4]IgniteMe

[FlareOn4]IgniteMe

时间:2024-07-16 10:44:41浏览次数:14  
标签:0000 text IgniteMe FlareOn4 flag v4 0x45 ax

无壳,32位

先进入ida,可以看到start函数,重要的就是4010F0()和if判断里的401050()

image-20240716085021969

先进入4010F0

image-20240716092403970

其中的一个函数,表示的是获取字符串长度(遇到null字符就返回i)

image-20240716092631373

后面就是将字符写入byte_403078这个数组

接下来看401050(),可以看到获取长度后,执行了一个401000,然后让数组从末尾开始和v4异或并存入目标数组,然后再让这一个字符和前一个字符异或,都存入目标数组,最后进行字符串相符判断。

image-20240716093155495

我们来看一下这个401000,直接看函数太看明白是什么,直接看汇编

image-20240716093447093

xor ax,dx就是将这个eax的值后16位都变成0

rol eax,4将eax的值循环左移4位

shr ax,1将ax算数右移一位(在二进制中这个操作就是除以2),保留符号

所以ax中的值变成了0000 0000 0000 0100 (4)

所以这个函数的返回值就是4

然后就可以写EXP了

text = [0x0D, 0x26, 0x49, 0x45, 0x2A, 0x17, 0x78, 0x44, 0x2B, 0x6C, 0x5D, 0x5E, 0x45, 0x12, 0x2F, 0x17, 0x2B, 0x44,
        0x6F, 0x6E, 0x56, 0x9, 0x5F, 0x45, 0x47, 0x73, 0x26, 0xA, 0xD, 0x13, 0x17, 0x48, 0x42, 0x1, 0x40, 0x4D, 0xC,
        0x2, 0x69][::-1]
flag = ''
v4 = 0x4
for i in range(len(text)):
    flag += chr(text[i] ^ v4)
    v4 = ord(flag[i])
print('flag{'+flag[::-1]+'}')

得到结果flag{[email protected]}

标签:0000,text,IgniteMe,FlareOn4,flag,v4,0x45,ax
From: https://www.cnblogs.com/yee-l/p/18304682

相关文章

  • [FlareOn4]login 1
    查壳(养成习惯了,不管有没有用都要来那么一下):发现没啥,进IDA瞅瞅:给了一堆字串,且没有主函数,那么我们退出IDA,运行一下:checkflag,那么必定有方法去检查这玩意:继续找F12:<!DOCTYPEHtml/><html><head><title>FLAREOn2017</title></head><body>......
  • buuoj-[FlareOn4]IgniteMe
    1.32bit无壳2.找到函数start,看着很乱,其实都点开看看很简单的3.加密函数倒着往前异或第一个v4是这个:v4=sub_401000();点进去:逻辑左移4次之后,向右移动一位算不出......