[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
慣用思維
首先呢,是個(gè)bin文件,需要用binwalk把文件提取出來。
binwalk -e [SUCTF2018\]babyre.bin
是一個(gè)xml文件,我打開后除了正常結(jié)構(gòu)就是亂碼。。。
然后就沒法分析了。。。xml不能放在ida里面分析。。
常人思維
查看一下文件類型,居然是64位的exe程序,任何東西都保持懷疑的態(tài)度。。笑死人。。。。
如下就是數(shù)據(jù)庫,可以利用這些字符進(jìn)行運(yùn)算得到一些其它的字符進(jìn)行輸出
這里的話就是利用數(shù)據(jù)區(qū)的字符進(jìn)行一系列運(yùn)算,然后進(jìn)行flag的賦值,然后接著一個(gè)函數(shù)進(jìn)行字符輸出。
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然后就會(huì)有不同的字符輸出,我們需要找到輸出flag的key,而flag字符的特征就是SUCTF,如果就這種特征,那么就進(jìn)行輸出
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!然而卻是錯(cuò)誤,看第二個(gè)函數(shù)
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);這行代碼導(dǎo)致棧溢出,然后導(dǎo)致返回地址被覆蓋,緊接著返回的時(shí)候就沒法正確返回,以至于程序過了第一個(gè)函數(shù),第二個(gè)函數(shù)結(jié)束時(shí),就自動(dòng)gg。
我一直好奇和其它博主輸入一樣,然后棧溢出導(dǎo)致返回地址覆蓋時(shí),改變后卻不一樣,嗯哼????出題人強(qiáng)行整活。。
strcpy(x, Source);這里有個(gè)全局變量x,要找這個(gè)線索,固定了前16字節(jié)字符,后面覆蓋值需要自己算,然后跳入_sub_40233D這個(gè)函數(shù)。說白了就是一個(gè)pwn題,跟re無關(guān)。
_sub_40233D這個(gè)函數(shù)是出題人自己搞的,它也不會(huì)自動(dòng)覆蓋跳,需要玩家手動(dòng)算。歐了,base64,這題目對(duì)于re玩家毫無價(jià)值,對(duì)于pwn玩家有太簡單。搞不懂re庫為啥會(huì)有這種???
輸入:Re_1s_So0_funny!,返回地址如下:
輸入:Re_1s_So0_funny!0,返回地址如下:
這個(gè)題完全沒有必要繼續(xù)研究,就是出題人強(qiáng)行整活,作為re題的話,直接沒法做;作為pwn題的話,又太無聊,總結(jié)——————湊數(shù)題(跳轉(zhuǎn)不固定,flag固定,這咋做?腦洞?)
總結(jié)
以上是生活随笔為你收集整理的[SUCTF2018]babyre [ACTF新生赛2020]fungame的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [FlareOn2]very_succe
- 下一篇: [NPUCTF2020]Baby Obf