自己還是太菜了。。這題各種考點自己乙個都沒做出來,真的感覺都是自己的知識盲區,還要要靜下心來慢慢學習。
第乙個點其實可以直接繞過的,但是先不管這個。
進入環境後發現頁面是空白,正確的解法是burp抓包:
發現相應裡有乙個x-ht: verify
這裡還是自己不夠敏感啊!題目已經提示有sql注入了,自己一直苦於不知道注入的引數名。ht其實就是hint,不過自己沒有管這個是因為響應頭裡面x-***x的自己基本都不知道是什麼意思,以為都是本來就有的,就沒去管,導致遺漏了這個重要的資訊。
因此,自己以後再抓包看響應頭的時候,只要是自己不認識的,都去查一遍,以防出題人迷惑自己。
接下來就是verify注入了,是get注入。這個注入的姿勢對我來說也是知識盲區:
0因為長度的限制,所以這樣注入,成功繞過,到達下一關:
訪問提示的頁面,如果bp抓包,響應頭里同樣有乙個x-ht: viminfo,提示了.viminfo。
這就要說到dirsearch了,如果一開始用dirsearch掃的話,可以直接掃出.viminfo,然後直接跳過之前的sql注入了。。
進入.viminfo,發現備份檔案名。這個檔案嗎也是個坑。。我以為備份檔案字尾是.backup,誰知道真的是.backup~~~,這個萬惡的出題人。。。。
進入備份檔案,得到5211ec9dde53ee65bb02225117fba1e1.php的原始碼,進行**審計:
<?php
$con
=mysql_connect
('localhost'
,'root',''
);mysql_query
("set names utf8");
mysql_select_db
("ctf");
if($_server
["remote_addr"]==
'8.8.8.8'
)else
else
}echo
'hello '
.$name
;$sql
="select * from admin where name='$name'";
$result
=mysql_query
($sql);
$num
=mysql_num_rows
($result);
if($num
>0)
?>
根據題目的提示,我以為是寬位元組注入,但是嘗試之後發現不行。因為還是老老實實想辦法繞過bctf2o16的過濾。
這個繞過的點還是我的知識盲區,就是mysql字符集的問題。
mysql 中 utf8_unicode_ci 和 utf8_general_ci 兩種編碼格式, utf8_general_ci不區分大小寫, ä = a, ö = o, ü = u 這三種條件都成立, 對於utf8_general_ci下面的等式成立:ß = s ,但是,對於utf8_unicode_ci下面等式才成立:ß = ss 。因此可以使用ç=c 或者ô=o,成功繞過:可以看到大寫o和ö是相等的
接下來又是**審計:
<?phpif (
isset
($_get
['path'])
&&isset
($_get
['filename'])
)elseif(
strpos
($name
,'..'
)>-1
)if(strpos
($path
,'')===0)
else
?>
下的檔案就是題目環境下的檔案。
這裡的繞過又是我的姿勢盲區,利用的之前的那個頁面,就是需要傳遞usern3me的,因為它的**中有這個:
echo
'hello '
.$name
;
這個我在本地做了測試,才搞明白是為什麼。測試**如下:
ttest.php
<?phpif (
isset
($_get
['path'])
&&isset
($_get
['filename'])
)file_put_contents
($name
,file_get_contents
($path))
;?>
test.php
<?php
$name
=$_get[1
];echo
'hello '
.$name
;?>
我們在本地訪問這個url:
這時候是把test.php檔案的內容寫到了1234.php裡面:
如果path前面加上
寫入的內容變成了hello。
這是為什麼呢?如果我們不加,我們相當於訪問的是我們自己的檔案系統,也就是直接訪問到test.php的內容。
如果我們加上了,訪問得到的內容可以理解成curl這個鏈結得到的內容,也就是我們的響應頭里的內容,應該是這個頁面的原始碼:
因此,因為上個頁面的usern3me的內容是我們可控的,我們可以直接寫php**,這樣寫的php**就進入了我們給的檔案,然後rce就可以了:
需要注意的是,必須用%2520,不能用空格,也不能%20。至於為什麼,我也很迷。。我在本地環境進行測試,空格或者%20都可以,但是在題目的環境如果用空格或者%20,後面的內容就會被截斷了。
主要卡點就是響應頭部,sql注入的這種特殊姿勢,還有file_get_contents之前的頁面的操作,自己乙個都沒能做出來,還是要努力學習啊。
百度杯十一月場 look
首先拿到題目,頁面空白沒有特殊資訊 掃了一下目錄沒有掃出結果,在burpsuit返回包中發現http頭部有特殊字段 由於題目提示,猜解可能是url引數,可能存在sql注入漏洞,嘗試了幾次得到下個頁面 來到下個頁面,沒啥特殊資訊,同樣在返回包中發現特殊字段 通過查詢了解到,viminfo是在使用vim...
「百度杯」CTF比賽 九月場 Test
個人收穫 1.連線shell 失敗的時候可以試試多個版本的菜刀,可能是菜刀的問題 2.學會了菜刀資料庫管理的配置 題目介面 有現成的poc search.php?searchtype 5 tid area eval post 1 菜刀鏈結,密碼為1我們用菜刀進行訪問 之前我用另乙個菜刀無法連線,開始...
「百度杯」CTF比賽 十月場 登入
這題的sql注入也確實是讓自己漲姿勢了。自己可以說學了mysql就沒有用過like,一直以為它在sql注入裡沒用,沒想到居然可以這樣。進入環境,是乙個登入頁面。嘗試進行sql注入,發現username為admin or 1 1 的時候顯示密碼錯誤,username為admin or 1 2 的時候顯...