轉自:http://www.freebuf.com/sectool/95683.htmljavascript
答:fottify全名叫:Fortify SCA ,是HP的產品 ,是一個靜態的、白盒的軟件源代碼安全測試工具。它經過內置的五大主要分析引擎:數據流、語義、結構、控制流、配置流等對應用軟件的源代碼進行靜態的分析,分析的過程當中與它特有的軟件安全漏洞規則集進行全面地匹配、查找,從而將源代碼中存在的安全漏洞掃描出來,並給予整理報告。php
答:FortifySCA支持的21語言,分別是: html
1. asp.net
2. VB.Net
3. c#.Net
4. ASP
5. VBscript
6. VS6
7.java
8.JSP
9.javascript
10. HTML
11. XML
12. C/C++
13.PHP
14.T-SQL
15.PL/SQL
16. Action script
17. Object-C (iphone-2012/5)
18. ColdFusion5.0 - 選購
19. python -選購
20. COBOL - 選購
21.SAP-ABAP -選購
答:不是,是收費的。固然網上也沒有破解的。貌似他一個月收費10萬。java
安裝fortify以後,打開python
界面:mysql
選擇高級掃描sql
他問要不要更新? 我就選擇No,由於這是我私人的,我是在2015年7月份購買的試用期爲1個月。怕更新了就用不了了。若是你購買了能夠選擇YES。數據庫
選擇以後出現以下界面c#
瀏覽意思是:掃描以後保存的結果保存在哪一個路徑。安全
而後點擊下一步。
參數說明:
enable clean :把上一次的掃描結果清楚,除非換一個build ID,否則中間文件可能對下一次掃描產生影響。
enable translation: 轉換,把源碼代碼轉換成nst文件
-64: 是掃描64位的模式,sca默認掃描是32位模式。
-Xmx4000m:4000M大概是4G,制定內存數-Xmx4G :也能夠用G定義這個參數建議加
-encoding: 定製編碼,UTF-8比較全,工具解析代碼的時候指定字符集轉換的比較好,建議加,若是中文註釋不加會是亂碼。
-diable-source-:rendering:不加載與漏洞無關的代碼到審計平臺上,不建議加,這樣代碼顯示不全。
而後點擊下一步
它說:這是一個J2EE Web應用
選擇No (由於你掃的是PHP)
而後scan(開始掃描)
Always run in background 意思:老是在後臺運行
run in background 意思:後臺運行
cancel 意思 : 取消
Details 意思:細節
掃完以後:
none 表明其餘 1個
A1 注入 7個
A3 xss 37個
A4 不安全的直接對象引用 35個
A6 敏感數據暴露 4個
A10 未驗證的重定向和轉發 2個
若是發現是英文的,想改爲以下方法中文:
如下是官網提供的分析圖:
這是一個可變變量,按照中國人說法簡稱:「變量覆蓋」。
講一下這個漏洞的原理:
可變變量
$first ="hello"; $hello ="world"; echo $first." ".$$first;
結果是 hello world
$$first就是$hello,由於$first的值是hello
———————————可是在foreach 就不同了—————————————————–
<?php $a = 'sss'; foreach ($_GET as $key => $value) { //若是在foreach那就不同了 echo $$key; //將$$區分開 而後$key 等於鍵 而後開始合併 好比打開http://www.com.com/demo.php?a=值 就變成了$a 由於$key的鍵是a 因此就變成了$a $$key = $value;//$a = 值 替換變量 } echo '<hr '>'; echo $a; ?>
發現$c變量是由客戶端進行GET請求控制的。
safe_replace函數過濾以下字符:
function safe_replace($string) { $string = str_replace('%20','',$string); $string = str_replace('%27','',$string); $string = str_replace('%2527','',$string); $string = str_replace('*','',$string); $string = str_replace('"','"',$string); $string = str_replace("'",'',$string); $string = str_replace('"','',$string); $string = str_replace(';','',$string); $string = str_replace('<','<',$string); $string = str_replace('>','>',$string); $string = str_replace("{",'',$string); $string = str_replace('}','',$string); $string = str_replace('\\','',$string); return $string; }
include $c.".php"; 可是後面有個.php是拼接的。
可是若是php版本小於5.3.40能夠採用空字節也就是%00的二進制視做字符串的結束,按照其餘說法的話也就是截斷。。。。。
$field_sql="update ".DB_PRE."member set {$field_sql} where userid={$last_id}"; $query=$this->mysql->query($field_sql);
寫入數據庫的時候沒有任何限制或者輸出的時候沒有作任何的過濾就直接輸出致使形成了XSS。(我就不一一解釋了)
文件上傳次數未作策略,可致使攻擊。
這裏我就不去定位看誰使用這個函數了,懂點PHP的人相信都懂。。
整個過程基本已經結束了,可是有點我想提醒你們,在設置內存的時候若是你不設置內存他會自動幫你設置,好比你的電腦內存是8G 他就自動設置爲8G 而後就會佔用你8G內存,而後搞得你電腦卡卡卡卡卡卡卡的。下次掃以前記得要設置你的內存,若是你電腦是8G內存 設置7G就行了,還剩下1G就能夠玩4399小小遊戲了。 ~_~