當前位置:首頁 » 編程語言 » url存在sql注入漏洞
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

url存在sql注入漏洞

發布時間: 2022-08-22 15:39:00

sql注入漏洞有哪些

SQL注入漏洞有哪些

SQL注入攻擊是當今最危險、最普遍的基於Web的攻擊之一。所謂注入攻擊,是攻擊者把SQL命令插入到Web表單的輸入域頁面請求的查詢字元串中,如果要對一個網站進行SQL注入攻擊,首先需要找到存在SQL注入漏洞的地方,也是尋找所謂的注入點。SQL注入點一般存在於登錄頁面、查找頁面或添加頁面等用戶可以查找或修改數據的地方。

SQL注入漏洞有哪些

最常用的尋找SQL注入點的方法,是在網站中尋找如下形式的頁面鏈接:http://www.xxx.com/xxx.asp?id=YY,其中「YY」可能是數字,也有可能是字元串,分別被稱為整數類型數據或者字元型數據。在本章中我們主要針對整數型數據進行SQL注入講解。

通常可以使用以下兩種方法進行檢測,判斷該頁面鏈接是否存在SQL注入漏洞。

加引號」法

在瀏覽器地址欄中的頁面鏈接地址後面增加一個單引號,如下所示:http://www.xxx.com/xxx.asp?id=YY』,然後訪問該鏈接地址,瀏覽器可能會返回類似於下面的錯誤提示信息:Microsoft JET Database Engine 錯誤』80040e14』,字元串的語法錯誤在查詢表達式』ID=YY』中。

如圖所示,頁面中如果返回了類似的錯誤信息,說明該網站可能存在SQL注入攻擊的漏洞。

如果沒有注入點的存在,也很容易判斷。

述兩種鏈接一般都會有程序定義的錯誤提示,或提示類型轉換時出錯。

再次提醒:可能的SQL注入點一般存在於登錄頁面、查找頁面或添加頁面等用戶可以查找或修改數據的地方

② 如何用sqlmap掃描sql注入漏洞

下載sqlmap
打開http://sqlmap.org/並下載

安裝sqlmap
解壓下載的sqlmap壓縮包,裡面是sqlmap源碼,無需安裝,可直接使用

3
使用sqlmap
對於存在漏洞的url如:http://www.xxxxx.com/abc.php?id=1
打開cmd在sqlmap目錄下輸入如下語句:python sqlmap.py -u http://www.xxxxx.com/abc.php?id=1

③ asp程序存在SQL注入漏洞如何處理

