南京邮电大学网络信息安全——软件漏洞分析与防范(实验一——栈溢出和gs保护机制)
南京邮电大学网络信息安全——软件漏洞分析与防范(实验一——栈溢出)
- 前言
- 实验环境
- 实验代码
- 实验过程
- 示例一
- 编译
- 分析程序
- 尝试payload
前言
这个实验的示例2的代码没有给出,所以暂时没有做,如果以后要做的话会补上,包括GS保护部分也是如此
实验环境
由于实验需要有Windows和Ubuntu环境,所以我这里准备了两个环境。
- Windows:Visual Studio+Win10+IDA+Ollydbg+gcc
- Ubuntu:Ubuntu 18.04+Vmware+IDA
实验代码
示例一(用于Windows环境测试)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void function2() {printf("Get Flags!");
}
void function1(char* str) {char buffer[5];strcpy(buffer, str);
}
int main(int argc, char* argv[]) {function1(argv[1]);printf("Wrong!");
}
示例2
实验过程
示例一
编译
这里我的建议是直接使用GCC编译器进行编译,我尝试过使用Visual Studio编译,但是编译效果不是很好。原因如下:
- Visual对未使用代码进行了优化,直接将Function的代码优化掉了
- GS保护是默认开启的
我尝试过将GS保护和优化选项去掉,但是并没有起到效果,为了方便起见还是直接使用GCC编译吧。GCC编译的命令如下
gcc -m32 -fno-stack-protector 源.cpp
其中参数作用为
- m32:强制gcc编译32位的可执行文件
- -fno-stack-protector:关闭GS保护机制
分析程序
打开我们的静态分析工具IDA,找到对应的function1的地址
这里尝试在不进行动态调试的情况下确认padding的大小。
通过反汇编看到的信息:
- 整个程序栈大小为0x28
- GCC编译程序将buffer局部变量分配在了EBP-0D的这个地方
- EBP下的4个字节储存返回地址(小端存放)
综合以上信息,可以画出栈的构造图
通过栈的保护机制可以知道。
padding的大小为:d+4=11H字节
所以整个payload的结构为:
按照这样的结构进行构造就可以劫持程序流程了,需要注意的有两个地方
- 像0x15这种字节是没办法通过键盘打出来的,解决办法是通过程序打印出来并进行复制。
- Function2这个地址是我自己本地编译出来的地址,不同的人可能不会一样。
尝试payload
我这里给出我自己的payload(0x21字符不在CSDN的字符集支持范围里面),不同的人有不同的答案,条条大路通罗马。
11111111111112222`0x21@
事实证明,我们的推测是正确的。
南京邮电大学网络信息安全——软件漏洞分析与防范(实验一——栈溢出和gs保护机制)相关推荐
- 南京邮电大学网络信息安全——网络数据包捕获WireShark(实验一)
南京邮电大学网络信息安全课程实验:网络数据包捕获WireShark(实验一) 系列前言 实验目标 实验环境 实验一过程记录 目标一:使用正确的姿势打开WireShark 目标二:只捕获TCP的流量包 ...
- 《0day安全-软件漏洞分析技术》实验笔记2
实验 3.4 通用shellcode 工具 Windows XP SP3 Visual C++ 6.0 OD IDA 源代码 见随书代码,参考:https://github.com/jas502n/0 ...
- 【逆向】《0day安全-软件漏洞分析技术》实验笔记2
实验 3.4 通用shellcode 工具 Windows XP SP3 Visual C++ 6.0 OD IDA 源代码 见随书代码,参考:https://github.com/jas502n/0 ...
- NCTF 南京邮电大学网络攻防训练平台 WriteUp
NCTF 南京邮电大学网络攻防训练平台 WriteUp 不说什么直接上题解 WEB 1.签到题(50) 直接查看网页源码 Flag:nctf{flag_admiaanaaaaaaaaaaa} 2.md ...
- 《漏洞战争——软件漏洞分析精要》读后感(一)
特别推荐看<漏洞战争--软件漏洞分析精要>,一定要上手实战.(感觉这也是在讲pwn的方向) 一.漏洞的定义 漏洞----1个最常见的名词,百度所得到的解释是:漏洞是在硬件.软件.协议的具体 ...
- 书评第003篇:《0day安全:软件漏洞分析技术(第2版)》
本书基本信息 丛书名:安全技术大系 作者:王清(主编),张东辉.周浩.王继刚.赵双(编著) 出版社:电子工业出版社 出版时间:2011-6-1 ISBN:9787121133961 版次:1 页数:7 ...
- 南京邮电大学网络攻防训练平台(NCTF)-异性相吸-Writeup
南京邮电大学网络攻防训练平台(NCTF)-异性相吸-Writeup 题目描述 文件下载地址 很明显,文件之间进行亦或就可得到flag,不再多说,直接上脚本 1 #coding:utf-8 2 file ...
- 0day安全:软件漏洞分析技术(第2版)
0day安全:软件漏洞分析技术(第2版) 基本信息 作者:王清 张东辉 周浩 王继刚 赵双 丛书名:安全技术大系 出版社:电子工业出版社 ISBN:9787121133961 上架时间 ...
- 机器学习:软件漏洞分析
Software Vulnerability Analysis and Discovery Using Machine-Learning and Data-Mining Techniques: A S ...
- 南京邮电大学网络攻防平台WriteUP——WEB(上)
前言 南京邮电大学网络攻防平台(http://ctf.nuptsast.com/)是一个集合了WEB.MISC.密码学.PWN.逆向的一个CTF训练平台,对于初次涉及ctf小伙伴来说是非常不错的一个训 ...
最新文章
- 【组队学习】【29期】Datawhale组队学习内容介绍
- MQTT初始篇笔记整理
- mysql主从复制原理 简书_mysql主从复制,从原理讲到安装配置,全干货
- spring aop源码实现分析
- 普211标准三维EE零基础转CS申
- 怎样取消Windows 2003 server 意外关机提示
- 【2】Docker数据卷
- Selenium爬虫 -- 图片视频的src绝对地址链接分析
- 洛谷oj刷题记录----数组篇
- 基于单片机的智能饮水机控制系统设计(毕业设计资料)
- Android 分析ANR和死锁(3)
- 0基础学Java(2)
- matlab失明的小猫,如何正确判断猫咪眼睛是否失明
- Hadoop(yarn)集群安装
- 电视显示正在接入或无法接入认证服务器,长虹网络电视无法连接服务器,怎么回事?-长虹电视接入网络障碍...
- ROS机器人开发实践 [胡春旭] 学习笔记与资料
- 【算法-面试】区间专题
- autojs注入webview
- C语言时间动态密码算法,GMT 0021-2012 动态口令密码应用技术规范.pdf
- FTP服务器的搭建与使用FTP软件进行文件上传