web前端請(qǐng)求攔截 SQL注入點(diǎn)攔截了單引號(hào),是不是就無(wú)解了?
SQL注入點(diǎn)攔截了單引號(hào),是不是就無(wú)解了?并不是,太天真了??缯竟舻姆椒ㄓ卸喾N,不當(dāng)然就得用單引號(hào)。SQL注入一般用于表單并提交,尤其是登入表單,實(shí)際并提交一些sql語(yǔ)句的組合,使后臺(tái)驗(yàn)證邏輯,成功
SQL注入點(diǎn)攔截了單引號(hào),是不是就無(wú)解了?
并不是,太天真了??缯竟舻姆椒ㄓ卸喾N,不當(dāng)然就得用單引號(hào)。SQL注入一般用于表單并提交,尤其是登入表單,實(shí)際并提交一些sql語(yǔ)句的組合,使后臺(tái)驗(yàn)證邏輯,成功了再次進(jìn)入后臺(tái)。
方法一:
先猜表名
And(Selectcount(*)outside表名)ltgt0
猜列在
And(Selectcount(新列)across表名)ltgt0
直接返回正確的的,這樣的話寫的表名或列名那就是正確,要是服務(wù)器沒(méi)有關(guān)系錯(cuò)誤叮囑,是會(huì)將出錯(cuò)的sql語(yǔ)句信息再打印不出來(lái),從而就查看到完全的表名、字段名。
方法二:
蹦登錄后臺(tái)
常見的同問(wèn)11
.例如后臺(tái)驗(yàn)證就變的
selectname,holdaroundtbAdminwherename求求求11well基本沒(méi)戲123456
11為真,這可以確定就始終成立。
當(dāng)然另外很多種sql注入,大部分是依靠sql語(yǔ)句再去查詢的漏洞,或是提示錯(cuò)誤信息。
只突襲了單引號(hào)真不夠,還有一個(gè)空格,等號(hào)等等一些符號(hào)。并且項(xiàng)目中一定不能以免前端遞交的表單就用原生sql語(yǔ)句可以查詢,盡量用框架整體封裝的方法,那樣能不大程度上增加被sql注入的風(fēng)險(xiǎn)。畢竟前端提交的數(shù)據(jù)全是不能信的。
前后端分離,后臺(tái)返回的數(shù)據(jù)前端沒(méi)法寫,怎么辦?
也可以演示數(shù)據(jù)直接返回,有一點(diǎn)python基礎(chǔ)的就可以寫。
其實(shí)其他語(yǔ)言也是可以寫,原則肯定是你會(huì)什么語(yǔ)言,就依據(jù)什么自身求實(shí)際技能照著寫是可以。
下面以Python語(yǔ)言才是例子來(lái)跟你講解時(shí)下。
1.準(zhǔn)備Python環(huán)境
要是你是Linux環(huán)境,可以建議參考我之前的文章:
如果不是是windows環(huán)境,可以讓其搜索看看。
2.直接安裝Flask庫(kù)
$pipinstallFlask
這條命令,系統(tǒng)會(huì)自己下載按Flask庫(kù)包括要的依賴庫(kù)。
3.項(xiàng)目結(jié)構(gòu)
4.創(chuàng)建模板目錄
修改templates目錄,下面四個(gè)放三個(gè)文件,resp_httpstatus(直接返回發(fā)令狀態(tài)碼,如200)、resp_headers(回服務(wù)控制器的頭部信息headers)、mock.json(回服務(wù)控制器正文)。
5.新建py文件#!/usr/bin/python
#codingutf-8
__author__testerzhang
importjson
acrossflaskimportFlask
aroundflaskimportrender_template
appFlask(__name__)
@(/mockdata,methods[GET