BUUCTF-RE-[GUET-CTF2019]re
阿新 • • 發佈:2020-08-18
查殼
用的是脫殼工具
UPX Shell 它通過命令列呼叫upx主程式,支援EXE、COM、DLL、SYS、OCX等多種檔案格式的壓縮
下載地址:http://ct.ghpym.com/dir/7369060-37024569-ee3032
找關鍵函式
搜尋字串,查交叉引用處,就能找到
有一個數組 裡面是這樣子的
_BOOL8 __fastcall sub_4009AE(char *a1) { if ( 1629056 * *a1 != 166163712 ) return 0LL; if ( 6771600 * a1[1] != 731332800 ) return 0LL; if ( 3682944 * a1[2] != 357245568 ) return 0LL; if ( 10431000 * a1[3] != 1074393000 ) return 0LL; if ( 3977328 * a1[4] != 489211344 ) return 0LL; if ( 5138336 * a1[5] != 518971936 ) return 0LL; if ( 7532250 * a1[7] != 406741500 ) return 0LL; if ( 5551632 * a1[8] != 294236496 ) return 0LL; if ( 3409728 * a1[9] != 177305856 ) return 0LL; if ( 13013670 * a1[10] != 650683500 ) return 0LL; if ( 6088797 * a1[11] != 298351053 ) return 0LL; if ( 7884663 * a1[12] != 386348487 ) return 0LL; if ( 8944053 * a1[13] != 438258597 ) return 0LL; if ( 5198490 * a1[14] != 249527520 ) return 0LL; if ( 4544518 * a1[15] != 445362764 ) return 0LL; if ( 3645600 * a1[17] != 174988800 ) return 0LL; if ( 10115280 * a1[16] != 981182160 ) return 0LL; if ( 9667504 * a1[18] != 493042704 ) return 0LL; if ( 5364450 * a1[19] != 257493600 ) return 0LL; if ( 13464540 * a1[20] != 767478780 ) return 0LL; if ( 5488432 * a1[21] != 312840624 ) return 0LL; if ( 14479500 * a1[22] != 1404511500 ) return 0LL; if ( 6451830 * a1[23] != 316139670 ) return 0LL; if ( 6252576 * a1[24] != 619005024 ) return 0LL; if ( 7763364 * a1[25] != 372641472 ) return 0LL; if ( 7327320 * a1[26] != 373693320 ) return 0LL; if ( 8741520 * a1[27] != 498266640 ) return 0LL; if ( 8871876 * a1[28] != 452465676 ) return 0LL; if ( 4086720 * a1[29] != 208422720 ) return 0LL; if ( 9374400 * a1[30] == 515592000 ) return 5759124 * a1[31] == 719890500; return 0LL; }
解題指令碼
a0 = 166163712 // 1629056 a1 = 731332800 // 6771600 a2 = 357245568 // 3682944 a3= 1074393000 // 10431000 a4= 489211344 // 3977328 a5 = 518971936 // 5138336 a6='_' a7= 406741500 // 7532250 a8= 294236496 // 5551632 a9= 177305856 // 3409728 a10= 650683500 // 13013670 a11= 298351053 // 6088797 a12= 386348487 // 7884663 a13= 438258597 // 8944053 a14= 249527520 // 5198490 a15= 445362764 // 4544518 a16= 981182160 //10115280 a17= 174988800 // 3645600 a18= 493042704 // 9667504 a19= 257493600 // 5364450 a20= 767478780 // 13464540 a21= 312840624 // 5488432 a22= 1404511500 // 14479500 a23= 316139670 // 6451830 a24= 619005024 // 6252576 a25= 372641472 // 7763364 a26= 373693320 // 7327320 a27= 498266640 // 8741520 a28= 452465676 // 8871876 a29= 208422720 // 4086720 a30= 515592000 // 9374400 a31= 719890500 // 5759124 print(chr(a0),chr(a1),chr(a2),chr(a3),chr(a4),chr(a5),a6,chr(a7),chr(a8),chr(a9),chr(a10),chr(a11),chr(a12),chr(a13),chr(a14),chr(a15),chr(a16),chr(a17),chr(a18),chr(a19),chr(a20),chr(a21),chr(a22),chr(a23),chr(a24),chr(a25),chr(a26),chr(a27),chr(a28),chr(a29),chr(a30),chr(a31))
這裡是出題失誤,缺一位a6,通過爆破得到。a6=1。
f l a g { e _ 6 5 4 2 1 1 1 0 b a 0 3 0 9 9 a 1 c 0 3 9 3 3 7 }==>f l a g { e 1 6 5 4 2 1 1 1 0 b a 0 3 0 9 9 a 1 c 0 3 9 3 3 7 }