首先這題有挺多做法的替梨,先從簡單的說起吧钓试,逆向做法,直接上腳本
key = "Do_you_know_why_my_teammate_Orange_is_so_angry???"
cipher = [7, 59, 25, 2, 11, 16, 61, 30, 9, 8, 18, 45, 40, 89, 10, 0, 30, 22, 0, 4, 85, 22, 8, 31, 7, 1, 9, 0, 126, 28, 62, 10, 30, 11, 107, 4, 66, 60, 44, 91, 49, 85, 2, 30, 33, 16, 76, 30, 66]
i=0
flag=""
while(i<len(key)):
c=ord(key[i])^cipher[i]
flag+=chr(c)
i+=1
print flag
第二種常見的pwn做法装黑,gdb調(diào)試找password,然后輸入magic
image.png
首先下斷點(diǎn)下到輸入magic之前(即0x8048712)弓熏,由gdb分析可知恋谭,ebp-0x80存放的是password,ebp-0x7c存放的是輸入的magic挽鞠,那么我們可以在輸入magic之前查看password的值箕别,并輸入同樣的數(shù)給magic
image.png
這里看到password的值是1011303426,于是我們輸入這個(gè)數(shù)
image.png
第三種做法也是看網(wǎng)上wp的滞谢,就是把程序跳轉(zhuǎn)的命令給nop掉串稀,讓程序始終執(zhí)行輸出flag,不過對(duì)于一般的pwn題狮杨,這種解法并沒有用母截,這里也只是熟練一下ida的功能
image.png
把上面這個(gè)代碼nop掉
image.png
image.png
最后變成這樣就行了
image.png
運(yùn)行一下,效果如圖
image.png