網路攻防比賽PHP版本WAF

2022-05-04 04:51:07 字數 3730 閱讀 8272

次去打hctf決賽,用了這個自己寫的waf,web基本上沒被打,被打的漏洞是檔案包含漏洞,這個功能在本人這個waf裡確實很是捉急,由於只是簡單檢測了..和php[35],導致比賽由於檔案包含漏洞web上失分了一次。不過現在不是很想去改進了。這個是比賽專用waf,商業價值幾乎為0。

具體**如下

wafphp

1

<?php2//

error_reporting(e_all);

3//ini_set('display_errors', 1);45

/*6** 線下攻防php版本waf7**

8** author: 落9*/

1011

/*12

檢測請求方式,除了get和post之外攔截下來並寫日誌。

13*/

14if($_server['request_method'] != 'post' && $_server['request_method'] != 'get')

1718

$url = $_server['request_uri']; //

獲取uri來進行檢測

1920

$data = file_get_contents('php://input'); //

獲取post的data,無論是否是mutipart

2122

$headers = get_all_headers(); //

獲取header

2324 filter_attack_keyword(filter_invisible(urldecode(filter_0x25($url)))); //

對url進行檢測,出現問題則攔截並記錄

25 filter_attack_keyword(filter_invisible(urldecode(filter_0x25($data)))); //

對post的內容進行檢測,出現問題攔截並記錄

2627

/*28

檢測過了則對輸入進行簡單過濾

29*/

30foreach ($_get

as$key => $value

) 33

foreach ($_post

as$key => $value

) 36

foreach ($headers

as$key => $value

) 40

41/*

42獲取http請求頭並寫入陣列

43*/

44function

get_all_headers()

51}

5253

return

$headers

; 54

} 55

5657

/*58

檢測不可見字元造成的截斷和繞過效果,注意**請求帶中文需要簡單修改

59*/

60function filter_invisible($str

)else69}

70}71$str = str_replace(array("`","|",";",","), " ", $str

);72

return

$str;73

}7475/*

76檢測**程式存在二次編碼繞過漏洞造成的%25繞過,此處是迴圈將%25替換成%,直至不存在%25

77*/

78function filter_0x25($str

)else85}

8687

/*88

攻擊關鍵字檢測,此處由於之前將特殊字元替換成空格,即使存在繞過特性也繞不過正則的\b

89*/

90function filter_attack_keyword($str)94

95//

此處檔案包含的檢測我真的不會寫了,求高人指點。。。

96if(substr_count($str,$_server['php_self']) < 2)/i", $tmp

))101 }else

104if(preg_match("/base64_decode|eval\(|assert\(/i", $str

))107

if(preg_match("/flag/i", $str

))110

111}

112113

/*114

簡單將易出現問題的字元替換成中文

115*/

116function filter_dangerous_words($str

)123

124/*

125獲取http的請求包,意義在於獲取別人的攻擊payload

145這裡攔截並記錄攻擊payload

146*/

147function write_attack_log($alert

)"; //

如果請求帶有flag關鍵字,顯示假的flag。(2333333)

154 }else

157exit(0);

158}

159160 ?>

python

1

importos2

3 base_dir = ''#

web路徑45

defscandir(startdir) :67

os.chdir(startdir)

8for obj in

os.listdir(os.curdir) :

9 path = os.getcwd() + os.sep +obj

10if os.path.isfile(path) and

'.php'in

obj:

11 modifyip(path,'

<?php

','<?php\nrequire_once(\'waf.php\');

') #

強行加一句**

12if

os.path.isdir(obj) :

13scandir(obj)

14os.chdir(os.pardir)

1516

defmodifyip(tfile,sstr,rstr):

17try

:18 lines=open(tfile,'r'

).readlines()

19 flen=len(lines)-1

20for i in

range(flen):

21if sstr in

lines[i]:

22 lines[i]=lines[i].replace(sstr,rstr)

23 open(tfile,'w'

).writelines(lines)

2425

except

exception,e:

26printe27

2829 scandir(base_dir)

linux攻防比賽 Linux系統攻防對抗實踐

一 實踐目的 通過linux系統攻防對抗實踐,加深對linux系統的認識,同時掌握linux漏洞入侵和架設防禦的初步方法。二 實踐內容 在metasploit滲透攻擊框架軟體中尋找乙個針對linux系統服務的滲透攻擊模組,在網路安全攻防實驗環境中部署有漏洞的環境 如滲透利用第三方網路服務,需要找到並...

攻防比賽 對於專科高職院校參加攻防比賽的一些建議

最近看到知乎上有兩個相關的問題,但都沒人回答,其實這類問題,也有老師專門發表 研究過,例如基於 ctf競賽 模式的高職資訊保安與管理專業課程體系研究 基於 ctf競賽 模式的高職資訊保安專業實踐教學體系的研究。剛好我們最近也遇到有專科院校的客戶在諮詢這個事情,就順便寫寫個人的幾點看法。其實在技術的角...

網路攻防技術

什麼是網路攻擊?網路攻擊是指利用安全缺陷或不當配置以網路資訊系統的硬體 軟體或通訊協議進行攻擊,損害網路資訊系統的完整性 可用性 機密性和抗抵賴性,導致被攻擊資訊系統敏感資訊洩露 非授權訪問 服務質量下降等後果的攻擊行為。本地攻擊 主動攻擊 被動攻擊和中間人攻擊的特點分別如何?本地攻擊指攻擊者通過接...