你都知道有SQL注入了,就在傳值那處理好別人提交的數據,把特殊符號過濾掉 我找了一些函數你看看1、SQL注入漏洞可謂是「千里之堤,潰於蟻穴」,這種漏洞在網上極為普遍,通常是由於程序員對注入不了解,或者程序過濾不嚴格,或者某個參數忘記檢查導致。在這里,我給大家一個函數,代替ASP中的Request函數,可以對一切的SQL注入Say NO,函數如下: Function SafeRequest(ParaName,ParaType)
'--- 傳入參數 ---
'ParaName:參數名稱-字元型
'ParaType:參數類型-數字型(1表示以上參數是數字,0表示以上參數為字元) Dim ParaValue
ParaValue=Request(ParaName)
If ParaType=1 then
If not isNumeric(ParaValue) then
Response.write "參數" & ParaName & "必須為數字型!"
Response.end
End if
Else
ParaValue=replace(ParaValue,"'","''")
End if
SafeRequest=ParaValue
End function 2、幾年時間,當年的伙計已經成為一個國內知名黑客組織的站長,在他的程序有也有些放黑的代碼,貼出來給朋友們提提供個方便<%
rem 檢查sql字元串中是否有單引號,有則進行轉化
function CheckStr(str)
dim tstr,l,i,ch
l=len(str)
for i=1 to l
ch=mid(str,i,1)
if ch="'" then
tstr=tstr+"'"
end if
tstr=tstr+ch
next
CheckStr=tstr
end function
%><%
''--------定義部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
''自定義需要過濾的字串,用 "防" 分隔
Fy_In = "''防;防and防exec防insert防select防delete防update防count防*防%防chr防mid防master防truncate防char防declare防<防>防=防|防-防_"
Fy_Inf = split(Fy_In,"防")
If Request.Form<>"" Then
For Each Fy_Post In Request.FormFor Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('網長友情提示黑客大俠↓\n\n請不要在參數中包含非法字元嘗試注入攻擊本站,本站做起來很不容易的.俺是菜鳥,好怕怕,放俺一馬吧\n\nQQ:6407443\n\n有話好話,請用QQ和俺聯系');</Script>"Response.Write "非法操作!本站已經給大俠您做了如下記錄↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作時間:"&Now&"<br>"
Response.Write "操作頁面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:POST<br>"
Response.Write "提交參數:"&Fy_Post&"<br>"
Response.Write "提交數據:"&Request.Form(Fy_Post)
Response.End
End If
Next
Next
End If
If Request.QueryString<>"" Then
For Each Fy_Get In Request.QueryString
For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
Response.Write "<Script Language=JavaScript>alert('網長友情提示黑客大俠↓\n\n請不要在參數中包含非法字元嘗試注入攻擊本站,本站做起來很不容易的.俺是菜鳥,好怕怕,放俺一馬吧\n\nQQ:6407443\n\n有話好話,請用QQ和俺聯系');</Script>"
Response.Write "非法操作!本站已經給大俠您做了如下記錄↓<br>"
Response.Write "操作IP:"&Request.ServerVariables("REMOTE_ADDR")&"<br>"
Response.Write "操作時間:"&Now&"<br>"
Response.Write "操作頁面:"&Request.ServerVariables("URL")&"<br>"
Response.Write "提交方式:GET<br>"
Response.Write "提交參數:"&Fy_Get&"<br>"
Response.Write "提交數據:"&Request.QueryString(Fy_Get)
Response.End
End If
Next
Next
End If
%>
<%
dim conn
dim connstr
on error resume next
'DBQ="+server.mappath("admin/admins_news.mdb")+";
'"driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("db.MDB")
set conn=server.createobject("ADODB.CONNECTION")
connstr="DBQ="+server.mappath("admin/admins_news.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
%>3、通用的SQL防注入程序一般的http請求不外乎get 和 post,所以只要我們在文件中過濾所有post或者get請求中的參數信息中非法字元即可,所以我們實現http 請求信息過濾就可以判斷是是否受到SQL注入攻擊。
IIS傳遞給asp.dll的get 請求是是以字元串的形式,,當 傳遞給Request.QueryString數據後,asp解析器會分析Request.QueryString的信息,,然後根據"&",分出各個數組內的數據所以get的攔截如下:
首先我們定義請求中不能包含如下字元:

引用:
--------------------------------------------------------------------------------

|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare

--------------------------------------------------------------------------------

各個字元用"|"隔開,,然後我們判斷的得到的Request.QueryString,具體代碼如下 :

引用:
--------------------------------------------------------------------------------

dim sql_injdata
SQL_injdata = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare"
SQL_inj = split(SQL_Injdata,"|")
If Request.QueryString<>"" Then
For Each SQL_Get In Request.QueryString
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.QueryString(SQL_Get),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=****>alert('天下電影聯盟SQL通用防注入系統提示↓nn請不要在參數中包含非法字元嘗試注入!');history.back(-1)</Script>"
Response.end
end if
next
Next
End If

--------------------------------------------------------------------------------

這樣我們就實現了get請求的注入的攔截,但是我們還要過濾post請求,所以我們還得繼續考慮request.form,這個也是以數組形式存在的,我們只需要再進一次循環判斷即可。代碼如下:

引用:
--------------------------------------------------------------------------------

If Request.Form<>"" Then
For Each Sql_Post In Request.Form
For SQL_Data=0 To Ubound(SQL_inj)
if instr(Request.Form(Sql_Post),Sql_Inj(Sql_DATA))>0 Then
Response.Write "<Script Language=****>alert('天下電影聯盟SQL通用防注入系統提示↓nn請不要在參數中包含非法字元嘗試注入!</Script>"
Response.end
end if
next
next
end if 4、以下代碼是網上流行的楓葉防SQL注入通用版的代碼,我在原來的基本上去掉一些內容,使之簡單化.以代碼拷進記事本,另存為asp文件。然後在資料庫連接文件那裡加上包含代碼就行了,例如:
<!-- #include file="文件名" -->

以下是代碼
<%
\'--------定義部份------------------
Dim Fy_Post,Fy_Get,Fy_In,Fy_Inf,Fy_Xh,Fy_db,Fy_dbstr
\'自定義需要過濾的字串,用 "楓" 分隔
Fy_In = "\'楓;楓and楓exec楓insert楓select楓delete楓update楓count楓*楓%楓chr楓mid楓master楓truncate楓char楓declare"
\'----------------------------------
%>

<%
Fy_Inf = split(Fy_In,"楓")
\'--------POST部份------------------
If Request.Form<>"" Then
For Each Fy_Post In Request.Form

For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.Form(Fy_Post)),Fy_Inf(Fy_Xh))<>0 Then
Response.write"非法入侵"
Response.End
End If
Next

