XCTF 攻防世界 Web題的基本知識點和解題思路
- 大多數情況下,robots協議指的就是robots.txt
- index.php的備份檔案:/index.php.bak
- 頁面中如果出現了不能按的按鈕,可能是代碼中設定了disable引數,將網頁源代碼中的disable=""洗掉或者改為false(注意:safari瀏覽器可能無法方便的直接修改源代碼,可以換為firefox瀏覽器)
- 遇到php的源代碼,注重分析,如果只是簡短的幾行代碼,并且有類似于$a, $b這樣的變數,可以直接在url的后面添加上 /?a=…&b=…進行嘗試
- 如果題目中要求用GET方法發送一個值時,可以直接在url的后面添加 /?a=…(如果是POST方法,firefox瀏覽器使用hackbar插件可以很容易的解決;當然,利用burpsuite攔截發包也是可以的,注意:在用burpsuite進行POST請求的時候,需要加上Content-Type: application/x-www-form-urlencoded)
- X-Forwarded-For和Referer是很重要的兩個引數,用于請求的偽造,如果題目中一定要某個ip地址的話,可以使用X-Forwarded-For引數指定ip地址,如X-Forwarded-For: 127.0.0.1; Referer引數用于偽造來源,如Referer: https://www.baidu.com
- 題目中出現了一句話木馬,如<?php @eval($_POST['shell']); ?>,則可以嘗試用蟻劍(AntSword)進行連接,連接密碼即為shell
- 命令執行漏洞通常是由于沒有WAF,如經常出現的ping命令,可以在輸入框中嘗試 ping 127.0.0.1 | find / -name “flag”,利用連接管道符可以顯示多條命令執行的結果
- 題目中出現了\x這樣的16進制,可以先嘗試將16進制轉為10進制,再轉為相應的ASCII碼
- 如果知道了php的版本,則進行搜索此版本對應的漏洞,找到利用漏洞PoC代碼,進行嘗試
- 看到php代碼中有類似$ page的變數以及include($page)這樣的陳述句,可以嘗試構造 /?page=php://input 偽協議,如果php代碼中有strstr區分大小寫的函式),通過直接大小寫,/?page=PhP://input繞過
- 在題目的網頁中(如index.php頁面),發現后面有id=1這樣的形式,在暫時嘗試了其他方法無果或者沒有思路的情況下,可以嘗試暴力破解,經常使用burpsuite的Intruder模塊進行暴力破解,選擇payload或者匯入字典
- 如果題目頁面中只有一張圖片的話,查看網頁的源代碼,尋找資訊,在源代碼中可能隱含flag的檔案資訊,如hint.php, flag.php,然后在url的最后添加?file=hint.php進行嘗試
- 看到搜索框,首先想到的肯定是SQL注入和XSS注入,SQL測驗:通常先輸入1,看看有沒有回傳值;XSS測驗:輸入“>< script>alert(1)< /script><”,看有沒有回顯的框彈出,如果確定為是SQL注入,可以嘗試進行手動注入(一步一步的進行深入);也可以攔截抓包進行POST請求,然后將請求保存為request.txt檔案(檔案名隨意取),通過自動化工具sqlmap進行自動注入:sqlmap -r request.txt --dbs,在發現了資料庫的名稱之后,可以嘗試 sqlmap -r request.txt -D 資料庫名 --dump,直接將資料庫的內容都dump出來,(注意:在實際的操作中,很少有完全借助sqlmap進行注入的情況,通常都是手動注入和sqlmap相結合)
- 遇到打不開的網頁時,可以將后綴名改為html,嘗試打開
- 如果題目中的script代碼的最后是eval(_),將eval改為alert,在回顯之后的代碼里尋找和flag相關的,如正則運算式,放在控制臺里運行一下,可能會看到flag的資訊
- 在php代碼里,__代表魔術方法,如果php代碼中出現了__wakeup()方法,則可能跟php的序列化和反序列化相關,反序列化,首先要序列化,如果代碼足夠簡單,則可以在代碼最后加上 $a=new 類名(); echo(serialize( $a)); 將序列化的結果顯示出來,要繞過__wakeup()方法,可以將序列化字串中的物件個數修改一下,最后將反序列化的結果添加到url的最后
- 遇到檔案上傳漏洞的題目,可以先準備準備一句話木馬上傳,如<?php highlight_file(_FILE_); system($_GET['cmd']); ?>,上傳的檔案首先可以嘗試更改檔案名,如1.php.jpg,如果不行,則可以在上傳的同時,利用burpsuite攔截抓包,將檔案名更改一下,大多數情況下就可以繞過過濾,上傳成功后,則可以在request請求的最后(與http頭的引數隔一行)加上 <?php system('ls'); ?>,繼續send,會看到顯示的目錄,通過更改命令一步步的深入,獲取flag資訊
- 查看php源檔案的話,可以在最后加上s,也可以在url的最前面加上view-source: (注意:safari中時無法使用view-source顯示源代碼的,要使用firefox)
- python模塊注入的問題,首先在url的最后加上 /{{7+7}} 進行判斷,如果頁面中顯示了相加的和,則說明存在服務器模版注入(SSTI),在url的最后添加 /{{config.items()}},顯示出所有變數的資訊,然后構造
{{''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('ls').read()}},看到flag資訊后,繼續構造{{''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('cat fl4g').read()}},就可以獲取到flag了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/228106.html
標籤:其他
上一篇:記服務器資料庫被攻擊后修復經驗
