实验吧 登录一下好吗
? ? ?
此篇文章是在實(shí)驗(yàn)吧的writeupshang找的,寫(xiě)的挺好的。
???? 這題我看到的時(shí)間比較晚,評(píng)論區(qū)有人說(shuō)過(guò)濾了/ # -- select or union |等
反正不管,我先按常規(guī)試試
username=admin'--&password='or''='
回顯:
對(duì)不起,沒(méi)有此用戶(hù)!!
hint:
username:admin'
password:'''='
這時(shí)候--和or被過(guò)濾看起來(lái)好可怕,但是單引號(hào)'沒(méi)被過(guò)濾就是最幸福的事兒了(雖然有可能是經(jīng)過(guò)轉(zhuǎn)義的,但題目中說(shuō)只是過(guò)濾,沒(méi)說(shuō)轉(zhuǎn)義,( # ▽ # ))
這時(shí)候其實(shí)只要帳號(hào)和密碼都上萬(wàn)能密碼,啥都搞定,看似被過(guò)濾了n多n多,但卻是最容易注入進(jìn)去的。
來(lái)一個(gè)過(guò)法:)
username=pcat'='&password=pcat'='
flag立馬就拿到,為何能過(guò)呢?很多人就疑問(wèn)了?沒(méi)有or也能萬(wàn)能注入?
解析過(guò)程看下面
- - - - - - - - - - - -
假設(shè)sql語(yǔ)句如下
select * from user where username='用戶(hù)名' and password='密碼'
當(dāng)提交username=pcat'='&password=pcat'='
語(yǔ)句會(huì)變成如下:
select * from user where username='pcat'='' and password='pcat'=''
這時(shí)候還不夠清晰,我提取前一段判斷出來(lái)(后面的同樣道理)
username='pcat'=''
這是有2個(gè)等號(hào),然后計(jì)算順序從左到右,
先計(jì)算username='pcat' 一般數(shù)據(jù)庫(kù)里不可能有我這個(gè)小名(若有,你就換一個(gè)字符串),所以這里返回值為0(相當(dāng)于false)
然后0='' 這個(gè)結(jié)果呢?看到這里估計(jì)你也懂了,就是返回1(相當(dāng)于true)
所以這樣的注入相當(dāng)于
select * from user where 1 and 1
也等于 select * from user
(這題只有篩選出來(lái)的結(jié)果有3個(gè)以上才會(huì)顯示flag,沒(méi)有就一直說(shuō)“對(duì)不起,沒(méi)有此用戶(hù)!!”)
好了,繼續(xù)嘮叨幾句,上面那個(gè)比較是弱類(lèi)型的比較,
以下情況都會(huì)為true
1='1'
1='1.0'
1='1后接字母(再后面有數(shù)字也可以)'
0='除了非0數(shù)字開(kāi)頭的字符串'
(總體上只要前面達(dá)成0的話(huà),要使語(yǔ)句為true很簡(jiǎn)單,所以這題的萬(wàn)能密碼只要按照我上面的法子去寫(xiě)一大把)
by pcat
2016.10.9
轉(zhuǎn)載于:https://blog.51cto.com/xiaocaione/1882321
總結(jié)
以上是生活随笔為你收集整理的实验吧 登录一下好吗的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 测试知识整理——基础篇
- 下一篇: 基于 Rancher 的企业 CI/CD