Attacklab实验

article/2025/8/28 20:51:00

一、实验目的

1、深入了解缓冲区溢出的隐患,了解如何利用缓冲区溢出这个漏洞对现有程序进行控制流劫持、执行非法程序代码,从而造成对程序进行攻击以及破坏的过程;

2、增强对程序机器级表示、汇编语言、调试器和逆向工程等理解。

二、实验内容

对目标程序实施缓冲区溢出攻击,通过造成缓冲区溢出来破坏目标程序的栈帧结构,继而执行一些原来程序中没有的行为。

本实验共完成以下2个实验小题:level1和level2。

1、准备工作

在所发目录中,一共3个和本实验相关的文件:

ctarget 代码注入攻击的目标文件

hex2row 将16进制数转化为攻击字符,因为有些字符在屏幕上面无法输入,所以输入该字符的16进制数,自动转化为该字符

cookie.txt 一个8为16进行数,作为攻击的特殊标志符(level2使用)

其中,ctarget为所要分析处理的文件。其中包含3个函数:getbuf( )和touch1、touch2。可用objdump工具反汇编查看其代码,并存入文件中方便查看。命令为:

objdump  -d  ctarget  > ctarget.txt

2、level1的内容和要求

ctarget 的正常流程如下:

其中getbuf( )函数定义为:

Gets(  )的功能是输入字符串到buf中,但没有检查字符串的长度是否在BUFFER_SIZE内。本题要求通过适当的输入,利用getbuf( )的漏洞使程序在test函数中重新定向到touch1函数。touch1函数定义如下:

3、level2的内容和要求

同level1的整体流程,即在getbuf中输入字符,拦截程序流,跳转到调用touch2函数。touch2函数定义如下:

 

这段程序验证传进来的参数val是否和cookie中值相等。本程序需要做的是在输入字符串中注入一小段代码,代码传入val参数到%rdi,其中val是和cookie一样的值,然后正确跳转到touch2。

三、实验工具和环境

软件工具:gdb调试器和objdump;

实验语言:C语言,AT&T汇编语言

实验环境: linux 

四、过程分析

Level 1

1.用objdump工具反汇编查看其代码,并存入文件中方便查看。命令为:

objdump  -d  ctarget  > ctarget.txt

2. 利用gdb 调试ctarget找到我们需要的信息

3. 反汇编getbuf函数,找到实际在栈上分配了多少字节

从第一行sub $0x28, %rsp中显示,在栈上为buf提供了0x28也就是40个字节的空间

4. 反汇编touch1函数,找到touch1函数的起始地址

从第一行中看出,touch1的返回地址是0x0000000000401934

以上,我们已经到了我们需要的所有关键信息,现在构建我们输入字符,首先填充栈,可以使用任意字符,这里创建了一个文件输入16进制的0x00填充,然后填充touch1地址(通过在getbuf阶段输入特定的字符串,拦截程序流,跳转到touch1)。注意字节序的问题,大部分电脑应该都是little-endian字节序,即低位在低地址,高位在高地址。

 

5.使用如下命令进行结果验证:

cat 2009100031.l1 | ./hex2raw | ./ctarget -q

(hex2row 16进制数转化为攻击字符,因为有些字符在屏幕上面无法输入,所以输入该字符的16进制数,自动转化为该字符; |   管道符号)

Level 2

1.查看touch2函数

这段程序就是验证传进来的参数val是否和cookie中值相等。本文中我的cookie值为:0x3952370c

2.建立inject.s文档,输入注入代码(第一个立即数是我的cookie,第二个是touch2的地址)

3. 利用gccobjdump命令得到机器代码:

可以得到这三条指令序列如下:

48 c7 c7 0c 37 52 39 68 60 19 40 00 c3

4. 接下来就是寻找%rsp的地址,利用gdb进行调试,获取我们需要的信息:

地址为0x55650e08

如上所示,我们获取到了%rsp的地址,结合上文所讲,可以构造出如下字符串,在栈的开始位置为注入代码的指令序列,然后填充满至40个字节,在接下来的8个字节,也就是原来的返回地址,填充成注入代码的起始地址,也就是%rsp的地址,可以得到如下字符串:

5.验证通过


http://chatgpt.dhexx.cn/article/iMRnDNVk.shtml

相关文章

计算机系统基础实验-LinkLab实验

这是大三时的实验课,很久以前的东西,应要求放出来,做的不是很好。linux永远都是很重要的,希望我和大家都记得这个。实际上做到第五阶段我就不会了。 实验课程名称:计算机系统基础 实验项目名称:LinkLab实…

Lab5实验分享

文章目录 一.全局变量名词解释二.实验难点图示1.文件系统层次关系梳理2.多级目录与多级索引 三.代码梳理1.磁盘管理2.文件系统3.用户接口4.文件服务 一.全局变量名词解释 #define NBLOCK 1024 //一块磁盘里面的block数目 uint32_t nbitblock; // 用于存储bitmap的block数目 ui…

实验.......

第一步配置ip与环回地址 做hub&spoken的fullmesh结构以r2为例 其他路由同样操作 要求使用rip协议,以r2为例

实验吧——WEB-认真一点!

