20145318《网络对抗》注入shellcode及Return-to-libc

20145318《网络对抗》注入shellcode及Return-to-libc

注入shellcode

知识点

  • 注入shellcodeShellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。漏洞利用中最关键的是Shellcode的编写。

实践过程

  • 写一段shellcode,保存为20145318shellcode.c
  • 安装execstack

  • 设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上可以执行

  • 关闭地址随机化

  • 用more /proc/sys/kernel/randomize_va_space来查询地址随机化是开启状态还是关闭状态,`2`表示开启,`0`表示关闭。
  • 采取nop+shellcode+retaddr方式构造payload(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)

  • 注入攻击buf

  • 再打开一个终端,用GDB调试5318pwn进程,找到进程号2906

  • 启动gdb调试进程,设置断点,查看注入buf的内存地址

  • 设置断点后,在另一个终端按下回车,并寻找返回地址,看到01020304表示返回地址的位置,shellcode就紧挨着这个地址,加四字节为其地址

  • 退出gdb,按anything+retaddr+nops+shellcode修改input_shellcode如下

  • 成功

Return-to-libc攻击

  • sudo apt-get update

  • sudo apt-get install lib32z1 libc6-dev-i386

  • 进入32位linux环境,并使用bash

  • 关闭地址空间随机化

  • 使用另一个shell程序(zsh)代替/bin/bash,设置zsh程序

  • 在编译时手动设置栈不可执
  • 编写retlib.c

  • 编译程序,并设置SET-UID

  • 需要用到一个读取环境变量的程序:getenvaddr.c

  • 编译

  • 编写exploit.c

  • 用刚才的getenvaddr程序获得BIN_SH地址

  • gdb获得systemexit地址
  • 编译

  • gdb,得到system和exit的地址

  • 修改exploit.c文件,填上刚才找到的内存地址

  • 删除刚才调试编译的exploit程序和badfile文件,重新编译修改后的exploit.c

  • 先运行攻击程序exploit,生成了badfile文件,再运行漏洞程序retlib,可见攻击成功,获得了root权限

时间: 2024-10-10 08:06:13

20145318《网络对抗》注入shellcode及Return-to-libc的相关文章

20145318《网络对抗》MSF基础应用

20145318 <网络对抗> MSF基础应用 实验内容 掌握metasploit的基本应用方式,掌握常用的三种攻击方式的思路.具体需要完成(1)一个主动攻击,如ms08_067;(2)一个针对浏览器的攻击,如ms11_050:(3)一个针对客户端的攻击,如Adobe(4)成功应用任何一个辅助模块 基础问题回答 exploit:通过漏洞对程序攻击的途径,是一种手段或通道. payload:具体的攻击代码 encode:伪装.隐藏 实践过程 主动攻击:ms08_067 针对浏览器:ms11_05

20145318 《网络对抗》 信息搜集与漏洞扫描

20145318 <网络对抗> 信息搜集与漏洞扫描 实验内容 本实践的目标是掌握信息搜集的最基础技能.具体有(1)各种搜索技巧的应用(2)DNS IP注册信息的查询 (3)基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点(4)漏洞扫描:会扫,会看报告,会查漏洞说明,会修补漏洞 基础问题回答 (1)哪些组织负责DNS,IP的管理. ICANN统一管理全球根服务器 在ICANN下有三个支持机构 地址支持组织(ASO)负责IP地址系统的管理 域名支持组织(DNSO)负责互联网上

20145211 《网络对抗》Exp8 Web基础

20145211 <网络对抗>Exp8 Web基础 本实践的具体要求有: (1).Web前端HTML(1分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2).Web前端javascipt(1分) 理解JavaScript的基本功能,理解DOM.编写JavaScript验证用户名.密码的规则. (3).Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表(1分) (4).Web后端:编写PHP网

# 2017-2018-2 20155319 『网络对抗技术』Exp8:Web基础

2017-2018-2 20155319 『网络对抗技术』Exp8:Web基础 一.原理与实践说明 1.实践具体要求 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2).Web前端javascipt(0.5分) 理解JavaScript的基本功能,理解DOM.编写JavaScript验证用户名.密码的规则. (3).Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密

2018-2019 20165208 网络对抗 Exp8 Web基础

目录 2018-2019 20165208 网络对抗 Exp8 Web基础 实验内容 基础问题回答 实践过程记录 1. Apache准备 2. Web前端HTML 3. Web前端javascipt 4. Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表 5. Web后端:编写PHP网页,连接数据库,进行用户认证 6. SQL注入 7. XSS攻击测试 实验中遇到的问题 实验感想 2018-2019 20165208 网络对抗 Exp8 Web基础 实验内容

2018-2019-2 网络对抗技术 20165237 Exp8 Web基础

2018-2019-2 网络对抗技术 20165237 Exp8 Web基础 实验目标 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. (2).Web前端javascipt(0.5分) 理解JavaScript的基本功能,理解DOM.编写JavaScript验证用户名.密码的规则. (3).Web后端:MySQL基础:正常安装.启动MySQL,建库.创建用户.修改密码.建表(0.5分) (4).

20145321 《网络对抗》 Web基础

20145321 <网络对抗> Web基础 基础问题回答 (1)什么是表单 表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签--这里面包含了处理表单数据所用CGI程序的URL以及数据提交到服务器的方法:表单域--包含了文本框.密码框.隐藏域.多行文本框.复选框.单选框.下拉选择框和文件上传框等:表单按钮:包括提交按钮.复位按钮和一般按钮. (2)浏览器可以解析运行什么语言. HTML语言.XML语言.脚本语言(Java.PHP.Script.JavaScript-) (3

20145331魏澍琛《网络对抗》Exp8 Web基础

20145331魏澍琛<网络对抗>Exp8 Web基础 实践内容: 1.简单的web前端页面(HTML.CSS等) 2.简单的web后台数据处理(PHP) 3.Mysql数据库 4.一个简单的web登陆页面例子 5.SQL注入.XSS攻击 Web前端:HTML基础 1.先将apache的端口号设为80(上节已经设置好了),接着结束掉占用80端口的进程,再启动apache. 2.在/var/www/html目录下创建20145331wsc.html文件,即前端文件. 附:检查第一步是否成功只需在

20145311 王亦徐 《网络对抗技术》 Web基础

20145311 王亦徐 <网络对抗技术> Web基础 实验内容 简单的web前端页面(HTML.CSS等) 简单的web后台数据处理(PHP) Mysql数据库 一个简单的web登陆页面例子 SQL注入.XSS攻击 基础问题回答 (1)什么是表单 表单我觉得主要是用来在网页中采集数据用的,提供了填写数据.选择数据,收集数据并提交给后台的功能,包括很多种表单元素,例如文本框.下拉框.单选复选框等 百度上说一个表单有三个基本组成部分:表单标签(form).表单域(填写数据).表单按钮(提交) (