❶ web頁面怎樣做sql注入測試
直接在地址欄輸入表達式進行測試.
示例:www.xx。net?id=1'or'1'='1
❷ 如何檢查sql注入問題
SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令!查漏洞可以去網路里打iiscan,登錄億思官網,裡面有免費的網站安全檢測,可以查漏洞的!!!
❸ 掃描發現一個SQL注入,請問如何驗證這個注入,請給我詳細過程,謝謝,好的話還可以加分
掃描是如何進行的,驗證是否存在也是一樣的!
掃描是用某一地址後加上了and 1=1取得的結果進行與and 1=2取得的結果進行比較而確認存在的!有時直接可以對and 1=2進行分析.如果內容沒有顯示完或是顯示有部分錯誤時,一般會報資料庫錯誤!可以知道這存在一個SQL 注入的!
然後就是直接的注入了!以手動為例,第一步猜表名:使用(select count(*) from admin)>0將語句中的1=2代替,查看反回結果,若是與1=2的界面一樣出現錯誤或是顯示不完全,則說明不存在admin表,一步一步到試表名,常用的一般是admin,administrator,manager等表名的!
第二步從猜到的表名中猜列名
(select count(*) from admin where len(username)>=1)>0
如果顯示完全則表明存在username列名,當然還要猜一個密碼的列名,一個是user,username之類,密碼是password之類.
第三步,從猜到的表名或列名中猜管理員的名稱.
如果是論壇的形式,有些設計上有不好的地方,就是管理員在論壇中發言的那個名稱往往就是管理員的名稱,因為圖省事,發言所用的昵稱與登陸所用的用戶名是同一個.如果是,則好辦,否則也是猜的!
一般我會找一個最長的管理員名稱猜或者先猜出長度!如:len(username)>=5時正常,而大於等於6時出錯!那麼長度一定是5位!
然後用
(select count(*) from admin where len(username)=5 and left(username,1)>='a')>0
出錯則第一個字元小於a,根據字元的編碼去猜吧,可以找到猜到left(username,1)>="A"時正常,而>="B"時不正常.那麼第一個字元就是"A",直到5個都猜完,比如得到"Admin"就知道了其用戶名!
第四步猜密碼:
(select count(*) from admin where username ='Admin' and left(password,1)>='a')>0
同樣的方式可以猜到密碼,最好先猜一下密碼長度,如果是16位或是32位時往往使用了MD5加密,猜到的是加密過的字元而不是真正的密碼!
第五步,其實第五步也是提前確認的,不然我們作的都是無用功!找後台登陸頁面.
在後台登陸,當然如果網站為了安全,使用了JS先對密碼進行加密的話,可以讓JS不運行或是下載頁面進行改造,不讓其加密你的密碼,這時你可以在密碼中直接輸入第四步的MD5的值.如果密碼是明文傳播,也就是在伺服器端進行校驗時,只有將第四步得到的MD5匹配,不叫反解MD不能反解,但可以在網站上得到一個匹配,也就是說某一個密碼可以生成同樣的MD5值,那這個密碼就可以用!當然,如果明文存在資料庫中就更好玩了!直接輸入吧!
第六步,進入後台後,添加管理員帳戶!以後想怎麼玩就怎麼玩,要是一個不細心的網管,再不查一下後台的管理員,你想他的後果是什麼?
第七步,可能嗎?大部分的管理員不是弱智,所以第六步往往只是一個障眼法!因為添加管理員很容易被發現的!添加木馬程序!或者寫一個頁面,這個頁面的名字與地址你自己記好,然後隱藏,一般管理員都不會在意的!這個頁面是顯示其特定資料庫的!你也想了顯示哪個呢?肯定管理員了!
以後你也登陸,如果添加的帳戶登陸不上,就調用那個隱藏的地址,顯示出真正管理員的密碼或是MD5值,同上邊一樣登陸進行!再建一個管理員迷惑他!
當然,如果資料庫允許插入的話,也好玩!不必狂管理員的帳戶與密碼,直接使用insert into語句插入一個管理員和密碼就可以了!但是由於admin表中除這兩項外,還有不允許為空時我們要麼再猜其他欄位(這個很難),很難插入的!
如果是SQL資料庫,而他們開的恰恰又是sa帳戶的話,好玩的事更多了!因為sa的許可權很大,直接可以從系統表中查詢各個表的名稱等,
這只是手動的一個例子,做為新手可以實現注入.但記著不要給人家網站添麻煩,都不容易!
❹ SQL注入點檢測
WebCruiser - Web Vulnerability Scanner (Web應用漏洞掃描器)
WebCruiser - Web Vulnerability Scanner, a compact but powerful web security scanning tool! It has a Crawler and Vulnerability Scanner(SQL Injection, Cross Site Scripting, XPath Injection etc. ). It can support not only scanning website, but also Prooving of concept for web vulnerabilities: SQL Injection, Cross Site Scripting, XPath Injection etc. WebCruiser是一個小巧但功能不凡的Web應用漏洞掃描器,它能夠對整個網站進行漏洞掃描,並能夠對發現的漏洞(SQL注入,跨站腳本,XPath注入等)進行驗證;它也可以單獨進行漏洞驗證,作為SQL注入工具、XPath注入工具、跨站檢測工具使用。
功能簡介:
* 網站爬蟲(目錄及文件);
* 漏洞掃描(SQL注入,跨站腳本,XPath注入);
* 漏洞驗證(SQL注入,跨站腳本,XPath注入);
* SQL Server明文/欄位回顯/盲注;
* MySQL欄位回顯/盲注;
* Oracle欄位回顯/盲注;
* DB2欄位回顯/盲注;
* Access欄位回顯/盲注;
* 管理入口查找;
* GET/Post/Cookie 注入;
* 搜索型注入延時;
* 自動從自帶瀏覽器獲取Cookie進行認證;
* 自動判斷資料庫類型;
* 自動獲取關鍵詞;
* 多線程;
* 高級:代理、敏感詞替換/過濾;
* 報告;
---------------------------------------------------
Function:
* Crawler(Site Directories And Files);
* Vulnerability Scanner(SQL Injection, Cross Site Scripting, XPath Injection etc.);
* POC(Proof of Concept): SQL Injection, Cross Site Scripting, XPath Injection etc.;
* GET/Post/Cookie Injection;
* SQL Server: PlainText/FieldEcho(Union)/Blind Injection;
* MySQL/Oracle/DB2/Access: FieldEcho(Union)/Blind Injection;
* Administration Entrance Search;
* Time Delay For Search Injection;
* Auto Get Cookie From Web Browser For Authentication;
* Report Output.
❺ 如何防範SQL注入漏洞及檢測
SQL注入漏洞攻擊的防範方法有很多種,現階段總結起來有以下方法:
(1)數據有效性校驗。如果一個輸入框只可能包括數字,那麼要通過校驗確保用戶輸入的都是數字。如果可以接受字母,那就要檢查是不是存在不可接受的字元,最好的方法是增加字元復雜度自動驗證功能。確保應用程序要檢查以下字元:分號、等號、破折號、括弧以及SQL關鍵字。另外限製表單數據輸入和查詢字元串輸入的長度也是一個好方法。如果用戶的登錄名最多隻有10個字元,那麼不要認可表單中輸入10個以上的字元,這將大大增加攻擊者在SQL命令中插入有害代碼的難度。
(2)封裝數據信息。對客戶端提交的數據進行封裝,不要將數據直接存入cookie中,方法就是在編程的代碼中,插入session、if、try、else,這樣可以有效地防止攻擊者獲取cookie中的重要信息。
(3)去除代碼中的敏感信息。將在代碼中存在的用戶名、口令信息等敏感欄位刪除,替換成輸入框。
SQL=" select from users where username = 』admin』and password= 』1234567』 "
如:這樣顯然會暴露管理員的用戶名、口令信息。可以將其修改成:
SQL= " select * from users where username='" +Txtuser.Text + "' and userpwd='" + Textpwd.Text + "'"
這樣就安全了很多,入侵者也是不會輕易的就獲取到用戶名、口令信息。
(4)替換或刪除單引號。使用雙引號替換掉所有用戶輸入的單引號,這個簡單的預防措施將在很大程度上預防SQL注入漏洞攻擊,單引號時常會無法約束插入數據的Value,可能給予輸入者不必要的許可權。用雙引號替換掉單引號可以使大部分SQL注入漏洞攻擊失敗。 如:
「select* from users where username='" + admin + "' and userpwd='" + 1234567+ "'」
顯然會得到與
「select * from users where username='admin' and password= '1234567'」
相同的結果。
(5)指定錯誤返回頁面。攻擊者有時從客戶端嘗試提交有害代碼和攻擊字元串,根據Web Service給出的錯誤提示信息來收集程序及伺服器的信息,從而獲取想得到的資料。應在Web Service中指定一個不包含任何信息的錯誤提示頁面。
(6)限制SQL字元串連接的配置文件。使用SQL變數,因為變數不是可以執行的腳本,即在Web頁面中將連接資料庫的SQL字元串替換成指定的Value,然後將Web.config文件進行加密,拒絕訪問。
(7)設置Web目錄的訪問許可權。將虛擬站點的文件目錄禁止遊客用戶(如:Guest用戶等)訪問,將User用戶許可權修改成只讀許可權,切勿將管理許可權的用戶添加到訪問列表。
(8)最小服務原則。Web伺服器應以最小許可權進行配置,只提供Web服務,這樣可以有效地阻止系統的危險命令,如ftp、cmd、vbscript等。
(9)鑒別信息加密存儲。將保存在資料庫users表中的用戶名、口令信息以密文形式保存,也可以對users表進行加密處理,這樣可以大大增加對鑒別信息訪問的安全級別。
(10)用戶許可權分離。應盡可能的禁止或刪除資料庫中sa許可權用戶的訪問,對不同的資料庫劃分不同的用戶許可權,這樣不同的用戶只能對授權給自己的資料庫執行查詢、插入、更新、刪除操作,就可以防止不同用戶對非授權的資料庫進行訪問。
❻ 如何測試一個網站是不是可以被SQL注入
SQL注入通過網頁對網站資料庫進行修改。它能夠直接在資料庫中添加具有管理員許可權的用戶,從而最終獲得系統管理員許可權。黑客可以利用獲得的管理員許可權任意獲得網站上的文件或者在網頁上加掛木馬和各種惡意程序,對網站和訪問該網站的網友都帶來巨大危害。
防禦SQL注入有妙法
第一步:很多新手從網上下載SQL通用防注入系統的程序,在需要防範注入的頁面頭部用來防止別人進行手動注入測試。
可是如果通過SQL注入分析器就可輕松跳過防注入系統並自動分析其注入點。然後只需要幾分鍾,你的管理員賬號及密碼就會被分析出來。
第二步:對於注入分析器的防範,通過實驗,發現了一種簡單有效的防範方法。首先我們要知道SQL注入分析器是如何工作的。在操作過程中,發現軟體並不是沖著「admin」管理員賬號去的,而是沖著許可權(如flag=1)去的。這樣一來,無論你的管理員賬號怎麼變都無法逃過檢測。
第三步:既然無法逃過檢測,那我們就做兩個賬號,一個是普通的管理員賬號,一個是防止注入的賬號,如果找一個許可權最大的賬號製造假象,吸引軟體的檢測,而這個賬號里的內容是大於千字以上的中文字元,就會迫使軟體對這個賬號進行分析的時候進入全負荷狀態甚至資源耗盡而死機。下面我們就來修改資料庫吧。
1.對表結構進行修改。將管理員的賬號欄位的數據類型進行修改,文本型改成最大欄位255(其實也夠了,如果還想做得再大點,可以選擇備注型),密碼的欄位也進行相同設置。
2.對表進行修改。設置管理員許可權的賬號放在ID1,並輸入大量中文字元(最好大於100個字)。
3.把真正的管理員密碼放在ID2後的任何一個位置(如放在ID549上)。
我們通過上面的三步完成了對資料庫的修改。
另外要明白您做的ID1賬號其實也是真正有許可權的賬號,現在計算機處理速度那麼快,要是遇上個一定要將它算出來的軟體,這也是不安全的。只要在管理員登錄的頁面文件中寫入字元限制就行了,就算對方使用這個有上千字元的賬號密碼也會被擋住的,而真正的密碼則可以不受限制。
❼ 如何檢測sql注入
不要拼接SQL語句,即防止傳入參數問題,
舉例:
select * from a where password = ' 變數 ';
假如傳入的變數是: ' or 1=1 or 1=',那麼最後這個語句就是:
select * from a where password = '' ' or 1=1 or 1='';
你說會得到什麼結果
如果你使用ADO,則盡量使用parameter方式傳入參數,不要自己拼接sql語句,要拼接的話,確保傳入參數不是可以破壞原sql語句的變數
❽ 怎麼判斷一個網站是否有sql注入
許多網站程序在編寫時,沒有對用戶輸入數據的合法性進行判斷,使應用程序存在安全隱患。用戶可以提交一段資料庫查詢代碼,根據程序返回的結果,獲得某些想得知的數據,這就是所謂的SQL Injection,即SQL注入。如何判斷網站是否存在POST注入呢!請看以下步驟操作做。
POST注入操作介紹:
1.POST注入一般發生在表單數據傳輸時、抓取POST提交的數據進行SQL語句測試
POST注入操作流程:
比如抓取的POST數據為:userName=admin&password=admin
測試諸如語句填寫:userName=admin&password='admin 1=1--
像這樣userName 參數後面加一些SQL語句(注入測試語句)進行POST數據注入測試即可。