SQL注入(SQL注入(SQLi)攻击)攻击-联合注入
頁(yè)面有顯示位時(shí) , 可用聯(lián)合注入
本次以 SQLi 第一關(guān)為案例
第一步,判斷注入類(lèi)型
參數(shù)中添加 單引號(hào) ' , 如果報(bào)錯(cuò),說(shuō)明后端沒(méi)有過(guò)濾參數(shù) , 即 存在注入
?id=1'?
從數(shù)據(jù)庫(kù)的報(bào)錯(cuò)中我們可得知 , 最外邊的一對(duì)單引號(hào)是錯(cuò)誤提示自帶的,我們不用管
我們輸入的1 , 兩邊的一對(duì)單引號(hào) , 是SQL拼接參數(shù)時(shí)使用的
而1 右邊的單引號(hào) , 是我們自己輸入的
也就是說(shuō) , 后臺(tái)SQL中拼接參數(shù)時(shí) , 使用的是單引號(hào) , 固 注入點(diǎn)為 單引號(hào)字符串型
第二步,獲取字段數(shù)
order by 1 , 即 根據(jù)第1列排序 , 修改排序的列,如果存在該列,則會(huì)正常顯示 , 如果不存在該列 則會(huì)報(bào)錯(cuò) , 我們從第1列開(kāi)始排序 , 然后是第2列,第3列
第4列時(shí),開(kāi)始報(bào)錯(cuò),沒(méi)有第四列 , 也就是說(shuō),返回的結(jié)果中只有3列, 固 3個(gè)字段
第三步,獲取顯示位
聯(lián)合查詢(xún) 可以將左右兩個(gè)查詢(xún)語(yǔ)句的結(jié)果合并在一起顯示,左邊的查詢(xún)結(jié)果顯示在上方,右邊的查詢(xún)結(jié)果顯示在下方 , 前提是兩個(gè)查詢(xún)結(jié)果的字段數(shù)一致 , 如果字段數(shù)不一致則會(huì)報(bào)錯(cuò) , 這也是我們上一步需要獲取字段數(shù)的原因?
我們輸入id為-1 , 由于id沒(méi)有負(fù)數(shù),導(dǎo)致SQL左邊的查詢(xún)沒(méi)有數(shù)據(jù) , 最后的結(jié)果就只會(huì)顯示右邊的查詢(xún)結(jié)果 , 也就是 1 2 3?
?id=-1' union select 1,2,3 -- a?
第四步,脫庫(kù)
?我們參數(shù)中?3 替換成查詢(xún)語(yǔ)句 , 從而在頁(yè)面 3 的位置上顯示我們的查詢(xún)結(jié)果
group_concat() , 可以將多行結(jié)果合并為一行
?id=-1' union select 1,2, (select group_concat(schema_name) from information_schema.schemata)-- a??我們可以看到 , 原本3的位置 展示了我們查詢(xún)的數(shù)據(jù) :?所有數(shù)據(jù)庫(kù)
通過(guò)修改參數(shù)中 3 處的查詢(xún)語(yǔ)句 , 可以顯示不同的結(jié)果 如?所有表
?id=-1' union select 1,2, (select group_concat(table_name) from information_schema.tables where table_schema='security')-- a所有字段
?id=-1' union select 1,2, (select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')-- a?拿到表和字段信息后 , 就可以任意查詢(xún)數(shù)據(jù)庫(kù)中的數(shù)據(jù)了。
總結(jié)
以上是生活随笔為你收集整理的SQL注入(SQL注入(SQLi)攻击)攻击-联合注入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: SQL注入(SQL注入(SQLi)攻击)
- 下一篇: SQL注入攻击(SQL注入(SQLi)攻