元資料庫:information——schema其中儲存著其他所有資料庫的資訊
其中的表非常多
schemata:存放所有資料庫的名字
tables:用於存放所有資料表的名字
columns:存放所有欄位的名字
這些表裡面存放的資訊非常多,如果用select * from tables; 查詢會出現非常多劫過而且很雜亂 所以不使用這種查詢
discribe table;檢視table中的字段
其中有兩個固定的字段:table_name(存放表的名字)table_schema(存放資料庫的名字)
檢視test資料庫中有哪些表:select table_name from information_schema.tables where table_schema= "test";
檢視hack資料表中包含了哪些字段:select column_name from information_schema.columns where table_name= "hack";
npmserv必須放在根目錄下解壓,並且關閉其他的使用80埠的軟體(實驗環境win2003)
開啟****(虛擬機器的ip)
找到乙個引數傳遞的頁面判斷是否為注入點:後面加and1=1(頁面顯示正常)and1-2(頁面顯示不正常)就是典型的注入點。
使用order by x(x位數字)來猜測字段(使用二分法)實驗中當order by 5顯示正常,order by 6 顯示不正常:所以字段數量為5
然後使用聯合查詢 union select 1 ,2,3,4,5做乙個聯合查詢
後面不需要指定表的名字(與access不同的地方)然後頁面就會顯示可顯字段
在url和聯合查詢中間加上and1=2,因為1=2不成立所以前面的內容就不會顯示,只會顯示後面的聯合查詢內容,如圖:
現在我們知道2,3為可顯欄位,就可以在2,3的位置上進行操作,比如檢視mysql版本:version()
這樣就會在2的位置上顯示mysql的版本,為什麼要關心版本,因為開頭的元資料庫只有5.0以後的版本才有,大部分都是5.0以後的
接下來就可以顯示當前的資料庫和當前使用者
再利用這句話來檢視有哪些表
在table_ name 旁邊加上1345 因為23才為可顯欄位
group_concat()函式可以顯示所有內容不會只顯示乙個:group_concat(table_name)
其中的表,很明顯admin使我們要的
再根據這句話來查詢有哪些字段
步驟和上面爆破表相似,得到username和password兩個字段,然後再查詢兩個欄位的內容就行了
手工注入 MySQL手工注入實戰和分析
通過 和構造 and 1 1 和 and 1 2 檢視頁面是否報錯。這裡通過and 1 1 發現頁面正常。如下圖。接下來,咱們再構造 and 1 2 發現頁面報錯,說明頁面存在注入點。如下圖。通過 order by 語句,如果後面輸入的數字大於資料庫的字段數,頁面就會報錯,通過這個,咱們先輸入 or...
mysql手工注入方法
mysql內建資料庫結構 功能名稱 查詢語句 查庫select schema name from information schema.schemata 查表select table name from information schema.tables where table schema 庫名 ...
MySql 手工注入實戰
char 0x3a,unhex hex cast password as char 0x3a,unhex hex cast host as char from mysql.user hex cast user as char 把user使用char型別檢視然後轉換為hex 這樣得出的結果是hex 但...