[极客大挑战 2019]EasySQL
做题
坚持第二天,一看是个SQL注入,自己碰巧注过一次,应该不难
打开网页
黑客风挺帅的,先正常输入

不太行
现在要判断是什么类型的输入,这里首先考虑字符型和数字型两种,先看看加个引号会不会报错

这里出现报错,说明存在注入,报错一出就比较好分析了

这里的语句猜测是字符型的注入,因为输入字符串周围多了引号,猜测SQL语句为
select * from user where username = '$a' and password = '$b'
其中a和b是表单提交的参数,若在密码段注入,在用户名段仅正常输入1,注入之后变成了如下结果
select * from usertable where username='1' and password='1'or1=1#'
由于sql是AND优先级大于OR,这里一定要记住,这里的1=1是与前面where后面一直到or前的语句是并列关系,这里的优先级参考一个网图如下


所以这里无论是写一个万能密码还是两个万能密码都是可以的,且无论是用户名或是密码输入都是可以的,也可以两个都输入,不过这样后面的输了也是白输,因为用户名输入#注释后面所有的,密码输入的逻辑分析如上图
所以我们尝试常规的万能密码

成功

虽然说这题简单吧,但是浏览网上的wp,没有把原理说的很透彻的,所以还是自己写一篇留存吧,自己坚持的第二天,加油

浙公网安备 33010602011771号