CTF个人总结指南(更新中)
XCTF總結:
-
查看源碼
ctrl+U
F12
view-source:
Burpsuite -
robots.txt
-
掃描目錄腳本:桌面dirsearch-master
命令:C:\Users\Yuen>python C:\Users\Yuen\Desktop\dirsearch-master\dirsearch.py -u http://111.198.29.45:50014/ -e * -
常見備份文件名
.git
.svn
.swp
.~
.bak
.bash_history -
注意cookie
-
有些頁面需要達到條件才能拿到flag,可以試試查看前端代碼,并修改
-
X-Forwarded-For:123.123.123.123/Referer:https://www.google.com
-
遇到登陸賬號密碼的,用bp進行爆破
-
常用一句話
- 命令執行
command1 & command2 :不管command1執行成功與否,都會執行command2
command1 && command2 :先執行command1執行成功后才會執行command2 ,若command1執行失敗,則不執行command2
command1 | command2 :只執行command2(將上一個命令的輸出作為下一個命令的輸入)
command1 || command2 :command1執行失敗,再執行command2(若command1執行成功,就不再執行command2)
- sqlmap爆破
(1)全爆
sqlmap -u “www.example” --dbs
sqlmap -r xctfrequest.txt --dbs
sqlmap -r xctfrequest.txt -D news --dump
(2)慢慢爆
-
git泄露
url訪問:http://111.198.29.45:46634/.git/,出現泄露的文件,因此得出存在git文件泄露
腳本:python GitHack.py http://111.198.29.45:31555/.git/ -
chrome://downloads,恢復惡意文件
-
下載到附件后,查看代碼可以根據代碼內容修改后綴名查看
-
瀏覽器會自動對url進行一次解碼,有時需要兩次編碼
-
序列化和反序列化
- intval函數
去除小數點(0除外)的函數
注:
-
源碼看不出東西就抓包,有些進行url超鏈接的需要抓包
-
POST提交數據:需要在最后一行添加Content-Type: application/x-www-form-urlencoded
-
find / -name flag.txt
-
有時候有id=xx并不是一定存在sql注入,而是存在id的爆破,多多嘗試
-
copy 1.jpg/b + 1.php/a 11.jpg
-
==是判斷返回true還是false
-
一定仔細看題目,那就是提示
-
extract(),查詢php官網得知這個函數會將參數里數組的鍵名當作變量名,值作為變量的值。
-
上傳時的1.php.jpg的00截斷和Content-Type:
CG-CTF總結:
- 修改前端代碼長度
- 圖片源碼查看可能有flag
- 源碼頁面層層遞進
- 文字編碼后,打開新txt,之后以Unicode格式保存(右鍵另存為),之后再放入控制臺運行
- 頁面存在超鏈接,注意真正的鏈接會被重定向,考慮查看源代碼或者使用bp
- 文件包含偽協議php://filter/read=convert.base64-encode/resource=index.php
- 修改cookie
- robots.txt
- 引號被轉義,可以使用%df和\合成運,注釋符可以是%23(#如果被過濾的話就url編碼)或者–+
- ereg()函數%00截斷
ereg()在匹配字串是檢測到%00會停止,而strpos()會繼續,故構造nctf=1%00%23biubiubiu即可得到flag(%23因為瀏覽器會自動解嗎一次,只使用#會被瀏覽器自動解碼成空) - php弱類型
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469 - post變量覆蓋
register_global=ON時POST傳入數據值會覆蓋掉php中變量值,源碼中對post數據進行了extract()處理,extract()函數會將數組中的值賦給對應索引 - 1.php%00截斷不行,就把%00替換為空格標記該位置,在16進制中找到對應的位置,把20(空格的16進制是20)改為00截斷
- sql注入有源碼給你看時,可能需要構造payload
- strcmp()弱類型,傳入數組時會返回null。所以post的數據為pass[]=1可以獲取flag,pass=aa[]是不行的,必須要在參數pass后面加[]
- 本地登錄:抓包添加Client-ip:127.0.0.1或x-forwarded-for:127.0.0.1
- 讓兩個數相等,要實現繞過還是可以使用16進制=10進制,十進制轉16進制最好用python腳本,工具的轉的hex(16進制不行)
- sql注入:clean()函數去掉轉義,htmlentities($str, ENT_QUOTES)會轉換單引號和雙引號。這里我們只能通過引入反斜杠,轉義原有的單引號,改變原sql語句的邏輯,導致sql注入
payload如下:?username=&password=%20or%201%23 - 遇到一大串代碼,就放到控制臺里運行,亂碼的話就先右鍵保存,轉碼后再放入控制臺,也要注意請求頭,響應頭有沒有提示
如遇到history of bash,則url目錄后訪問/.bash_history,最后如果出現zip就下載
例:
zip -r mydata.zip mydata #壓縮mydata目錄 壓縮成 mydata.zip 文件
unzip mydata.zip -d mydatabak #解壓mydata.zip 解壓到mydatabak目錄下 - union前面的語句查詢不成功的時候會執行后面的語句
- vim這個東西異常退出時會留下臨時文件常常是.swp、.swo格式。或者可能會留下備份文件~結尾文件,所以可以尋找action文件,例如是submit.php,之后在原本action的基礎上加.sumbit.php.swp來查看submint.php的源碼
- 判斷:0e11='0' //true 判斷:000000...n個0='0' //true
- 偽協議php://input訪問請求的原始數據的只讀流,如果無法顯示flag就使用bp來進行post請求
- 變量覆蓋:foreach(name=meizijiu233 as $key => $value) //$key=name,$value=meizijiu233
注:PHP所使用的preg_match()函數從用戶輸入字符串獲得參數,如果所傳送的值為數組而不是字符串就會生成警告,警告消息中包含有當前運行腳本的完整路徑
application/octet-stream 未知的應用程序文件
application/json json數據
text/plain 未知的文本文件(純文本文件),瀏覽器會認為這是可以直接顯示的
注:瀏覽器分辨文件是基于MIME的,而不會把文件打開查看是否是其他類型,例如用link鏈接了一個標記為text/plain的文件,就算此文件是css文件,就算其后綴是.css,瀏覽器依舊不認
text/css css文件
text/html HTML文件
image/gif gif文件
總結
以上是生活随笔為你收集整理的CTF个人总结指南(更新中)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农村信用社贷款要求
- 下一篇: DVWA--Command Inject