[徵文] CTF (Cature The Flag)

作者: oscarchichun (ㄍ一)   2020-04-01 23:18:12
CTF (Cature The Flag) 起源於1996年 Global Hacking Conference
是較量網路安全知識與能力的競賽
CTF 涉及的領域與知識繁多, 隨著資安技術發展的加速
題目也越來越難, 入門門檻越來越高
雖然沒有參賽過, 但有幸聽過有經驗的參賽者分享
才知道台灣這方面挺強的, 也了解到相關知識不但有趣而且重要
在這邊記錄講者提供的3個體驗題目與解題資訊
目標: cature the flag, 也就是要想辦法取得 flag 的值
假設題目放在 10.20.104.3 這台機器
[Q1] yoyoadmin
<?php
highlight_file(__FILE__);
//get ip
$ip = 'unknown';
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} else if ( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
if ($ip === '127.0.0.1') {
require_once 'flag.php';
echo $flag;
}
else {
echo 'hi normal user';
}
?>
[Q2] test connection
<?php
highlight_file(__FILE__);
$url = isset($_POST['url']) ? $_POST['url'] : "";
if ($url != "" ) {
$pu = parse_url($url);
if (isset($pu["host"]) && isset($pu["scheme"])) {
if ($pu["host"] === "10.20.104.1"
&& ($pu["scheme"] === "http" || $pu["scheme"] === "https")
) {
require("flag.php");
exec("curl
作者: kaizz (Kaizz)   2020-04-02 04:33:00
有修過打CTF的課 真的很有趣!
作者: alan23273850   2020-04-02 09:16:00
推!所以第一個工具就可以偽裝自己 ip 了嗎
作者: Masakiad (Masaki)   2020-04-02 11:31:00
樓上,這麼說並不正確,因為正常狀況IP應該是拆layer3資料出來校對,只有php才有可能這麼蝦,去拆layer7的http header來校對。原文也說了是修改header而不是ip
作者: splitline (台ㄎ廢文王)   2020-04-02 11:35:00
跟php沒關係,純粹是開發者的問題
作者: Masakiad (Masaki)   2020-04-02 11:48:00
我沒有要貶低php語言本身,但php的開發者才容易真的寫出這題目1這種弱點的系統。
作者: w181496 (Kaibro)   2020-04-02 13:05:00
回樓上 我在很多go, nodejs等正式上線專案也看過一樣的錯誤抓ip方式,跟語言無關,純粹是開發者觀念錯誤
作者: Masakiad (Masaki)   2020-04-02 13:23:00
是開發者問題沒錯啊,但這些初學者這樣寫跟語言盛行時代已經網上錯誤文章數量有關。換言之我如果是攻擊者,看到php平台我可能會優先做這樣的嘗試,但其他語言就很後面甚至根本不用試
作者: senjinbin56 (SJB)   2020-04-02 13:38:00
你知道XFF這種header在reverse proxy多層次架構是很正常的實作方式嗎?用這個方法抓client ip在proxy架構下是沒有問題的。但換個場景到一般應用,攻擊者如果可以直接修改XFF header的話,就會有問題了所以就算是樓上講的php,只要場景應用正確,那這種寫法其實也不一定會有問題
作者: er230059 (CQH)   2020-04-02 15:02:00
直接抓IP Layer的IP在有PROXY的狀況也是有其他商業問題
作者: Masakiad (Masaki)   2020-04-02 17:01:00
原文題目就沒出proxy了,而proxy帶xff就已經是穿過L3了,樓樓上應該是忘記了?
作者: pichubaby (Pichu)   2020-04-03 01:57:00
拆L3說出來大概一大堆人腦海OS我家L3拆出來192.168...事實上的問題是不太應該用IP作為安全性條件再來考慮下個問題是,Client端有同意讀取或是儲存IP嗎這個屬於個人資料保護法或是GDPR層面的問題
作者: namecoin (miyauchi renge)   2020-04-03 20:27:00
Capture The Flag
作者: leo258x (TastyFeeder)   2020-04-08 15:29:00
真的有趣

Links booklink

Contact Us: admin [ a t ] ucptt.com