ping cat.flag.php,关于2020年强网杯-强网先锋-主动的赛题解析
原標題:關于2020年強網杯-強網先鋒-主動的賽題解析
一、基本信息(總概述)
本題涉及知識點:
命令執行
正則匹配
linux命令繞過
二、基本環境和工具
Linux系統
PHP+Apache
Firefox
Index.php
Flag.php
三、Writeup
1、根據題目要求還原實驗環境
首先在Linux虛擬機上安裝Apache
Yum install httpd
安裝PHP環境
Yum install php
在red hat的網站目錄下創建如下兩個文件
兩個文件中內容如下
開啟HTTP服務
systemctl start httpd
為了方便在主機實驗可以臨時關閉防火墻
systemctl stop firewalld
2、在瀏覽器中輸入虛擬機IP(192.168.123.254)進行訪問
system("ping -c 3 $_GET[ip]");這一條語句明顯表明可以進行命令執行
3、嘗試構造命令觀察當前文件目錄下是否有flag相關文件
如圖,發現有falg.php文件,但題目中對flag進行了過濾
如果直接cat flag.php顯示如下
這是由于preg_match 函數用于執行一個正則表達式匹配。
題目中的preg_match("/flag/i",$_GET["ip"]),其正則表達式為:/flag/i,該函數表示從我們構造的ip的值中匹配flag字符串,所以我們在構造ip的值為"8.8.8.8;cat flag.php"時輸出了no flag(die函數輸出一條消息,并退出當前腳本。),因為他匹配的了flag字符串
正則表達式中"/"是表達式開始和結束的標記(即匹配了flag)且其后的"i"標記這是一個大小寫不敏感的搜索即flag中字母的大寫和小寫的組合都會被匹配到
本題中的正則表達式未涉及許多的正則表達式的元字符,例如還有一些其他常見的類型題目如正則表達式(/^\w+$/)在表達式開始和結束的標記中間的
^匹配輸入字行首;
\w 匹配包括下劃線的任何單詞字符;
+匹配前面的子表達式一次或多次(大于等于1次);
$匹配輸入行尾
總體意義就是限定一個任意長字符串,全部由字母數字下劃線組成,前面中間后面都不能有空格、標點等非\w字符
關于正則表達式的更多內容可以參考百度百科中給出的詳細介紹
https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215?fr=aladdin
4、知識儲備
百度查詢Linux的關鍵字繞過方法
https://blog.csdn.net/wojiushilsy/article/details/106129503
linux中直接查看文件內容的命令
cat、tac、more、less、head、tail、nl、sed、sort、uniq
其中使用tac和sort命令可以直接將falg命令的內容輸出到頁面上,使用cat就得查看源碼找到flag的內容
5、單雙引號繞過
如上圖取得$flag = "flag{I_like_qwb_web}"
6、使用反斜杠繞過
7、利用Shell 特殊變量繞過
如下圖使用tac命令可以直接看到flag的內容
8、利用通配符繞過
如下圖使用sort命令也可以直接看到flag的內容
繞過方法還有很多這邊就列舉了幾個簡單易操作的出來
國科學院學生會是由國科學院指導開展的學員服務型組織,致力于配合國科學院完成日常工作的開展以及強化鍛煉學員的自身職業素養與專業技能,下設部門有技術部和綜合部。
如果你們也想提升自我,又或者是想認識這些和你們一樣優秀的小伙伴,那就趕快聯系指導老師并加入我們吧!
學生會信箱:
student@goktech.cn返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的ping cat.flag.php,关于2020年强网杯-强网先锋-主动的赛题解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: activex部件不能创建对象如何解决
- 下一篇: bloomfilter的java实现,B