版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
PHP全解1- 全解(一)-PHP網(wǎng)頁的安全性問題 方式1、命令注入(CommandInjection)2、eval注入(EvalInjection)4、跨(CrossSiteScripting,XSS)5、SQL注入(SQLinjection)6、跨請(qǐng)求(CrossSiteRequestForgeries,CSRF)7、Session會(huì)話劫持(SessionHijacking)8、Session固定(Session9、HTTP響應(yīng)拆分(HTTPResponseSplitting)10、文件上傳(FileUploadAttack) 穿越(DirectoryTraversal)12、文件包含(RemoteInclusion)13、動(dòng)態(tài)函數(shù)注入(DynamicVariableEvaluation)14、URL(URLattack)15、表單提交(SpoofedFormSubmissions)16、HTTP請(qǐng)求(SpoofedHTTPRequests)幾個(gè)重要的php.ini選Register全解(二)-命令注入命令注入system、exec、passthru、s_exec、“(與s_exec功能相同)stringsystem(stringcommand,intcommand要執(zhí)行return_var存放執(zhí)行命令的執(zhí)行后的狀態(tài)stringexec(stringcommand,array&output,intcommand要執(zhí)行output獲得執(zhí)行命令輸出的每一行字符return_var存放執(zhí)行命令后的voidpassthru(stringcommand,intcommand要執(zhí)行return_var存放執(zhí)行命令后的string _exec(stringcommand要執(zhí)行實(shí)例$dir=$_GET["dir"];if(isset($dir)){echo"<pre>";system("ls-al".$dir);echo"</pre>";}我們提交 提交以后,命令變成了system("ls-al|cateval注入mixedeval(stringcode_str)//eval注入一般發(fā)生在者能控制輸入的字符串的時(shí)$var=if{$arg=$_GET["arg"];eval("\$var=$arg;");echo"\$var=".$var;} 動(dòng)態(tài)函數(shù)funcA(){}func{}if{$myfunc=$_GET["func"];echo$myfunc();}程序員原意是想動(dòng)態(tài)調(diào)用A和B函數(shù),那我們提交htt /ex.php?func=phpinfo漏防范方法3、使用escapes arg函數(shù)來處理命令參數(shù)4、使用safe_mode_exec_dir指定可執(zhí)行文件的路 arg函數(shù)會(huì)將任何引起參數(shù)或命令結(jié)束的字符轉(zhuǎn)義,單引號(hào)“’”,替換成“\’”,雙引號(hào)“"”,替用 指定可執(zhí)行文件的路徑,可以把會(huì)使用令提前放入此路徑safe_mode_exec_dir= 漏洞全解(三)-植客戶端植客戶端植入(ScriptInsertion),是指將可以執(zhí)行的插入到表單、、動(dòng)畫或超文字等對(duì)象內(nèi)。當(dāng)用戶打開這些對(duì)象后,者所植入的就會(huì)被執(zhí)行,進(jìn)而開始??梢员挥米髦踩氲腍TML一般包括以下幾種1、<script>標(biāo)記的javascript和vbscript等頁面程序。在<script>內(nèi)可以指定js程序代碼,也可以在src屬性內(nèi)指定js文件的URL路徑3、<embed>標(biāo)記的對(duì)象。這些對(duì)象是多文件,例如:swf文件。通常在src屬性內(nèi)指定對(duì)象客戶端植入的步1、者普通用戶后登陸實(shí)CREATETABLE`postmessage``id`int(11)NOTNULL`subject`varchar(60)NOTNULLdefault`name`varchar(40)NOTNULLdefault `varchar(25)NOTNULLdefault`postdate`datetimeNOTNULLdefault’0000-00-00PRIMARYKEYENGINE=MyISAMDEFAULTCHARSET=gb2312COMMENT=’使用者的留言AUTO_INCREMENT=69//add.php插入留//list.php留言列//show.php顯示留插入> ";</script>跳轉(zhuǎn)頁面或者使用其他自行構(gòu)造的js代碼進(jìn)行防范的方法stringhtmlspecialcharsstringstring,intquote_stylestringcharset)string是要編碼的字符串qoestye可選值可為PAEN_QOESEN_OUOESPA,EN_QOESEN_NQOTES,charset可選,表示使用的字符&—->&"—->‘—-><—->>—-><?phpechohtmlspecialchars(nl2br($row['question']),ENT_QUOTES);全解(四)-xss跨站跨縮寫為XSS 么他就可以成此用戶來登錄,獲得此用戶的權(quán)限。2、目標(biāo)用戶登錄此,在登陸期間打開了者發(fā)送的xss3、執(zhí)行了此xss4、目標(biāo)用戶頁面跳轉(zhuǎn)到者的,者取得了目標(biāo)用戶的信5、者使用目標(biāo)用戶的信息登錄,完似htt ;</script>,誘騙用戶點(diǎn)擊后,可以獲取用戶s防范方法stringhtmlspecialchars(stringstring,intquote_style,stringstring是要編碼的字符quote_style可選,值可為 charset可選,表示使用的字符集函數(shù)會(huì)將下列特殊字符轉(zhuǎn)換成html編碼&—->&"—->"‘—-><—->>—-><formaction="<?phpecho$_SERVER["PHP_SELF"];?>" get.php中上述的表單. .. .
<formaction=""全解(五)-SQL注入SQL注入果web程序沒有對(duì)提交的數(shù)據(jù)經(jīng)過檢查,那么就會(huì)造成sql注入。SQL注入的一般步驟實(shí)CREATETABLE`postmessage``id`int(11)NOTNULL`subject`varchar(60)NOTNULLdefault`name`varchar(40)NOTNULLdefault `varchar(25)NOTNULLdefault`postdate`datetimeNOTNULLdefault’0000-00-00PRIMARYKEYENGINE=MyISAMDEFAULTCHARSET=gb2312COMMENT=’運(yùn)用者的留言AUTO_INCREMENT=69grantallprivilegesonch3.*to‘sectop’@localhostidentifiedby//add.php插入留//list.php留言列//show.php顯示留頁 .cn/show.php?id=71and//show.php12-15//mysql查詢語$query="select*frompostmessagewhereid=$result=ordie("ySQL查詢語句失?。篴nd1=1,語select*frompostmessagewhereid71and1=1這語句前值后值都為真,and以后也為真,返回查詢到的數(shù)據(jù)and1=2,語select*frompostmessagewhereid71and1=2這語句前值為真,后值為假,and以后為假,查詢不到任何數(shù)據(jù)正常的SQL查詢,經(jīng)過我們構(gòu)造的語句之后,形成了SQL注入。通過這個(gè)注入點(diǎn),我們還可以進(jìn)一步拿到權(quán)限,比如說運(yùn)用union管理,數(shù)據(jù)庫(kù)信息,或者用mysql的load_file,intooutfile等函數(shù)進(jìn)一步滲透。防范方法整型參數(shù)intval函數(shù)將數(shù)據(jù)轉(zhuǎn)換成整數(shù)intintval(mixedvar,intbase,可選,是基礎(chǔ)數(shù),默認(rèn)是浮點(diǎn)型參數(shù)運(yùn)用floatvaldoubleval函數(shù)分別轉(zhuǎn)換單精度和雙精度浮點(diǎn)型參數(shù)intfloatval(mixedintdoubleval(mixedvar是要轉(zhuǎn)換的變量stringaddslashes(stringstr是要檢查的字符//mysql查詢語$query="select*frompostmessagewhereid=$result=ordie("ySQL查詢語句失敗:{$var=}{$var=} 漏洞全解(六)-請(qǐng)跨請(qǐng)求CSRF(CrossSiteRequestForgeries),意為跨請(qǐng)求,也有寫為XSRF。者目標(biāo)用戶擊者利用隱蔽的HTTP連接,讓目標(biāo)用戶在不注意的情況下單擊這個(gè),由于是用戶自己點(diǎn)擊的,而他又是合法用戶擁有合法權(quán)限,所以目標(biāo)用戶能夠在內(nèi)執(zhí)行特定的HTTP,從而達(dá)到者的目的。例如:某個(gè)購(gòu)物商品時(shí),采用/buy.php?item=watch&num=1,item參數(shù)確定要什么物品,num參數(shù)確定要數(shù)量,如果者以隱藏的方式發(fā)送給目標(biāo)用戶<imgsrc="h 以后,的數(shù)量就成了1000個(gè)實(shí) if{$ID_Dele=$sql="deletefrombookwhereidin(".$ID_Dele.")";}{$sql="deletefrombookwhereid=".$id傳遞要?jiǎng)h除ID}echoscriptlanguage=’javascript’>";echo"alert(‘刪除成功!’);";echo"echo<imgsrc="delbook.php?id=2"<imgsrc="delbook.php?id=3"<imgsrc="delbook.php?id=4"<imgsrc="delbook.php?id=5"插入4張分別刪除4個(gè)id留言,然后我們返回首頁瀏覽看,沒有什么變化。。顯示不了者在留言中插入隱藏的,此具有刪除留言的作用,而者自己這些的時(shí)候,是不具限的,所以看不到任何效果,但是當(dāng)管理員登陸后,查看此留言,就會(huì)執(zhí)行隱藏的,{$copyright=$_POST["copyright"]."<br/>設(shè)計(jì)制作:<ahref {$sql="updategly."’where}{$sql="updategly."’,copyright=’".$copyright."’where}echoscriptlanguage=’javascript’>";echo"alert(‘修改成功!’);";echo"echo}這個(gè)文件用于修改管理和設(shè)置的一些信息,我們可以直接構(gòu)造如下表單<formaction=""method="post"name="form1"<inputtype="radio"value="1"<inputtype="radio"name="sh"checked<inputtype="text"name="username"<inputtype="password"name="password"<inputtype="text"name="title"value="隨緣PHP留言V1.0(帶審核功能<textareaname="gg"rows="6"cols="80">安裝使用隨緣網(wǎng)絡(luò)PHP留言板V1.0(帶審核<textareaname="copyright"rows="6"cols="80">隨緣網(wǎng)絡(luò)PHP留言本V1.0:廈門隨緣網(wǎng)絡(luò)科技2005-2009<br/>承接建設(shè)及系統(tǒng)定制提供主機(jī)</textarea>存為attack.html,放到自己上htt 藏這個(gè),管理以后,他的用戶名和全部修改成了root防范方法3、使用POST,不要使用在 {){$serverhost= = = if(strncmp($sourcehost,$serverhost,{echoscriptlanguage=’javascript’>";echo"alert(‘?dāng)?shù)據(jù)來源異常!’);";& echo"echo}}$copyright=$_POST["copyright"]."<br/>設(shè)計(jì)制作:<ahref {$sql="updategly."’where}{$sql="updategly."’,copyright=’".$copyright."’where}echoscriptlanguage=’javascript’>";echo"alert(‘修改成功!’);";echo"echo}檢查內(nèi)置隱藏變量{if{//$post_id=md5(uniqid(rand(),//Session變$_SESSION["post_id"]=}//檢查是否相if{//if($_SESSION["post_id"]!={//POST變echoscriptlanguage=’javascript’>";echo"alert(‘?dāng)?shù)據(jù)來源異常!’);";echo"echo}}<inputtype="resetname="Submit2value重置<inputtype="hidden"name="post_id"value="<?phpecho}使用POST,不要使用傳遞表單字段時(shí),一定要是用POST,不要使用GET,處理變量也不要直接使用PHP漏洞全解(七)-Session劫持服務(wù)端和客戶端之間session(會(huì)話)來連接溝通。當(dāng)客戶端的瀏覽器連接到服務(wù)器后,服務(wù)器就會(huì)是由一個(gè)獨(dú)特的字符sessionid。用戶發(fā)出請(qǐng)求時(shí),所發(fā)送的http表頭內(nèi)包含sessionid的值。服務(wù)器使用http表頭內(nèi)的sessionid來識(shí)別時(shí)哪個(gè)用戶提交的請(qǐng)求。session保存的是每個(gè)用戶的個(gè)人數(shù)據(jù),一般的web應(yīng)用程序會(huì)使用session來保存通過驗(yàn)證的用戶賬號(hào)和。在轉(zhuǎn)換不同的網(wǎng)頁時(shí),如果需要驗(yàn)證用戶,就是用session內(nèi)所保存的賬號(hào)和來比較。session的生命周期從用戶連上服務(wù)器后開始,在用戶關(guān)掉瀏覽器或是注銷時(shí)用戶session_destroy函數(shù)刪session數(shù)據(jù)時(shí)結(jié)束。如果用戶20分鐘內(nèi)沒有使用計(jì)算機(jī)的動(dòng)作,session也會(huì)自動(dòng)結(jié)束。php處理session的應(yīng)用架構(gòu)會(huì)話劫持會(huì)話劫持是指者利用各種來獲取目標(biāo)用戶的sessionid。一旦獲取到sessionid,那么者可以利用目標(biāo)用戶的來登錄,獲取目標(biāo)用戶的操作權(quán)限。1):嘗試各種sessionid,直到為止計(jì)算:如果sessionid使用竊取:使用網(wǎng)絡(luò)截獲,xss等方法獲會(huì)話劫持的步實(shí)if{$link=mysql_connect("localhost","root",ordie("無法MySQL數(shù)據(jù)庫(kù)連接:mysql_error());mysql_select_db("cms")ordie("無法選擇MySQL數(shù)據(jù)庫(kù)if{$query="select*frommemberwhereusername=’". "’andpassword=’".addslashes($_POST["password"]).}{$query="select*frommemberwhereusername=’".$_POST["username"]"’andpassword=’".$_POST["password"].}$result=ordie("MySQL查詢語句失敗:$match_count=mysql_num_rows($result);if($match_count){$_SESSION["username"]=$_SESSION["password"]=$_SESSION["book"]=1; }//Session訪客的SessionID是:<?phpechosession_id訪客:<?phpechohtmlspecialchars($_GET["user"],ENT_QUOTES);book商品的數(shù)量:<?phpechohtmlspecialchars($_SESSION["book"],ENT_QUOTES);$_SESSION["username保存賬$_SESSION["password#_SESSION["book"]保存商品數(shù)//Sessionecho目標(biāo)用戶SessionID是:session_idbrecho目標(biāo)用戶username是:$_SESSION["usernamebrechopassword是:$_SESSION["passwordbr//book的數(shù)量設(shè)置$_SESSION["book"]=提交此ID為獲取session固定可以使用把sessionid發(fā)給用戶的然 者 防范方法session函數(shù)boolsession_regenerate_id([boolindex.php開頭加2)更改session的名稱session的默認(rèn)名稱是PHPSE,此變量會(huì)保存在 中,如果不抓包分析,就不能猜到這個(gè)session透明化sessionid指當(dāng)瀏覽器中的http請(qǐng)求沒有使用 s來制定sessionid時(shí),sessioinid使用來傳遞;打開php.ini,編輯session.use_trans_sid=int_set("session.use_trans_sid",0); session.use_s=1表示使 s存放sessionsession.use_only_s=1表示只使用 s存放sessionid,這可以避免session固定 int_set("session.use_only_s",1);p>5)使用URL傳遞隱藏參數(shù)$seid=md5(uniqid(rand()),$_SESSION["seid"]=否是web程序自己調(diào)用的。PHP漏洞全解(八)-HTTP響應(yīng)拆分HTTP請(qǐng)求的格式/面例子發(fā)送HTTP請(qǐng)求給服務(wù)器GET/index.phpHTTP/1.1↙ //↙↙符號(hào)表示回車鍵,在空白行之后還要在按一個(gè)空格才會(huì)發(fā)送HTTP請(qǐng)求,HTTP請(qǐng)求的表頭中只Host表頭是必要的餓,其余的HTTP表頭則是根據(jù)HTTPHTTP請(qǐng)求的方法HEAD:與GETPOST:發(fā)送數(shù)據(jù)給服務(wù)器處理,數(shù)據(jù)包含在HTTPOPTIONS:返回服務(wù)器所支持的HTTP請(qǐng)求CONNECT:將HTTP請(qǐng)求的連接轉(zhuǎn)換成透明的TCP/IP通HTTP響應(yīng)的格式服務(wù)器在處理完客戶端所HTTP請(qǐng)求后,會(huì)發(fā)送下列響應(yīng)HTTP/1.1200HTTP請(qǐng)求和響應(yīng)的例子打開cmd輸 net,輸入 GET/index.php↙返回HTTP響應(yīng)的表PHP來發(fā)送HTTP請(qǐng)求voidheader(stringstringboolreplaceinthttp_response_code]])string是HTTP表頭的字符串為http_response_codeHTTP響應(yīng)碼使用http_response_code的值//Internetsocket連$fp= HTTPfputs($fp,"GET/HTTP/1.1\r\n");fputs($fp,"Host: while{//256位的HTTP響應(yīng)字符}//Internetsocket連HTTPechoHTTP響應(yīng)拆分HTTP響應(yīng)拆分是由于者經(jīng)過精心設(shè)計(jì)利用電子郵件或者,讓目標(biāo)用戶利用一個(gè)請(qǐng)求產(chǎn)生兩個(gè)響應(yīng),前一個(gè)響應(yīng)是服務(wù)器的響應(yīng),而后一個(gè)則是者設(shè)計(jì)的響應(yīng)。此之所以會(huì)發(fā)生,是因?yàn)閃EB程序?qū)⑹褂谜叩臄?shù)據(jù)置于HTTP響應(yīng)表頭中,這些使用者的數(shù)據(jù)是有者精心設(shè)計(jì)的??赡蹾TTP請(qǐng)求響應(yīng)拆分的函數(shù)包括以下幾個(gè) HTTP響應(yīng)拆分通常發(fā)生在:Set-表頭:將使用者的數(shù)據(jù)寫入 header("Location:".GET/location.php?page=h Host:localhost↙HTTP/1.1302Date:Wed,13Jan201003:44:24Server:Apache/2.2.8(Win32)PHP/5.2.6X-Powered-By:PHP/5.2.6Location:hContent-Length:0Keep-Alive:timeout=5,max=100Connection:Keep-AliveContent-Type:.Content-Typetext/htmlH
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025護(hù)色劑批發(fā)合同書
- 2025北京房屋個(gè)人租賃合同
- 2025版高速公路橋梁建設(shè)工程施工合同復(fù)雜條款詳述2篇
- 室內(nèi)裝修合同常用版范本
- 正規(guī)醫(yī)學(xué)生的實(shí)習(xí)合同5篇
- 二零二五年度旅游公司法人代表聘任合同
- 2025年度文化旅游貸款合同
- 二零二五年度診所護(hù)士規(guī)范化培訓(xùn)及聘用合同
- 2025年度離職員工離職時(shí)簽訂的保密及競(jìng)業(yè)禁止合同
- 2025年度股權(quán)眾籌項(xiàng)目分配與管理合同
- 2025理論學(xué)習(xí)計(jì)劃2025年理論中心組學(xué)習(xí)計(jì)劃
- 2025年醫(yī)美醫(yī)院公司組織架構(gòu)和業(yè)務(wù)流程
- 山西省2024年中考物理試題(含答案)
- 春節(jié)節(jié)后收心安全培訓(xùn)
- 高中物理斜面模型大全(80個(gè))
- 2025年高考物理復(fù)習(xí)壓軸題:電磁感應(yīng)綜合問題(解析版)
- 2024-2030年芯片行業(yè)市場(chǎng)發(fā)展分析及發(fā)展趨勢(shì)前景預(yù)測(cè)報(bào)告
- 2024年個(gè)人車位租賃合同經(jīng)典版(二篇)
- 2024-2030年中國(guó)汽車駕駛培訓(xùn)市場(chǎng)發(fā)展動(dòng)態(tài)與前景趨勢(shì)預(yù)測(cè)報(bào)告
- 中鐵十四局合同范本
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)單元測(cè)試題及參考答案
評(píng)論
0/150
提交評(píng)論