成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一種新的MySQL下Update、Insert注入方法

安全 數(shù)據(jù)安全
目前我們一般通過報錯和時間盲注來對update和insert語句進行SQL注入,下面我們來講解一種新的獲取數(shù)據(jù)的方法。

[[183607]]

一、前言

目前我們一般通過報錯和時間盲注來對update和insert語句進行SQL注入,下面我們來講解一種新的獲取數(shù)據(jù)的方法。

首先我們來看一個簡單的例子,假設(shè)應(yīng)用會將username字段的結(jié)果會返回給我們:

  1. $query = "UPDATE users SET username = '$username' WHERE id = '$id';"

HTTP應(yīng)用中的參數(shù)是這樣的:

  1.      
  2. username=test&id=16 

我最近研究的帶內(nèi),帶外攻擊技巧剛好適用于這個場景,要理解我的技巧,我們可以先看下Mysql 是如何處理字符串的。在Mysql 中一個字符串等于 ‘0’,我們來看一下:

Mysql 是如何處理字符串

假如我們把字符串和數(shù)字相加,結(jié)果和0 加這個數(shù)字一樣:

Mysql 是如何處理字符串

Mysql的這個屬性給了我一些靈感,我們來看看BIGINT的最大值加上一個字符串會怎樣?

BIGINT的最大值加上一個字符串

結(jié)果是 ‘1.8446744073709552e19’,這表明字符串實際上作為八字節(jié)的DOUBEL類型來處理。

八字節(jié)的DOUBEL類型

將一個DOUBLE類型和大數(shù)字相加會返回IEEE格式的值,為了解決這個問題我們可以使用OR。

OR

現(xiàn)在我們得到了最大的64bit無符號的BIGINT值0xffffffffffffffff。我們需要注意通過OR獲取數(shù)據(jù)時,這個值必須小于BIGINT(不能超過64bit)。

二、轉(zhuǎn)換字符串為數(shù)字

為了獲取數(shù)據(jù)我們可以將應(yīng)用輸出的字段轉(zhuǎn)換為數(shù)字,然后再解碼回來,如下步驟:

  1. String -> Hexadecimal -> Decimal 

將應(yīng)用輸出的字段轉(zhuǎn)換為數(shù)字

通過SQL,Python和Ruby等語言我們可以將數(shù)字轉(zhuǎn)回字符串,如下:    

  1. Decimal -> Hexadecimal -> String 

通過SQL,Python和Ruby等語言我們可以將數(shù)字轉(zhuǎn)回字符串

如上面提到的,Mysql中的最大值為BIGINT,我們不能超過它,也就是說每次提取的字符串不能超過8位。

Mysql中的最大值為BIGINT

4702111234474983745可以被解碼為AAAAAAAA,如果再加一個A,我們就不能正確解碼了,因為返回的結(jié)果會是無符號的BIGINT值0xffffffffffffffff。

BIGINT值0xffffffffffffffff

如果需要獲取的數(shù)據(jù)超過8個字節(jié),我們需要使用substr()方法來將數(shù)據(jù)分片。

  1. select conv(hex(substr(user(),1 + (n-1) * 8, 8 * n)), 16, 10); 

n的取值為1、2、3…比如我們要獲取的username長度超過8個字符,我們首先獲取前八個字符,然后繼續(xù)獲取后面的8個直到得到NULL。

8個直到得到NULL

最后我們把user()函數(shù)獲得的數(shù)據(jù)解碼。

把user()函數(shù)獲得的數(shù)據(jù)解碼

三、注入技巧

1. 獲取表名

  1. select conv(hex(substr((select table_name from information_schema.tables where table_schema=schema() limit 0,1),1 + (n-1) * 8, 8*n)), 16, 10); 

2. 獲取列名

  1.      
  2. select conv(hex(substr((select column_name from information_schema.columns where table_name=’Name of your table’ limit 0,1),1 + (n-1) * 8, 8*n)), 16, 10); 

3. 利用UPDATE語句

下面我們通過一個例子來說明如何利用更新語句。

利用更新語句

實際的查詢語句可能是這樣的:

實際的查詢語句

實際的查詢語句

4. 利用INSERT語句

原始SQL語句如下:

  1. insert into users values (17,'james', 'bond'); 

