CTF—WEB滲透
1.view_source
打開后我們發現不能右擊查看源碼,那么我們F12,在查看器里發現flag。
所以提交cyberpeace{e1f66c0513b6d331cd2932f6b51f2769}
方法:
1.摁F12
2.用burp抓包
3.view-source:ip:端口
2.robots
作為一個web狗,不得不知道roborts,robots.txt是爬蟲協議,這其實就是一個遍歷目錄,將列舉出全部內容(前提是服務器存在robots.txt)
我們直接訪問robots.txt這個文件,看看有沒有(或者正常做法是用御劍等掃描器掃描目錄,得到這個文件,但是如果你知道這個東西的話,是可以直接訪問的。)
很幸運的發現flag所在地。直接訪問f1ag_1s_h3re.php,
獲得本次flag,提交
cyberpeace{f8f285333cb631a3d6f32d3e310e1246}
3.backup
根據題目描述,我們不難看出是需要找備份文件,這里需要普及一些知識
常見的備份文件后綴名有:“.git” 、“.svn”、“ .swp”“.~”、“.bak”、“.bash_history”、“.bkf”
進入答題網址后,發現是需要找index.php的備份文件,我們將上述備份文件后綴名依次嘗試,
之后,試到.bak的時候
出現下載文件,不用說,這就是啦。
下載完成后,用記事本打開,獲得本題flag
提交Cyberpeace{855A1C4B3401294CB6604CCC98BDE334}
4.cookie
進入答題網址后,出現如上圖內容,那就看cookie唄,F12-網絡-cookie他讓我們去看cookie.php,其實這就看出學好php的好處了,如果你學了php你會直接去訪問那個頁面的,不過我們現在也找到了不是么。訪問吧那就,
頁面提示讓看http響應頭
、
於是,我們發現了本題的flag
提交cyberpeace{dcea78001cf02d210cad875cd52eaceb}
5.disabled_button
進入答題網址后,發現有個flag的按鈕,但是不可以點擊,很明顯這是有着前端限制,於是,F12,定位到flag處的代碼。
此時,flag按鈕就可以點擊了,點擊后,獲得本題flag。
提交cyberpeace{2af04bca19696d4067747edb5fe14280}
6.weak_auth
看到描述,首先想到的是爆破,再看題目,弱口令。。
進去后,一個登錄頁面,印證猜想,我們先直接點login,看看會不會給點提示
告訴了我們usename,於是我們只需研究密碼,先隨便輸個弱口令試試,這里哈,我后來使了個123456直接就出來了。。。但是我們還是講講正經步驟
密碼錯誤的時候,轉入check.php,查看源碼,它提示我們可能需要一個字典,那么我們就直接burp上弱口令字典爆破吧。
burp抓到包后,發送到intruder准備爆破
首先選擇爆破點。
之后我們加載一個弱口令字典(沒有的話百度自行下載,或者你可以自己想一些弱口令,都寫在這,當然速度明顯會慢,還是直接下載一個字典比較好,或者可以用字典生成器自己生成)
為了速度, 我修改了線程為50,你自己看着改,別太慢就行(注:burp的社區版不能修改線程哦)
於是開始我們的爆破,很快就完成了
找到長度和大部分不一樣的,直接點進去,查看響應頭,發現本題flag。
提交cyberpeace{134664bed156798412b00ef6d5088e9a}
7.simple_php
看題目,簡單的php,我們看題吧
哦豁,來進行一波代碼審計吧,這段php代碼的意思是,通過get方法得到a和b的值,然后如果a==0並且a==0 並且a==0並且a為真,得到flag1,如果b是整數或者數字字符串,就退出,然后如果$b>1234就得到flag2.,很容易發現,這是一個php弱類型的題,對於php弱類型我不是很懂,我就記住了一句話,不會構造就加[],我們來構造一下payload吧,首先a若為真很好弄,直接令a==0就好了,
我們已經獲得一部分flag了,接下來就是整flag2,首先b不能是整數或數字字符串,就是不能都是數字,最后還需要值大於1234,那么我們可以構造個12345a,值大於1234,並且不是純數字(這里構造方式很多樣,你甚至都可以b=12345[])於是我的payload構造為?a==0&b=12345a
回車,
獲得完整的flag
提交Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
8.get_post
首先讀題,可以看到應該會和get和post這兩種請求方法有關。我們進入答題網址。
哦吼,很簡單的一個要求哈,get方式就是將參數直接放入url中,我們直接構造payload如下:
?a=1
回車后就出現了第二個要求,讓用psat方式傳參,這里呢可以采用bp抓包的方式,由於我略懶,所以我直接用火狐的hackbar插件。
直接傳入,網頁上就出現了本次的flag
所以提交cyberpeace{9a37cc19a11317631f5c30e9a1536aab}
方法解釋
- 了解http請求方法,此處考察get和post兩個最常用的請求方法。
-
HTTP協議中共定義了八種方法或者叫“動作”來表明對Request-URI指定的資源的不同操作方式,具體介紹如下:
-
GET:向特定的資源發出請求。
-
POST:向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)。數據被包含在請求體中。POST請求可能會導致新的資源的創建和/或已有資源的修改。
-
OPTIONS:返回服務器針對特定資源所支持的HTTP請求方法。也可以利用向Web服務器發送'*'的請求來測試服務器的功能性。
-
HEAD:向服務器索要與GET請求相一致的響應,只不過響應體將不會被返回。這一方法可以在不必傳輸整個響應內容的情況下,就可以獲取包含在響應消息頭中的元信息。
-
PUT:向指定資源位置上傳其最新內容。
-
DELETE:請求服務器刪除Request-URI所標識的資源。
-
TRACE:回顯服務器收到的請求,主要用於測試或診斷。
-
CONNECT:HTTP/1.1協議中預留給能夠將連接改為管道方式的代理服務器。
工具:
- 火狐瀏覽器插件hackbar (F12打開)
Load URL
選中Post data
輸入b=2
Excute
9.xff_referer
首先讀題,發現描述中寫到了個xff和referer的偽造,大概知道了本次的考點,就應該是修改請求頭
了。我們進入題目。
首先就是對於ip地址的一個要求,這里我們用bo抓包來修改IP地址,為了方便,我們抓包后發送到repeter來進行。
考慮到修改IP地址,所以我們需要在響應頭中添加 X-Forwarded-For: 123.123.123.123
(常用修改ip地址的方法),這里有一個點需要注意一下,就是這條語句不能放在最下面一行,也不知道是不是我的bp的問題,如果放在最下面就訪問總是失敗,希望有知道的大佬告訴我一聲。
在響應包中看到了這么一句js語句,結合題目要求,所以我們構造referer內容:Referer:https://www.google.com
所以提交cyberpeace{1e0953984b3f692cec93e7d02b6b22ab}
10.webshell
老規矩,讀題目,根據題目和題目描述很容易看出,這就是他上傳了個一句話木馬,我們需要連上他的一句馬來尋找flag,那我們就可以用蟻劍,或者hackbar來操作了,好,我們進入題目網址來看看。
哦吼,把一句話木馬的內容寫出來了,這不就直接告訴了我們蟻劍的連接密碼么,我們先來蟻劍走一波。根據題目提示,我們知道他把木馬放到了index.php中,就該是咱一進去看到的那個。
哦吼,,flag.txt很輕易的發現了
而里面也正是我們的flag。下面介紹一下用hackbar的做法,我們使用post的方式,來查看一下瀏覽器目錄,所以我們構建如下payload:shell=system(“ls”);
發送后,發現,
存在一個flag.txt我們直接訪問它
同樣獲得了本次的flag,其實這貌似還給我們一個思路,就是一開局直接就flag.txt試試唄,萬一成功了不是血賺么。
所以我們提交:cyberpeace{36329b304d3216199f2ebeb609807352}
11.command_execution
讀題目,看到她雖然寫了一個ping功能,但是不具備waf,也就是沒有web應用防火牆,那么我們或許可以用到一些命令執行哦。我們先來看題
不如,先ping一下本機看看,也就是127.0.0.1
是可以ping通的,那么我們就來嘗試命令拼接執行的方法了。
首先嘗試一下127.0.0.1&&ls
ok,命令拼接是可以執行的,同時也確定了這是一台linux服務器,,所以開始我們本次的目標,獲得flag,,所以我們全局搜索flag,命令如下:
127.0.0.1 &&find / -name "flag*"
雖然出來很多,但是我們可以明顯感覺到flag.txt里就是我們的答案,所以我們cat查看一下。
127.0.0.1&&cat /home/flag.txt
於是,獲得本次flag,提交cyberpeace{a9ef69ee4d60ffeb4ae392667a9b0d6d}
12.simple_js
先讀題目,只有題目的js感覺會用到,那我們就直接看題吧
一進去就讓我們輸入密碼,巧了,我們這也不知道呀,所以隨便輸一個吧。
提示密碼錯誤哈,不管它,繼續,點完確定之后,發現出現個什么都沒有的白頁面,不過標題有着很明顯的JS
所以,我們來查看源碼想都不用想,又到了讀代碼的時候了,我們發現不論輸入什么都會跳到假密碼,真密碼位於 fromCharCode 。通過和上面的對比,很明顯
\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30
這是很離譜的。所以我們需要把它轉換為10進制,這里我們直接用python吧。
構造exp為
s="\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30" print(s)
獲得一堆數組,這是我們需要將它轉換為字符串,所以,再次用python構建exp:
s=[55,56,54,79,115,69,114,116,107,49,50] for i in s: print(chr(i),end='')