我們已經知道為什麼出現注入了,那麼如何判斷乙個提交變數的資料庫查詢存在注入漏洞呢?
我們看到select * from admin where id=1像這樣的查詢語句如果我們在後面加個「」就會導致程式程式因為不匹配「」出現語法錯誤。
而在前台輸入會由於conn.asp
這裡我們把容錯語句on error resume next
雖然這樣是可以判斷是否出現注入的,但是並不是所有的程式加上「」出現錯誤都是注入漏洞的。修改sql.asp
set rs=server.createobject("adodb.recordset")
sql="select * from admin where id="&cint(request("id"))
response.write "sql:"&sql
rs.open sql,conn,1,2
if rs.eof or rs.bof then
response.write "
"else
response.write "
"&rs("username")
end if
rs.close
set rs=nothing
set conn=nothing
%>
上面**只在requestcintcint
這樣就會因為錯誤而導致不可執行,但是我們並不能就由此判斷因為cintidconn.aspsql
在圖中已經看到了,雖然cintsqlcint
所以利用「」並不能準確的判斷sqlsqlsqlandand1=11=21=11=212sqlselect * from admin where id=1 and 1=1,select * from admin where id=1是真而後面的1=1
當我們的sqlselect * from admin where id=1 and 1=2select * from admin where id=1肯定還是為真,但是後面的的1=2sql
而當新增過濾數字型別函式cintsql
SQL注入 判斷注入
web應用程式對使用者輸入的資料校驗處理不嚴或者根本沒有校驗,致使使用者可以拼接執行sql命令。可能導致資料洩露或資料破壞,缺乏可審計性,甚至導致完全接管主機。sql注入是將使用者輸入的資料當作了sql語句放入了資料庫執行。xss是將使用者輸入的資料當作了html語句放到了頁面上執行。order b...
判斷注入型別
1 數字型注入 當輸入的引數為整形時,如果存在注入漏洞,可以認為是數字型注入。測試步驟 1 加單引號,url www.text.com text.php?id 3 對應的sql select from table where id 3 這時sql語句出錯,程式無法正常從資料庫中查詢出資料,就會丟擲異...
判斷注入型別 字元型注入
當輸入的引數為字串是,並且存在注入,可稱為字元型注入,字元型和數值型的區別在於數值不需要單引號閉合,而字元型都需要單引號閉合。例如 數值型 select from news where id 1 則這字元型 select from news where title abcd 以上可以看出,在構造pa...