經典的MySQL Duplicate entry報錯注入
SQL注射取資料的方式有多種:
- 利用union select查詢直接在頁面上返回資料,這種最為常見,一個前提是攻擊者能夠構造閉合的查詢。
- Oracle中利用監聽UTL_HTTP.request發起的HTTP請求,把QuerySet反彈回攻擊者的主機。當然,HTTP伺服器對URL的長度有一定限制,因此每次可返回的資料量不可過多。
- 基於錯誤訊息取資料,前提是頁面能夠響應詳細的錯誤描述。它的一個優點是,我們可能不必太費力去猜測和閉合SQL(可以構造子查詢,讓MySQL在子查詢中報錯)。
- 盲注,頁面不會顯示錯誤訊息。常見基於布林的盲注、基於時間的盲注,此類注射點利用價值相對要低一點,猜解資料的時間較長。
本篇簡單說明非常經典的基於錯誤回顯的MySQL注射。最重要的,就是理解下面的SQL查詢:
上面的這條SQL將報錯: Duplicate entry '1' for key 'group_key'
如下圖
1. 為什麼MySQL注射要用information_schema庫?
答案是這個庫是MySQL自帶的,安裝之後就建立好了,所有賬號都有許可權訪問。攻擊者無需猜解庫名、表名。跟Oracle注射使用dual類似。
2. 如何利用報錯取資料?
利用報錯,攻擊者把目標資料concat連線到floor()函式的前後即可。
例如,下面的語句用於獲取MySQL Server版本,構造:
通過報錯,即可知道當前資料庫是5.5.28。0x5e5e5e是3個尖括號的16進製表示。 自動化SQL注射工具通常會在目標資料前後做類似的標記,方便程式提取。
加上標記,也可以方便攻擊者在大的頁面中搜索。
3. 為何這條語句會報錯?
rand(0)是把0作為生成隨機數的種子。首先明確一點,無論查詢多少次,無論在哪臺MySQL Server上查詢,連續rand(0)生成的序列是固定的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
mysql
>
select
rand
(
0
)
*
2
x
from
information_schema
.
character_sets
;
+
--
--
--
--
--
--
--
--
--
--
-
+
|
x
|
+
--
--
--
--
--
--
--
--
--
--
-
+
|
0.3104408553898715
|
|
1.241763483026776
|
|
1.2774949104315554
|
相關推薦經典的MySQL Duplicate entry報錯注入SQL注射取資料的方式有多種: 利用union select查詢直接在頁面上返回資料,這種最為常見,一個前提是攻擊者能夠構造閉合的查詢。 Oracle中利用監聽UTL_HTTP.request發起的HTTP請求,把QuerySet反彈回攻擊者的主機。當然,HTTP伺 MYSQL高版本報錯注入技巧-利用NAME_CONST注入and (select count(*) from mysql.user)>0/* 1、檢視MYSQL版本 and+exists(select*from+(select*from(select+name_const(@@version,0))a+join(select+name_const( 【資料庫索引】mysql更新資料報錯:Duplicate entry 'XXX' for key 'XXX'經查:資料庫表索引型別設定問題導致,unique:約束資料庫表中的每一條資料唯一。 補充: 1.UNIQUE(要求列唯一) 和 PRIMARY KEY(主鍵唯一) 約束均為列或列集合提供了唯一性的保證。 PRIMARY KEY (主鍵)擁有自動定義的 UNIQUE Mysql報錯注入簡單測試模型測試Mysql環境:Mysql 5.7.12-log Mysql Community Server(GPL) 1、收集內建函式 http://dev.mysql.com/doc/refman/5.7/en/dynindex-function.html 2、整理列表 select A Mysql 報錯注入的原理探索我們一般使用的報錯語句: 1 select count(*),concat((select version()),floor(rand()*2))a from information_schema.tables group by a; concat:為聚合函式,連線字串功能 MySQL報錯注入方法整理mysql暴錯注入方法整理,通過floor,UpdateXml,ExtractValue,NAME_CONST,Error based Double Query Injection等方法。 報錯注入:(and後不能直接跟select,可以加()) 1.報錯注入floor- Mysql報錯注入原理分析(count()、rand()、group by)可以看到floor(rand(0)*2)是有規律的,而且是固定的,這個就是上面提到的由於是確定性才導致的報錯,那為何會報錯呢,我們接著往下看。 0x05 count與group by的虛擬表 使用select count(*) from `T-Safe` group by x;這種語句的時候我們經 十種MySQL報錯注入以下均摘自《程式碼審計:企業級Web程式碼安全架構》一書 1.floor() select * from test where id=1 and (select 1 from (select count(*),concat(user(),floor(rand(0)* MySQL主從同步報錯故障處理記錄記錄 error start record master 前言在發生故障切換後,經常遇到的問題就是同步報錯,下面是最近收集的報錯信息。記錄刪除失敗在master上刪除一條記錄,而slave上找不到Last_SQL_Error: Could not execute Delete_rows e MYSQL 內存報錯 Use 'mysqld --thread_stack=#' to specify a bigger stack.mysql 內存報錯 use 'mysqld --thread_stack=#' to specify a bigger stack.MYSQL 內存報錯 Use ‘mysqld --thread_stack=#‘ to specify a bigger stack.今天在使用mysql的過程 mysql登錄報錯“Access denied for user 'root'@'localhost' (using password: YES”的處理方法為我 方法 error: top error 告訴 猜想 network grant 最近登錄某臺服務器的mysql時候總報錯: Access[root@log01 ~]# mysql -u root -p Enter password: ERROR 1045 (2800 centos7 安裝 mysql-python時 報錯 EnvironmentError: mysql_config not founddown config bsp rep grep 安裝mysql server comm 解決方法 pip install mysql-python 然後報錯 EnvironmentError: mysql_config not found 網上搜 mysql插入中文報錯的問題之前 oot 解決辦法 HR rect href In default def 報錯:1366, "Incorrect string value: ‘\\xE6\\xB7\\xB1\\xE5\\x85\\xA5...‘ for column ‘ 由於公司原因之前一直在使用o MYSQL啟動後報錯故障問題的解決辦法quit ... AI gin native with 錯誤日誌 查看 RR centos系統有一次異常關機後啟動mysql一直報錯#/etc/init.d/mysqld startStarting MySQL.. ERROR! The server quit withou mysql打開報錯2013解決辦法art resolve -name mage mysql 解決 重啟 圖片 分享圖片 修改mysql配置文件 在[mysqld]下面設置skip-name-resolve 重啟mysql centos7源碼安裝mysql時cmake報錯message download 參數 .net with make cal 添加 mysql 報錯代碼: CMake Error at cmake/boost.cmake:81 (MESSAGE):You can download it with -DDOWNLOAD_B mysql-mysqlslap執行報錯mysqlslap 數據庫 數據 sla nbsp 分享圖片 後來 再次 方法 問題描述: 應用mysql自帶的壓力測試工具mysqlslap,執行後報如下錯誤: 查找資料,說需要將my.cnf中的default-chara MySQL登錄報錯ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)command sql ror total lock sta secure linux and [root@pisphkdcbsql01 mysql3307]# /opt/mysql3307/bin/mysql -upisp -ppisp@123 mysql: SQL注入報錯注入函式彙總1.floor() id = 1 and (select 1 from (select count(*),concat(version(),floor(rand(0)*2))x from information_schema.tables group by x)a) 原理:https://b 實驗吧 加了料的報錯注入解題連結: http://ctf5.shiyanbar.com/web/baocuo/index.php SQL查詢原始碼: <!-- $sql="select * from users where username='$username' and password='$pass |