次去打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
1importos2
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競賽 模式的高職資訊保安專業實踐教學體系的研究。剛好我們最近也遇到有專科院校的客戶在諮詢這個事情,就順便寫寫個人的幾點看法。其實在技術的角...
網路攻防技術
什麼是網路攻擊?網路攻擊是指利用安全缺陷或不當配置以網路資訊系統的硬體 軟體或通訊協議進行攻擊,損害網路資訊系統的完整性 可用性 機密性和抗抵賴性,導致被攻擊資訊系統敏感資訊洩露 非授權訪問 服務質量下降等後果的攻擊行為。本地攻擊 主動攻擊 被動攻擊和中間人攻擊的特點分別如何?本地攻擊指攻擊者通過接...