sqli-labs(七)——登陆处sql注入


 

 

第十三关:

这关也是一个登陆口,和上关所说的一样,先使用'"试一下,让程序报错然后判断后台的sql语句

可以看到后台sql大概是 where name = ('$name')...  这样的

post信息中输入uname=1') or '1'='1' #&passwd=1&submit=Submit  可以成功进入

但是没有显示账号密码之类的,所以不能使用上一关的联表查询。尝试使用上关的报错查询试试,输入

uname=1&passwd=1') and extractvalue(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata  limit 0,1))) #&submit=Submit

能成功报错出数据库名!但是这里显示不全,可以不使用group_concat这个函数,利用limit一行一行的查询

其实这关主要考察的是双查询注入(floor的报错查询),但是这里可以使用extractvalue进行报错,那他的我就不继续下去了。

 

第十四关:

这关和第十三关是类似的,只是将')变成了"而已,至于是怎么判断的还是使用的'"。

这里还补充一句,登录框的地方很多时候都没有报错信息,那么怎么判断后台的sql拼凑方式呢? 目前我的办法是将这些比如1' or '1'='1' #  ;          1" or "1"="1" # ;        1') or '1'='1' #  ; 1")or "1"="1" # 等等做成一个字典,然后进行fuzz。

 

第十五关:

好吧,上面刚说面没有报错的情况下应该怎么办,这关就遇到了!(说实话,我写上面那段话的时候是真的没有看这关的内容)

我刚看到这题的时候还是直接输入的'",结果发现没有报错信息,这个时候就无法通过报错直接判断后台的拼接方式了。

使用上面fuzz的方式是可以判断的,但是这里我就直接看后台的实现吧

发现后台是直接用的单引符号,这里也不会登陆成功后的账号密码,所以只能使用盲注了。

我记得我之前在第十一关的时候就尝试了盲注的,当时没成功,这里的情况实际上是和第十一关一模一样的,后台网上查了下才发现,盲注时应该是

or (ascii(substr((select database()) ,1,1))) >64
而不能是 or ascii(substr((select database()) ,1,1)) >64

post 输入uname=1' or  (ascii(substr((user()),1,1)))>64 #&passwd=1&submit=Submit  能登陆成功

输入uname=1' or  (ascii(substr((user()),1,1)))>200 #&passwd=1&submit=Submit

登陆失败,后面的就不继续了,利用二分法一个字符一个字符的判断即可。

 

 

第十六关:

和第十五关类似,只是将单引符号改为了双引符号进行拼凑。怎么判断后台的拼凑方式? fuzz!!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM