floor報錯注入的兩種格式

2021-10-18 12:32:40 字數 2044 閱讀 5278

updatexml,extractvalue報錯只能顯示32位,floor報錯可以顯示64位

" union select null,count(*),concat((select group_concat(table_name) from information_schema.tables where table_schema=database()),floor(rand(0)*2))x from users group by x--+

其中1是因為聯合查詢列數要相同所以補個1,換成null也可以

users可以是任何存在的表

這裡有個問題,不知道為什麼最後爆字段的時候不能用group_concat(username),這樣不會報錯

" union select null,count(*),concat((select group_concat(username) from users),floor(rand(0)*2))x from users group by x--+

只能用limit 乙個個爆字段了

這裡同樣在爆字段的時候也不能用group_concat(),但原因和前面的不同(至少報錯了),這裡報錯原因是要求只有一行

以下內容摘自部落格

子查詢有兩種:一是where子句中的子查詢;二是from子句中的子查詢,這種子查詢又被稱為派生表。

where子句中:select column_name from table_name where column_name in (select column_name from table_name where condition)

from子句中:select column_name from (select column_name from table_name3 where condition) derived_table_name where condition

我們來看less5中提到的兩種報錯方式,第一種是concat子查詢,第二種是派生表:

可以看出這兩種實際上並無區別!

只是在less5中select查詢返回的字段數為3,足夠在column_list中將count()和concat()都包含進去,所以用concat子查詢更簡單。

而在less17中update查詢返回的字段數只有1!不足以使count()後接上concat()這樣乙個查詢語句,這時候就只能通過派生表再將上一層子查詢包裹起來,通過select 1 from (報錯的concat子查詢) derived_table_name使注入查詢的字段與update查詢的字段數相等!

(嚴格來說,這裡已經不能叫雙注入而是三注入了,都稱為子查詢注入)(ps:小技巧:雙注入有2個select,子查詢有3個select)

所以,子查詢注入重點在於控制子查詢使涉及字段數相等。select使用union,update/delete/insert使用or。而concat子查詢或是派生表只是手段。

所以當查詢字段數小於2時只可用派生表形

Spring的兩種注入方式

帶著前面的疑問,不斷的學習spring的知識,然後再回過頭去解決那些疑問。現在我們來看看spring的兩種注入方式 設值注入 設值注入式利用setter的方式為bean注入依賴關係的方式。上一節就是使用設值注入為bean注入依賴關係。設值注入的關鍵就是在類中必須存在乙個該屬性的setter方法,否則...

XML的兩種常見格式

寫了好長時間感覺sax解析也不難理解,主要是xml文件的格式我們不熟悉,熟悉了xml文件的格式,再來看sax解析就好多了 所以寫了這篇關於xml文件常見的兩種格式的詳細解讀 先來模擬一下兩種格式 xml第一種形式 此時我們需要解析的是元素 元素屬性 下面是nsparser的幾個 方法,給出列印結果,...

Spring兩種注入方式的區別

spring兩種注入方式分別是 autowired和 resource autowired是按照型別來裝配依賴物件的,預設情況下,這種注入方式要求該依賴物件必須存在,如果允許其有null值 可以設定其required屬性為false。bean class org.springframework.be...