一、实验说明

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相关推荐

  1. git 创建分支并合并到master 上

    1 创建一个dev的分支 git branch dev 2 切换到dev 分支上 git checkout dev (创建并切换是git checkout -b 分支名) -------------- ...

  2. 查询Master下的系统表和系统视图获取数据库的信息和简单的渗透测试

    在SQL中可以通过查询Master下的系统表(sys)和系统视图(information_schema)获取数据库的信息.SQL2000和SQL2005的结构略有不同. 系统表结构参考系统表详细说明. ...

  3. git ssh创建分支_Git(2):在gitlab中创建开发用户,以及master分支的安全管理

    一.创建用户 1.创建管理gitlab的开发人员的用户 2.配置用户信息 3.将用户添加到java-daem组中 4.用户登录成功后,在用户界面为用户添加ssh认证 5.在linux主机中将maste ...

  4. Blender程序性纹理学习教程大师班 Creative Shrimp – Procedural Texturing Blender Master Class

    标题:创意虾-程序纹理Blender大师班 信息: 什么是程序纹理? 程序纹理将简单的数学转换为无限的真实感着色器,具有无限的多样性和分辨率. 超越看起来像一团像素特写的图像纹理,运用程序纹理的力量, ...

  5. c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D

    c4d跟踪特效合成视频教程 Master Motion Tracking with Cinema 4D MP4 |视频:h264,1280×720 |音频:aac,48000 Hz 语言:英语+机译中 ...

  6. Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020

    Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264,1280×720 |音频:aac,48000 ...

  7. 新建本地仓库,同步远程仓场景,出现git branch --set-upstream-to=origin/master master 解决方法...

    1.本地创建一个本地仓库  2.关联远程端: git remote add origin git@github.com:用户名/远程库名.git 3.同步远程仓库到本地 git pull 这个时候会报 ...

  8. 完全隐藏Master Page Site Actions菜单只有管理员才可以看见

    1. 在Master Page Head 增加下面的Style <style type="text/css"> .ms-cui-tt { visibility:hidd ...

  9. SQL Server 中master..spt_values的应用

    今天在做数据分析报表的时候遇到一个这样的问题. 表结构如下. 部门编码.部门名称.部门人员ID(中间用逗号分割) 我想通过和人员表链接,查询出一个新的数据集,查询出的结果集格式如下: 人员信息(ID或 ...

  10. ASP.NET 2.0 中配合 Master Page 使用的优化 CSS 模型

    ASP.NET 2.0 中增加了内建的 MasterPage 的支持,这对我们来说是一个很大的便利.然而经过一段时间的使用,我发现 MasterPage 并不是那么完美:嵌套的 MasterPage ...

最新文章

  1. java jsch_java使用JSCH实现SFTP文件管理
  2. 人脸识别数据集bin解压
  3. matlab碎纸拼接相似函数,基于蒙特卡洛算法构建能量函数的碎纸图片拼接方法
  4. windowbuilder点击按钮出现新界面_掌握这几招,轻松设计出高点击率的行为召唤按钮...
  5. 【渝粤教育】广东开放大学 人工智能 形成性考核 (55)
  6. qq登录界面句柄_别小看QQ邮箱测试,80%的测试新手都不能写出完整的测试用例~...
  7. c语言实现队列基本算法,【算法】队列的C语言实现
  8. 20210119:力扣第42周双周赛(下)
  9. 实现有向带权图抽象数据类型
  10. 分治法实现最大子数组
  11. linux zookeeper开机启动
  12. 项目日报模板_聪明的项目经理,都会利用周报让老板重视你
  13. 未来的人工智能和 AR/VR 会从哪些方面影响教育?有什么机会?
  14. AutoJS实现微信自动聊天机器人
  15. 物体识别全流程(Ubuntu16.04)结合ROS
  16. SOA 的定义 ——谢炯
  17. 浩辰3D软件入门教程:如何比较3D模型?
  18. 模仿淘宝聚划算倒计时js,兼容各种浏览器
  19. 简述python语言的主要领域_简述Python语言经验总结
  20. 嘀,你有一份1024礼物待查收!

热门文章

  1. 2022年度Top9的任务管理系统
  2. Internet security
  3. 华为SNS2224的Zone配置
  4. matlab output()函数,matlab 函数y=f(input,output)该如何实现?
  5. excel打不开html超链接,excel超链接打不开怎么回事 excel超链接的详细制作教程
  6. 如何在Oracle官网下载旧版本的JDK
  7. echarts 柱状图圆柱_使用echarts画柱状图
  8. mysql 联合主键自增,mysql联合主键自增、主键最大长度小记
  9. 豫科技版计算机七年级上册,一上册 信息技术
  10. 手把手教你做出数据可视化项目(三)3D地球旋转