InsecureProgramming-master——abo1
1、实验环境:
Distributor ID: Ubuntu
Description: Ubuntu 16.04.1 LTS
Release: 16.04
Codename: xenial
2、实验工具:
gdb
3、源码
首先看看abo1的源码:
/* abo1.c ** specially crafted to feed your brain by gera *//* Dumb example to let you get introduced... */int main(int argv,char **argc) {char buf[256];strcpy(buf,argc[1]);
}
为了省事,稍微修改了一下:
/* abo1.c ** specially crafted to feed your brain by gera *//* Dumb example to let you get introduced... */
#include <string.h>
#include <stdio.h>
int hacked(void)
{printf("Congratulation! You have successed!\n");return 0;
}
int main(int argv,char **argc) {char buf[12];strcpy(buf,argc[1]);printf("Keep trying!\n");return 0;
}
4、实验目的
通过构造字符串,实现栈溢出,从而执行函数hacked()。
5、编译:
二、调试
1、首先使用disas main查看汇编代码:
2、在地址0x804847b处发现函数strcpy,使用b指令设置断点:
3、输入字符串“abcdef”开始单步调试:
注意此时在0xffffcfcc处存储了main函数的返回地址0xf7e18637。
4、用c指令执行至0x804847a处
此时eax的值0xffffcfa4即为buf的栈地址。
5、继续单步执行至0x8048480处:
此时,已完成复制操作。
6、继续单步执行至0x804849b处:
此时ECX=[EBP-0x4]=0xffffcfd0。
7、运行至0x804849f处,此时esp通过ecx获取了新值,即0xffffcfcc,而0xffffcfcc处正好存放着返回地址。
8、小结
esp获得返回地址的栈地址的过程有些曲折,首先ecx=[ebp-0x4]=0xffffcfd0,然后,esp=[ecx-0x4]=0xffffcfcc,使用ecx作为了一个过渡。因此,我们需要修改[ebp-0x4]处的值,将此处的值改成我们需要跳转到的地址即可。
三、编写"shellcode"
'\x3b\x84\x04\x08'+'c'*12+'\x98\xcf\xff\xff'
InsecureProgramming-master——abo1相关推荐
- git 创建分支并合并到master 上
1 创建一个dev的分支 git branch dev 2 切换到dev 分支上 git checkout dev (创建并切换是git checkout -b 分支名) -------------- ...
- 查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试
在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. ...
- git ssh创建分支_Git(2):在gitlab中创建开发用户,以及master分支的安全管理
一.创建用户 1.创建管理gitlab的开发人员的用户 2.配置用户信息 3.将用户添加到java-daem组中 4.用户登录成功后,在用户界面为用户添加ssh认证 5.在linux主机中将maste ...
- Blender程序性纹理学习教程大师班 Creative Shrimp – Procedural Texturing Blender Master Class
标题:创意虾-程序纹理Blender大师班 信息: 什么是程序纹理? 程序纹理将简单的数学转换为无限的真实感着色器,具有无限的多样性和分辨率. 超越看起来像一团像素特写的图像纹理,运用程序纹理的力量, ...
- c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D
c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D MP4 |视频:h264,1280×720 |音频:aac,48000 Hz 语言:英语+机译中 ...
- Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020
Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264,1280×720 |音频:aac,48000 ...
- 新建本地仓库,同步远程仓场景,出现git branch --set-upstream-to=origin/master master 解决方法...
1.本地创建一个本地仓库 2.关联远程端: git remote add origin git@github.com:用户名/远程库名.git 3.同步远程仓库到本地 git pull 这个时候会报 ...
- 完全隐藏Master Page Site Actions菜单只有管理员才可以看见
1. 在Master Page Head 增加下面的Style <style type="text/css"> .ms-cui-tt { visibility:hidd ...
- SQL Server 中master..spt_values的应用
今天在做数据分析报表的时候遇到一个这样的问题. 表结构如下. 部门编码.部门名称.部门人员ID(中间用逗号分割) 我想通过和人员表链接,查询出一个新的数据集,查询出的结果集格式如下: 人员信息(ID或 ...
- ASP.NET 2.0 中配合 Master Page 使用的优化 CSS 模型
ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利.然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPage ...
最新文章
- java jsch_java使用JSCH实现SFTP文件管理
- 人脸识别数据集bin解压
- matlab碎纸拼接相似函数,基于蒙特卡洛算法构建能量函数的碎纸图片拼接方法
- windowbuilder点击按钮出现新界面_掌握这几招,轻松设计出高点击率的行为召唤按钮...
- 【渝粤教育】广东开放大学 人工智能 形成性考核 (55)
- qq登录界面句柄_别小看QQ邮箱测试,80%的测试新手都不能写出完整的测试用例~...
- c语言实现队列基本算法,【算法】队列的C语言实现
- 20210119:力扣第42周双周赛(下)
- 实现有向带权图抽象数据类型
- 分治法实现最大子数组
- linux zookeeper开机启动
- 项目日报模板_聪明的项目经理,都会利用周报让老板重视你
- 未来的人工智能和 AR/VR 会从哪些方面影响教育?有什么机会?
- AutoJS实现微信自动聊天机器人
- 物体识别全流程(Ubuntu16.04)结合ROS
- SOA 的定义 ——谢炯
- 浩辰3D软件入门教程:如何比较3D模型?
- 模仿淘宝聚划算倒计时js,兼容各种浏览器
- 简述python语言的主要领域_简述Python语言经验总结
- 嘀,你有一份1024礼物待查收!
热门文章
- 2022年度Top9的任务管理系统
- Internet security
- 华为SNS2224的Zone配置
- matlab output()函数,matlab 函数y=f(input,output)该如何实现?
- excel打不开html超链接,excel超链接打不开怎么回事 excel超链接的详细制作教程
- 如何在Oracle官网下载旧版本的JDK
- echarts 柱状图圆柱_使用echarts画柱状图
- mysql 联合主键自增,mysql联合主键自增、主键最大长度小记
- 豫科技版计算机七年级上册,一上册 信息技术
- 手把手教你做出数据可视化项目(三)3D地球旋转