BUUCTF【Web】EasySQL

1、题目研究

看题很明显的SQL注入,做题时习惯看源码但什么都没有发现。

所以尝试闭合方法,随便输入1、1'、1''密码随便输入即可。

当输入1和1''时会出现以下的提示, 

9303bb118fa0448abaad64e17f7f3fc4.png

但输入1'时会报错,所以语句为单引号闭合。 

2572343827cb41b5a0c6d0ea9fe398d5.png

2、万能用户名/密码

既然知道了是单引号闭合,现在就尝试注入,首先了解一下万能用户名和密码。

一般的,库验证登录注册查询数据会用到以下的句型,如果用户与密码匹配正确则返回真值通过验证成功登录。

select * from table_name where username='×××' and password='×××';

2.1、万能用户名 

如果不匹配数据库也能返回真值那么就能绕过验证登录(万能用户名)。如果我们传入的username为1' or 1=1 #,随便输入password,那么传入后端验证时SQL语句为

    select * from table_name where username='1' or 1=1 # ' and password='xxxxxx' ;

注:因为SQL语句中#为注释符,那么SQL语句为:

    select * from table_name where username='1' or 1=1 

因为1=1恒为真,所以SQL语句返回真值,成功绕过验证得到flag

7886eee495c841e890d22f6450d53a55.png

2.2、万能密码

同样的万能密码同理

当传入1' union select ××,××,××,database()#

注:union为联合查询多张表,××,××,××为两张表查询字段的数量

当尝试输入时1' union select 1,database()#会出现提示,字段数量不一致

d6426f34e8394f25aa499fd86aff7b0c.png

 所以尝试输入1' union select 1,2,database()#时会得到flag

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值