我們可以像update語句中一樣獲取數(shù)據(jù):

  1. insert into users values (17,'james', 'bond'|conv(hex(substr(user(),1 + (n-1) * 8, 8* n)),16, 10); 

MySQL 5.7中的限制

你可能注意到這種方法在MySQL 5.7.5之后的版本并不奏效。

MySQL 5.7.5

通過研究MySQL 5.7發(fā)現(xiàn)Mysql服務(wù)器默認(rèn)運行在‘Strict SQL Mode’下,在MySQL 5.7.5里,默認(rèn)的模式包含‘STRICT_TRANS_TABLES’。在 ‘Strict SQL Mode’ 下我們不能將integer轉(zhuǎn)換為string。

將integer轉(zhuǎn)換為string

為了解決這個問題,我們需要在注入時一直使用一個integer類型,這樣就不會有任何問題了。

在注入時一直使用一個integer類型

另外任何用戶都可以在他的會話里關(guān)閉‘Strict Mode’。

‘Strict Mode’

如果想設(shè)置影響所有客戶端的全局屬性需要SUPER權(quán)限。

開發(fā)者也可以使用‘IGNORE’關(guān)鍵字來忽略‘Strict Mode’,如‘INSERT IGNORE’或者‘UPDATE IGNORE’。

‘Strict Mode’

四、解碼Decoding

SQL

  1. select unhex(conv(value, 10, 16)); 

Python

  1. dec = lambda x:("%x"%x).decode('hex') 

Ruby

  1. dec = lambda { |x| puts x.to_s(16).scan(/../).map { |x| x.hex.chr }.join }或 
  2. dec = lambda { |x| puts x.to_s(16).scan(/\w+/).pack("H*") } 
責(zé)任編輯:趙寧寧 來源: 安全客
相關(guān)推薦

2014-07-04 09:28:25

2018-12-14 14:30:12

安全檢測布式系測試

2024-01-18 15:38:17

語言模型大型語言模型

2022-06-09 09:38:39

Cloudlets云存儲

2010-11-05 10:15:42

云計算

2022-08-08 08:22:22

量子計算

2011-07-04 17:53:48

快速測試

2011-04-06 10:09:56

MySQL數(shù)據(jù)庫安裝

2011-12-28 21:18:18

App

2019-11-13 08:52:19

Linux監(jiān)控日志

2010-03-26 13:34:47

CentOS安裝

2021-06-11 00:11:23

GPS數(shù)據(jù)協(xié)議

2023-12-04 08:21:18

虛擬線程Tomcat

2022-04-06 12:00:46

HEAT安全架構(gòu)新威脅

2022-07-28 11:29:23

數(shù)據(jù)安全數(shù)據(jù)令牌化

2009-06-17 09:05:05

Linux隱藏網(wǎng)絡(luò)鏈接命令

2009-06-17 12:01:21

Linux

2020-12-16 10:12:52

大數(shù)據(jù)小數(shù)據(jù)人工智能

2019-11-22 09:21:17

技術(shù)研發(fā)數(shù)據(jù)

2013-03-12 14:07:06

Java編程
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 天天综合久久 | 欧美高清视频 | 91人人看 | 精品欧美乱码久久久久久1区2区 | 国产精品日本一区二区不卡视频 | 亚洲人在线观看视频 | 九九国产在线观看 | 91精品国产色综合久久 | 欧美黄色性生活视频 | 亚洲精品视频网站在线观看 | 久久久这里都是精品 | sese视频在线观看 | 99精品国产一区二区青青牛奶 | 亚洲天堂一区 | 久久免费视频1 | 欧美亚洲成人网 | 国产精品高潮呻吟久久 | 欧美一区二区三区的 | 国产精品久久久久久久久久久新郎 | 久久青| 夜夜爽99久久国产综合精品女不卡 | 久久综合九色综合欧美狠狠 | 色就干 | 国产精品三级 | 成人免费视频网站在线看 | 91文字幕巨乱亚洲香蕉 | 一区在线观看 | 天天看夜夜 | 亚洲精品在线观看网站 | 美日韩免费视频 | 四虎影院在线观看免费视频 | 色www精品视频在线观看 | 久久久久中文字幕 | 自拍视频在线观看 | av资源在线看 | 韩日精品在线观看 | 超碰人人插 | 日本免费黄色 | 欧美一级免费 | 日韩二三区 | 日韩中文字幕在线观看 |