[极客大挑战 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,没有把原理说的很透彻的,所以还是自己写一篇留存吧,自己坚持的第二天,加油

posted @ 2021-08-16 19:10  pinfu  阅读(77)  评论(0)    收藏  举报