天天看點

無列名SQL注入攻擊

無列名SQL注入攻擊

寫在前面

1.InnoDb引擎

從MYSQL5.5.8開始,InnoDB成為其預設的存儲引擎。而在MYSQL5.6以上的版本中,mysql資料庫中的inndb增加了innodb_index_stats和innodb_table_stats兩張表,這兩張表中都存儲了資料庫和其資料表的資訊,但是不會存儲列名。其利用方式是:mysql.innodb_index_stats和mysql.innodb_table_stats。

2.sys資料庫

在5.7以上的MYSQL中,新增了sys資料庫,該庫的基礎資料是來自information_schema和performance_chema,因其本身是無法存儲資料的,是以可以通過其中的schema_auto_increment_columns來擷取表名。其用法是:sys.schema_auto_increment_columns

關于sys.schema_auto_increment_columns的相關描述如下:

開始了解這個視圖前,希望您先回想過去當您在利用Mysql設計資料庫時,是否會給每個表添加一個自增的id(或其他名字)字段呢?如果會,那小星發現了一個注入mysql後在預設情況下可以替代information_schema庫的方法了。

schema_auto_increment_columns:該視圖的作用簡單總結為用于對表自增的ID進行監控。

無列名注入

1. 首先,如下圖所示進行正常查詢。

(1)當我們select 1,2,3的時候,此時頁面就如一個虛拟的表格,列名為1,2,3。

(2)我們查詢列名為1,2,3的資料。

(3)第一行是我們所查詢到的1,2,3後面所緊接的表中資料。

無列名SQL注入攻擊

2. select `2` from (select 1,2,3 union select * from user)a

将select 1,2,3的結果拼接到select * from user 的結果後提取第二列資訊。select 1,2,3需要根據表的字段而定,也就是說當您進行查詢時,語句的字段數必須保持和指定表中的字段數相同,不能增加或減少,否則将會出現報錯告示。

語句的最後一個字母是别名,如圖所示,您就可以查詢到第二列的資料。在虛拟表中,列名均是1,2,3,是以我們在查詢語句中不能直接使用 2,而是要使用 `2`, 隻有通過此方式才能夠擷取到列名。

無列名SQL注入攻擊

3. 在某些情況下,程式有可能會過濾反引号,使語句不能正常執行。但是,我們能通過别名以替代反引号。

as 取别名示例:

将select 1,2,3 union select * from user中要查詢的一列,取其别名為b,類似與變量傳參。

select (b) from (select 1,2,3 as b union select * from users)l

無列名SQL注入攻擊

4. 通過group_concat将拼接字元串一同輸出。

select group_concat(b) from (select 1,2,3 as b union select * from users)l

無列名SQL注入攻擊

5. 以此作為在無傳統列名情況下完成注入脫資料的标志。

6. 了解星雲博創

星雲博創科技有限公司(簡稱“星雲博創”)成立于2016年,是國内新興的網絡安全産品、可信安全管理平台、專業安全服務與解決方案的綜合提供商。星雲博創設北京為北方總部,廣州為南方總部,并于成都、合肥、南昌、貴州、武漢、太原、哈爾濱等多個城市設立分支機構。同時,星雲博創為不斷完善客戶服務體系和應急響應體系,在全國10餘個省、市、自治區、直轄市建立三級服務支援中心,7×24小時接受客戶需求,及時提供标準一緻的安全服務。

作為一家以技術先導的企業,星雲博創始終堅持在網絡安全、資料安全、态勢感覺、等級保護、合規性安全管理等領域進行技術創新,利用安全分析、大資料分析、人工智能等技術,對網絡空間安全要素、安全風險進行深度挖掘與關聯分析,建構了多層次的縱深防禦體系,持續推出态勢感覺平台、靜态脫敏系統、終端安全監測系統等一系列優秀的安全産品和行業解決方案,廣泛應用于政府、營運商、醫療、教育、電力、能源等多個領域,讓風險無所遁形。

星雲博創已獲得ISO9001、ISO27001、 ISO20000管理體系認證,CMMI5軟體成熟度認證,資訊系統安全內建服務、資訊安全風險評估服務、軟體安全開發服務資質的CCRC二級認證,及安全運維服務資質、應急處理服務資質的CCRC三級認證。此外,星雲博創還是國家資訊安全漏洞庫(CNNVD)技術支撐機關、海南省網絡安全應急技術支撐機關、廣州市應急關聯機構支撐機關。

繼續閱讀