第一个Shellcode(Xp sp3)

研究挖0day有一阵了,先是汇编后来是逆向,最近才开始尝试第一个shellcode,我是用这个程序尝试溢出的:


/*
* fb.c
*
* Created on: 2014年5月3日
* Author: yuris
*/

#include<stdio.h>
#include<windows.h>

#define PASSWORD "1234567"
int verify_password (char *password)
{
int authenticated;
char buffer[44];
authenticated=strcmp(password,PASSWORD);
strcpy(buffer,password);
return authenticated;
}
main()
{
int valid_flag=0;
char password[1024];
FILE *fp;
LoadLibrary("user32.dll");
if(!(fp=fopen("password.txt","rw+")))
{
exit(0);
}
fscanf(fp,"%s",password);
valid_flag = verify_password(password);
if(valid_flag)
{
printf("incorrect password!\n\n");
}
else
{
printf("Congratulation! You have passed the verification!\n");

}
fclose(fp);
}

其实这是0day书中的例子,这里故意载入了user32.dll方便我们调个框。很容易看出来问题在strcpy那里,它没有检查输入。于是我们试着这样输入:

43214321432143214321432143214321432143214321

这样能通过验证,那么同样的原理我们可以让他跳到任意地址,比如我们可以让他跳到正确的分支:


43214321432143214321432143214321432143214321432143210@ 

……具体是使用winhex输入的,所以看起来是乱码,其实就是把ret覆盖成正确跳转处的地址。那么,再进一步,我们是不是还可以转到自己的代码,其实我们只要把代码放在缓冲区里,然后转到就好,那么可以这样构造:


3跾hsfkuhyuri嬆SPPS戈誻袗悙悙悙悙悙悙悙悙悙悙悙悙悙悙?

可以看见一个弹框(winxp sp3),但是换了一个系统就会有问题,于是加上一个jmp esp定位:


悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙悙S撘w冹"3跾hsfkuhyuri嬆SPPS戈誻蠸?藖|袗悙悙

这里还加入了exit,防止结束后弹框。但是我们发现这样在别的系统上还是有问题,于是我们要让shellcode自己找到api基址,自己加出来地址(这部分还未做),那么就能在所有win系统上使用了。

研究中………………

时间: 2024-10-07 06:29:06

第一个Shellcode(Xp sp3)的相关文章

Cuckoo的配置与使用Ubuntu + VirtualBox + windows Xp SP3

cuckoo简介:Cuckoo基于虚拟机技术,使用中央控制系统和模块设计,结合python的自动化特征,已经是颇为自动化的恶意软件行为研究环境.独到的蜜罐网络研发的技巧,让Cuckoo可以轻而易举的进行URL分析.网络通讯分析.程序分析.pdf分析.个人推荐使用debian或ubuntu主机安装virtualbox当作Cuckoo Host,WinXP做guest. 运行环境:Ubuntu 14.04 LTS Desktop(64Bit),VirtualBox,Windows Xp SP3 参考

Windows XP SP3中远程桌面实现多用户登陆

1 [原创]Windows XP SP3中远程桌面实现多用户登陆 现在电脑我想都可以在远程控制和远程协助了吧(xp,sp2,sp3),现在一个问题,你想远程操控你的电脑,但是你电脑有人用,你好意思让他退出~然后你在远程控制?呵呵,下面Star我为他家说说sp3多用户控制的弄法~~sp2这些都类似~具体没有试.. 案例:电脑建2个用户,一个用户你专用(假设为:xp1),一个用户给别人用(假设为:xp2)~自己看着办~如果你远程控制你的电脑通过电脑进入你的用户名xp1,这个时候你会发现,弹出一个提示

8.3.3 快速系统调用 —— XP SP3上SystemCallStub的奇怪问题

依书上的例子,ReadFile()函数会调用ntdll!NtReadFile(),后者将服务号放到eax之中,然后调用SharedUserData!SystemCallStub(),由此函数执行sysenter指令来切入内核. 但是实际操作查看反汇编却是这个样子: 指令完全是错乱的,猜测此处应该是不是指令,回看一下ntdll!NtReadFile()处的调用代码: 发现是将SharedUserData!SystemCallStub()处的地址写入edx寄存器,再通过edx间接寻址调用,所以推测该

官方原版Windows XP SP3(VOL)中文简体版ISO下载

今天,向各位朋友推荐今年五月,由MSDN官方集成的XP With SP3专业VOL版. 文 件:Windows XP Professional with Service Pack 3 (x86) - CD (Chinese-Simplified)zhhans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso 大 小:601.04MB UTC(公布时期):5/2/2008 12:05:18 AM SHA1:d14

fedora 21下Virtual Box安装Windows XP SP3

Installing Virtual Box and Windows XP SP3 during Fedora 21 The first step:Download and Install Virtual BoxThe first method:Download address:https://www.virtualbox.org/wiki/Downloads;According to system, we click onVirtualBox 4.3.20 for Linux hosts, a

【电脑城热销】深度技术 Ghost Xp Sp3 装机版|纯净版分享

[电脑城热销]深度技术 Ghost Xp Sp3 装机版|纯净版分享[深度完美 至尊精品]深度技术 Ghost Xp Sp3 通用装机版软件大小:1.46 GB软件语言:简体中文 授权方式:共享软件 更新时间:2015-03-10 类型:.iso 详情内容:http://www.win7g.com/xp/458.html下载地址:本地下载:http://down.os36.com/deepin_ghost_xp_zjb.iso (直接点击或复制打开)迅雷快传:http://kuai.xunlei

逆向工程学习第三天--另外一个ShellCode

上周自己打造的添加用户的shellcode太长,不过当时主要目的是为了锻炼手动asm,熟悉一些复杂的参数类型如何手动进行构造,然后通过堆栈传递. 接下来就打造一个弹计算器的shellcode来进行接下来的学习和测试. 弹计算器的C代码只有一句: C代码: system(“calc”); ASM代码: 004030B4 8BEC mov ebp, esp //把栈底抬高,准备放参数 004030B6 33FF xor edi, edi //把edi清零,准备0,这样可以防止代码中出现00,避免字符

经典GHOST XP SP3系统安全稳定版

如果有想刻盘的朋友,要使用DVD光盘刻录哦! 1.系统采用万能驱动助理全系列正式版,(海量驱动,几乎覆盖市面全部驱动)所以增加了系统的体积. 2.本系统未经过任何精简.精简过的系统可能导致系统不稳定. ◆ 概述 本系统基于 Windows XP Professional SP3 MSDN 官方简体中文版制作,整合了最新的安全补丁和其它系统升级 程序,增加万能硬件驱动包可选择,并集成最新的 SATA/RAID/SCSI/CPU 驱动.免序列号,免激活.通过正版验证, 支持在线更新. ★本系统完美解

如何编写一个shellcode

ShellCode的编写就是将函数或变量在内存中的间接地址改为函数或变量在内存中的直接地址,直接调用! 以MessageBox函数为例进行讲解如下 新建shellcode.cpp: 编写代码如下: 运行结果: 将VC代码转换成汇编指令: 内存数据图: 函数的真实地址找到之后,修改代码如下: 将以上汇编指令转换成二进制数据: 内存数据图: 将0x0040103C~0x00401049之间的二进制数据复制出来 如下: 6A 00 6A 00 6A 00 6A 00 B8 1E FD 0B 75 FF