Next
End If
\'----------------------------------

\'--------GET部份-------------------
If Request.QueryString<>"" Then
For Each Fy_Get In Request.QueryString

For Fy_Xh=0 To Ubound(Fy_Inf)
If Instr(LCase(Request.QueryString(Fy_Get)),Fy_Inf(Fy_Xh))<>0 Then
Response.write"非法入侵"
Response.End
End If
Next
Next
End If
%>

\'----------代碼結束-------------

以上代碼重點在
Response.write"非法入侵"

你可以修改成通用的:
Response.write"處理url地址有錯誤,請與管理員聯系"
也就是有人想入侵,就會提示"處理url地址有錯誤,請與管理員聯系"

④ 信息安全試題 什麼是sql注入漏洞

SQL是操作資料庫數據的結構化查詢語言,網頁的應用數據和後台資料庫中的數據進行交互時會採用SQL。而SQL注入是將Web頁面的原URL、表單域或數據包輸入的參數,修改拼接成SQL語句,傳遞給Web伺服器,進而傳給資料庫伺服器以執行資料庫命令。如Web應用程序的開發人員對用戶所輸入的數據或cookie等內容不進行過濾或驗證(即存在注入點)就直接傳輸給資料庫,就可能導致拼接的SQL被執行,獲取對資料庫的信息以及提權,發生SQL注入攻擊。
SQL注入漏洞有什麼特點?
1、廣泛性:任何一個基於SQL語言的資料庫都可能被攻擊,很多開發人員在編寫Web應用程序時未對從輸入參數、Web表單、Cookie等接受到的值進行規范性驗證和檢測,通常會出現SQL注入漏洞。
2、隱蔽性:SQL注入語句一般都嵌入在普通的HTPP請求中,很難與正常語句區分開,所以當前許多防火牆都無法識別予以警告,而且SQL注入變種極多,攻擊者可以調整攻擊的參數,所以使用傳統的方法防禦SQL注入效果非常不理想。
3、危害大:攻擊者可以通過SQL注入獲取到伺服器的庫名、表名、欄位名,從而獲取到整個伺服器中的數據,對網站用戶的數據安全有極大的威脅。攻擊者也可以通過獲取到的數據,得到後台管理員的密碼,然後對網頁頁面進行惡意篡改。這樣不僅對資料庫信息安全造成嚴重威脅,對整個資料庫系統安全也有很大的影響。
4、操作方便:互聯網上有很多SQL注入工具,簡單易學、攻擊過程簡單,不需要專業的知識也可以自如運用。

