[SUCTF2018]babyre [ACTF新生赛2020]fungame
文章目錄
- [SUCTF2018]babyre
- 慣用思維
- 常人思維
- GAMEOVER
- [ACTF新生賽2020]fungame
- int __cdecl sub_401340(int a1)
- int __cdecl sub_4013BA(char *Source)
[SUCTF2018]babyre
慣用思維
首先呢,是個bin文件,需要用binwalk把文件提取出來。
binwalk -e [SUCTF2018\]babyre.bin
是一個xml文件,我打開后除了正常結構就是亂碼。。。
然后就沒法分析了。。。xml不能放在ida里面分析。。
常人思維
查看一下文件類型,居然是64位的exe程序,任何東西都保持懷疑的態度。。笑死人。。。。
如下就是數據庫,可以利用這些字符進行運算得到一些其它的字符進行輸出
這里的話就是利用數據區的字符進行一系列運算,然后進行flag的賦值,然后接著一個函數進行字符輸出。
while ( v9[30] ){--v9[30];for ( j = 22; j; v9[j] |= v13 << v9[30] ){v12 = v7[22 * v9[30] + --j];v13 = (v12 >> ((v10[0] >> (2 * v9[30])) & 3)) & 1;}}輸入不同的key然后就會有不同的字符輸出,我們需要找到輸出flag的key,而flag字符的特征就是SUCTF,如果就這種特征,那么就進行輸出
if (flag[0] == 'S' && flag[1] == 'U' && flag[2] == 'C' && flag[3] == 'T' && flag[4] == 'F'){for (int i = 0; i < 22; i++)printf("%c", flag[i]);system("pause");}GAMEOVER
SUCTF{Flag_8i7244980f}[ACTF新生賽2020]fungame
int __cdecl sub_401340(int a1)
flag=[None]*16 b="" y1=[0x23, 0x61, 0x3E, 0x69, 0x54, 0x41, 0x18, 0x4D, 0x6E, 0x3B, 0x65, 0x53, 0x30, 0x79, 0x45, 0x5B ] y2=[0x71, 0x04, 0x61, 0x58, 0x27, 0x1E, 0x4B, 0x22, 0x5E, 0x64, 0x03, 0x26, 0x5E, 0x17, 0x3C, 0x7A ] for i in range(len(y1)):a=hex(y2[i]^y1[i])b+=chr(y2[i]^y1[i])flag[i]=a print(b) Re_1s_So0_funny!然而卻是錯誤,看第二個函數
int __cdecl sub_4013BA(char *Source)
int __cdecl sub_4013BA(char *Source) {char Destination[12]; // [esp+1Ch] [ebp-Ch] BYREFstrcpy(Destination, Source);strcpy(x, Source);return 0; } strcpy(Destination, Source);這行代碼導致棧溢出,然后導致返回地址被覆蓋,緊接著返回的時候就沒法正確返回,以至于程序過了第一個函數,第二個函數結束時,就自動gg。
我一直好奇和其它博主輸入一樣,然后棧溢出導致返回地址覆蓋時,改變后卻不一樣,嗯哼????出題人強行整活。。
strcpy(x, Source);這里有個全局變量x,要找這個線索,固定了前16字節字符,后面覆蓋值需要自己算,然后跳入_sub_40233D這個函數。說白了就是一個pwn題,跟re無關。
_sub_40233D這個函數是出題人自己搞的,它也不會自動覆蓋跳,需要玩家手動算。歐了,base64,這題目對于re玩家毫無價值,對于pwn玩家有太簡單。搞不懂re庫為啥會有這種???
輸入:Re_1s_So0_funny!,返回地址如下:
輸入:Re_1s_So0_funny!0,返回地址如下:
這個題完全沒有必要繼續研究,就是出題人強行整活,作為re題的話,直接沒法做;作為pwn題的話,又太無聊,總結——————湊數題(跳轉不固定,flag固定,這咋做?腦洞?)
總結
以上是生活随笔為你收集整理的[SUCTF2018]babyre [ACTF新生赛2020]fungame的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [FlareOn2]very_succe
- 下一篇: [NPUCTF2020]Baby Obf