[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 World 1 盲注Web
- web5Web
- 第三屆華中地區邀請賽網路賽題解
- 華北門戶整站原始碼帶論壇原始碼
- 阿里雲高效能運算HPC產品使用流程(華北2區域)阿里
- 『網賽總結』Day11
- 聚焦實踐|綠盟科技支援全國大學生資訊保安競賽東北、華中賽區
- 第十四屆全國大學生資訊保安競賽創新實踐能力賽(華中賽區)比賽成功舉辦
- 物聯雲倉:2020年區域倉儲市場分析報告 【華北篇】
- Writeup-北郵新生賽MRCTF-Misc題:ezmisc
- 第十四屆全國大學生資訊保安競賽-創新實踐能力賽|華中、東北賽區報名正式啟動
- 東華OJ 陣列競賽 分糖果陣列
- 對決“新華三杯”賽出新IT人才
- 華瑞IT教育|2021校園籃球賽
- 【ACM演算法競賽日常訓練】DAY16【奇♂妙拆分】【區區區間間間】【小AA的數列】數學 | 位運算 | 字首和ACM演算法
- 【CH Round #48 - Streaming #3(NOIP模擬賽Day1)】 題解
- 東華 OJ 一維陣列競賽 等差數列陣列
- 華熙國際開創“華熙LIVE”模式,推動奧運場館賽後可持續利用模式
- 華瑞IT校園籃球賽:熱血少年,球場爭鋒
- 賽博朋克(Cyberpunk)會是個好的遊戲題材嗎?遊戲
- 精細儲存、有序協作,融創華北以專案檔案管理助推業務發展
- 華中農業大學第十三屆程式設計競賽程式設計
- [CISCN2024]華中半決賽 PWN部分題解
- day1
- ACM-ICPC 2018 徐州賽區網路預賽ACM
- 2020 ICPC 上海賽區
- 數信杯南部賽區 tornado
- 億信華辰:地產行業數字化轉型新賽道行業
- 華中農業大學第十三屆程式設計競賽 題解程式設計
- 以賽代練 | 綠盟科技助力2021年金華市銀行業網路安全競賽成功舉辦行業
- 2021華為軟體精英挑戰賽總結(粵港澳賽區複賽第7)
- ACM-ICPC 2018 瀋陽賽區網路預賽ACM
- 立足瀋陽 輻射北區 綠盟科技發出網路安全之聲
- FACEBOOK 大中華區開發者個人賬戶管理注意事項
- 成華區ztzy管理系統程式碼部署 linuxLinux
- “東華春秋杯”上海大學生網路安全技能大賽決賽收官聚焦高校人才培養
- day11
- day16