⑤ SQL注入漏洞URL跳轉後,還算SQL注入漏洞嗎

看你們的項目質量控制如何
如果QC那邊很嚴格,只要存在注入的可能,都算注入漏洞;如果不是很嚴格,這樣的就不算。

實際開發中需要盡量避免。

⑥ php網站在檢測時總是提示網站存在sql注入漏洞

1,用正則表達式過濾一些SQL注入關鍵字。
2,盡量使用參數形式,少用拼湊型SQL語句
3,條件可以的話,請使用存儲過程操作資料庫.
4,轉換參數類型.如是參數是數字型,則轉換成數字型的才操作
public class AntiSqlInAttack
{
public System.Web.HttpRequest request;

public AntiSqlInAttack(System.Web.HttpRequest request)
{
this.request = request;
}

public bool CheckBadQuery()
{
//整串字元對比方法
//string badword = ";|'|*|%| and |20%and20%| master |20%master20%|exec|insert|select|delete|count|chr|mid|truncate|char|declare|update";
//string query = request.ServerVariables["Query_String"].ToString();
//string[] badwordArry = badword.Split(new char[] { '|' });
//for (int i = 0; i < badwordArry.Length; i++)
//{
// string tempWord = badwordArry[i].Trim();
// if (query.IndexOf(tempWord) >= 1)
// return true;
//}
//return false;
if (request.QueryString.Count != 0)
{
for (int i = 0; i < request.QueryString.Count; i++)
{
if (CheckBadWord(request.QueryString[i].ToString()))
return true;
}
}
return false;
}

public bool CheckBadForm()
{
if (request.Form.Count > 0)
{
for (int i = 0; i < request.Form.Count; i++)
{
if (CheckBadWord(request.Form[i]))
return true;
}
}
return false;
}

public bool CheckBadWord(string str)
{
string pattern = @"select|insert|delete|from|count\(|drop table|update|truncate|asc\(|mid\(|char\(|xp_cmdshell|exec master|netlocalgroup administrators|:|net user|""|or|and";
if (Regex.IsMatch(str, pattern, RegexOptions.IgnoreCase) || Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']"))
return true;
return false;
}

/**//// <summary>
/// 反SQL注入
/// </summary>
public void AntiSqlInjectionAttack()
{
if (CheckBadQuery() || CheckBadForm())
{
string msg = string.Empty;
msg += "<span style='font-size:12px;'>非法操作!系統做了如下記錄!<br>";
msg += "操作IP:" +Utils.GetRealIP()+ "<br>";
msg += "操作時間:" + DateTime.Now + "<br>";
msg += "頁面:" + request.ServerVariables["URL"].ToLower() + "<br>";
msg += "<a href=\"#\" onclick=\"history.back()\">返回上一頁</a></span>";
MessageBox.ResponseWrite(msg, true);
}
}

}

⑦ 網站存在SQL注入漏洞(盲目),應該怎麼修復啊,我按照360提示的方法做網站就打不開淘客鏈

這種情況兩種原因,第一是你的程序問題沒有處理好鏈接,最好對Url進行編碼。第二就是空間的安全性問題。

⑧ 簡單分析什麼是SQL注入漏洞

SQL是操作資料庫數據的結構化查詢語言,網頁的應用數據和後台資料庫中的數據進行交互時會採用SQL。
SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令。它是利用現有應用程序,將惡意的SQL命令注入到後台資料庫引擎執行的能力,它可以通過在Web表單中輸入SQL語句得到一個存在安全漏洞的網站上的資料庫,而不是按照設計者意圖去執行SQL語句。

⑨ sqlmap是如何判斷url存在sql注入漏洞的

先准備好MS SQLServer和MySQL的jdbc驅動。 在Oracle SQLDeveloper引入驅動: 工具--首選項--資料庫--第三方jdbc驅動程序 最後在新建鏈接時,就可以看到sqlserver和mysql的標簽了。