「百度杯」CTF比賽 十一月場 Look

2021-10-25 07:20:36 字數 3629 閱讀 1714

自己還是太菜了。。這題各種考點自己乙個都沒做出來,真的感覺都是自己的知識盲區,還要要靜下心來慢慢學習。

第乙個點其實可以直接繞過的,但是先不管這個。

進入環境後發現頁面是空白,正確的解法是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 。

可以看到大寫o和ö是相等的

因此可以使用ç=c 或者ô=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 的時候顯...