BUUCTF-EasySQL(sql注入题目)

1、万能用户名/密码

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

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

2、在该题目中使用,select * from table_name where username='1' or 1=1 # ' and password='xxxxxx' ;  #为注释符,因而传入后台的是    select * from table_name where username='1' or 1=1 (因为1=1恒为真,所以SQL语句返回真值,成功绕过验证得到flag),则可返回真值。

3、万能密码的原理:
select * from table_name where username='xxxx' and password='xxxx',这是查询数据库可能会用到的句型,因为这道题是基于sql单引号的注入,我们构造万能密码,#在sql注入中是注释符用or连接,因为1=1恒真,假或真=真,真或真=真,所以这个语句恒成立,1’ or 1=1 #嵌入到语句中就是select * from table_name where username='1' or  1=1 # ' and password='xxxx',万能密码绕过直接在用户名或者密码区输入 1' or 1=1 # 得到flag。

4、在该题目中,如果不匹配数据库也能返回真值那么就能绕过验证登录(万能用户名)。如果我们传入的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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值