本关信息

伏地魔吧自己分裂的灵魂藏在了7哥魂器中…这个描述666。本关要求我们找到所有的魂器然后ROP似乎就可以拿flag了。本关没有给源码,上IDA分析吧。本地运行前安装32位libseccomp库,apt-get install libseccomp-dev:i386

init初始化abcdefg7个int值,保存在bss段,并计算sum。abcdefg的值生成时使用随机数做为种子再调用rand函数生成,因此随机不可预测。

ropme函数输入abcdefg的值,就可以调用相应的打印函数。gets函数输入sum的值就可以进入输出flag的流程。由于gets存在栈溢出,因此可以劫持返回地址。

利用思路很简单,劫持返回地址跳转输出abcdefg的值,就可以计算sum,之后把sum转化成字符串后输入给atoi即可。

注意有几个坑点:

  • gets函数遇到a newline character比如\x0a就会截断(遇到\x00 \t不会截断,gets可以读入),ropme函数起始地址是0x080A0009,不能直接跳转到ropme函数中执行代码。可以直接跳到ABCDEFG函数里面获取abcdefg的值。
  • atoi函数将int转化为字符串,如果数字超过int范围转化失败返回-1。

此外,由于0xa不能输入,find查看了stack中是有0x080a的值的,如果栈溢出溢出低位几个字节为打印flag的低位,再rop到该处应该也可以直接读flag。

exp

【pwnable.kr】horcruxes - 伏地魔的7个魂器 gets栈溢出 截断 atoi转化相关推荐

  1. PWN horcruxes [pwnable.kr]CTF writeup题解系列15

    题目内容: 先连接上去看看题目文件,看起来已经说了是一道rop的题目 root@mypwn:/ctf/work/pwnable.kr# ssh horcruxes@pwnable.kr -p2222 ...

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

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

  3. pwnable.kr lotto题解

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

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

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

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

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

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

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

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

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

  8. 【pwnable.kr】passcode

    pwnable从入门到放弃,第六题. ssh passcode@pwnable.kr -p2222 (pw:guest) 完全是'&'的锅. #include <stdio.h> ...

  9. pwnable.kr passcode

    题目来自pwnable.kr 里面的思路是通过学习别人的文章获得的,作为个人的学习记录一下 题目是这样的 passcode SSH连接一下 看看有什么文件 可以看到有三个文件,其中 flag 只对创建 ...

  10. pwnable kr 之 passcode

    http://pwnable.kr/playproc.php?no=18 首先,需要对got表的一个基础认识 这里对got表和plt表进行一个简单的介绍 https://blog.csdn.net/q ...

最新文章

  1. 网络信息安全之防火墙技术(一)
  2. (5.1.5)引擎管理——多服务器管理之中央管理服务器(CMS)
  3. 算法导论之用于不相交集合的数据结构
  4. java最长公共子序列_技术分享 | 最长公共子序列在比对工具的应用
  5. mac 怎么创建php文件夹权限设置密码,Mac文件权限管理(shell命令)
  6. 【面试题】 迅雷2014校园招聘笔试题
  7. 这本零差评且有趣的Python算法书有点火~
  8. vim-录制命令的使用
  9. 自定义自己的博客园博客首页
  10. 字符集及其存储方式(解决乱码问题)
  11. 在linux中安装字体
  12. 【Opencontrail】opencontrail对接k8s
  13. androidnbsp;网络联接nbsp;CMWAPnbsp;CTWAP
  14. Python茅台抢购脚本详细教程
  15. linux注销登录用户
  16. LeetCode 831. Masking Personal Information【字符串,正则表达式】中等
  17. 云服务器上部署仿牛客网项目
  18. Kitty用HTML和css咋做,使用 CSS3 绘制 Hello Kitty
  19. jQuery——遍历
  20. 将英文kali改成中文kali

热门文章

  1. 自学编程需要注意什么? 1
  2. 游戏服务端框架之配置与玩家数据库设计
  3. 典型IO模型----阻塞IO,非阻塞IO,信号驱动IO,异步IO
  4. 怎么查二手苹果手机价格
  5. 四轴mpu6050姿态角卡尔曼滤波代码分析
  6. 51c语言延时程序怎么编写,C51中延时程序的编写
  7. 单片机c语言延迟子程序,单片机通用延时子程序
  8. windows无法格式化u盘_U 盘格式化提示 windows 无法完成格式化的解决办法
  9. spring quartz 实现全局任务
  10. “时间的朋友”2017跨年演讲全回顾