1.首先運行一下該程序
2.我們權限不夠於是去修改一下權限(改前,改后) (當然,這步有可能是不需要的)
3.改后我們重新運行一下(123是輸入的語句)
4.拖進IDA,查看字符串,此處應該就是得到flag的地方
5.之后我們查看main函數,並沒有我們剛才所看見的那句話
6.而在get_shell函數中我們看到了
7.我們不難發現是這是一個棧的溢出后將程序返回到這個地方我們就可以得到最終的flag,而get_shell函數的起始點為400751,(然而wjc同志逼迫我用GDB)
8.查看這個程序是否有棧的保護,(並沒有)
9.用gdb打開這個文件,並讓程序來到輸入的地方
10.打開一個新的終端來生成100個字符
11.將這100個字符輸入到程序中,使棧溢出
12.之后我向上翻,找到了get_shell函數的位置
13.之后寫那個shellcode還太菜不會寫,不過我找了另一個方法,首先我們看那個STACK棧的區域,第一條是oaaa…,而我們輸入進去的100個字符每四個為一組,這這個棧目前保存了11組,即44個字符,也就是說另外56個字符是填滿了ret后面的區域,之后我們便能寫出解題的答案了,首先將56個字符填入,之后將將這個get_shell函數的地址輸入進去即可