认真一点! 打开链接,看到这个页面,第一反应又是sql注入 翻翻源码没有任何提示 打开burp开始抓包,包头与返回头又没有任何提示,试着开始修改ID 的值,观察页面变化。 提交1或用语句让框内为真,显…

实验....

实验要求 r1代表运营商 r1远程登录r2实际登陆r9 r3访问r7的换回地址走r5 全网可达 1.全网可达 配置ip 2配置rip协议,r8r9用v1其余用v2 3让r8r9接入内网,在r8对端接口写入v2 r3访问r7的换回地址走r5 r1代表运营商 r1远程登录r2实际登陆r9 先打开r…

实验吧 认真一点!

真的很久很久没碰过这个玩意了,真是不会了,而且这个题目本身就不是很容易,搞得我也是满肚子邪火,很气。这个题目主要难在它吧过滤和ban结合到了一起了。我们还是先看题目,首先拿到题目看到输入id0和输入id1结果不一样,…

让我进去-实验吧

这题做的真的是久,莓办法,太菜了 进去看见cookie有个source值很奇怪,把他改成1试一下就收到这段代码 $flag "XXXXXXXXXXXXXXXXXXXXXXX"; $secret "XXXXXXXXXXXXXXX"; // This secret is 15 characters long for secu…

实验吧

1.变异凯撒 把flag转化为ascii码,加密密文转化为ascii码, 因为是凯撒加密,所以思考移动的位数,分别是加了5,6,7,8.。。。 所以移动的位次是从5递加 得到结果 ascii码值转化,得到flag…

[大学物理实验-5]波尔共振实验

[大学物理实验-5]波尔共振实验 前言实验预习(Preview)实验报告(Report)实验报告(Report)总结(Sum up) 前言 最近在整理一些学过的课程的资料,有一些课虽然和我的专业毫无…

实验一-Bomblab(炸弹实验)

实验概述:该实验就是通过分析汇编代码,并使用GDB调试,找到每一题的通关钥匙 第一关:(key“He is evil and fits easily into most overhead storage bins.”) 简单解析:比…

实验.........

首先配置ip地址和环回地址 以r1为例 先用ospf联通r2r3r4r5r6r7 以r2为例 r1启bgp与r2建邻 r2r3r4r5r6r7同理建邻居 这里以r2为例 r7r8建邻方法同r1r2 优化在r2上

实验........

实验....... 先配置ip地址以r2为例 然后配置rip同样以r2为例 启用bgp建立对等体,需要书写as号 以r1与r3为例 建立ebgp 以r3r4为例 r3 r4 建立换回,以环回为对等提

shlab实验

计算机系统原理实验报告 一、实验目的及内容 1. 实验目的:通过编写完善一个支持作业控制的简单 Unix 外壳 Shell 程序(tsh), 掌握 shell 的基本功能原理和实现方法;掌握 Unix 进程控制、特别是信号的应用, 包括信号产生和信号…

Lab2实验分享

文章目录 一.TLB访存机制二.二级页表三.Page存储结构四.自映射机制图示五.页面与地址的转化六.部分实验代码详解 一.TLB访存机制 当一个虚拟地址被送到MMU中进行翻译的时候,硬件首先在TLB中寻找包含这个地址的页面,如果它的虚页号在TLB中,并…

实验吧(1)

实验吧真是一个神奇的地方,里面的东西表示全部都看不懂,emmmmm ,加油!好好学习! 案例:忘记密码了! 在实验吧里面打开解题链接,然后就会跳转到一个输入密码的页面,当然你…

实验吧 认真一点

本实验是输入id获取结果,查看页面源码,没有什么注释信息。随便输入个1,结果为You are in ...............,其他的id显示为You are not in ............... 使用Burp suite进行模糊测试,结果为or部分sql命令都可以使用。…

实验吧_网站综合渗透_Discuz!

前言 这个一个实验吧中的环境,分值为50分,下面是题目说明。诶,发现自己很菜。 实验吧_网站综合渗透_dedecms解析地址 需要的学会或者已经掌握的知识 已知cms版本在线搜索通用漏洞掌握菜刀或者类似的工具的使用其他 题目说明 你是国内一流安…

实验吧-简单的登录题——WriteUp再研究

前言 这个题目的难点就是在于对于CBC加密方式尤其是解密这部分要琢磨一番,让我想起当年大学的时候信安三勇中的两勇的课,一门密码学,一门数学基础,可怕之极。这个题网上writeup一大堆,但是在一些方面解释的不是很详细…

实验吧-简单的登录题

前言 这是在实验吧上面的一道web题。主要考察cbc字节反转攻击。 分析 题目开始就是输入id去登录 首先想到的就是sql注入了,输入1后页面显示Hello,重新载入的话页面返回报错信息 确实存在注入,看那后面的逗号,猜测注入点在limit后面。然后试了很多,发现题目把union,#…

前端框架是什么意思?

说起前端框架,很多人都不知道是什么意思,下面本篇文章就来给大家介绍一下前端框架是什么意思?希望对大家有所帮助。 前端框架是什么意思? 前端框架一般指用于简化网页设计的框架,使用广泛的前端开发套件,比…