[GXYCTF2019]BabySQli

简单的fuzz一下
红色框里的被过滤
在这里插入图片描述
然后简单手工测一下发现大小写都可以绕过去了

在这里插入图片描述
那就首先试试报错注入吧(因为能看到报错信息)
发现不行
在这里插入图片描述
那也不想麻烦去绕这个了
union和select都没过滤
那就可以尝试联合查询
在这里插入图片描述
确定有三列
发现这个题小括号好像被ban了
而且这个题好像没有可以回显的位置
在这里插入图片描述
没有小括号盲注个der
进入正题
F12发现可疑注释
base32+base64解码得到

select * from user where username = '$name'

buu的题目好像少了题目描述
题目描述:刚学完sqli,我才知道万能口令这么危险,还好我进行了防护,还用md5哈希了密码!

通过base解出的sql语句是只查了username
没有and password的条件
也就是说账号和密码不是同时进行判断的
看下面这个图
当查找不存于数据库中的数据
联合查询的数据会补上
在这里插入图片描述
为了和本题的列一致
我把我本地的数据也加到三列
在这里插入图片描述
然后查询
在这里插入图片描述
在这里插入图片描述
上面这两个查询的结果是不是一样的
但实际上第一张图显示的是我们自己构造的username和password
第二张图显示的是数据库里的username和password

这里看下源码会更加清晰
在这里插入图片描述
它是先根据name查询到一条数据,比如id=1,name=admin,password=nwioefvnuwinfwwujnkiwe
然后再把我们提交的password经过md5加密去和上面这个password进行比较
这两个password都是我们可控的

name=-1'union select 1,'admin','e10adc3949ba59abbe56e057f20f883e'#

123456的md5是e10adc3949ba59abbe56e057f20f883e
这里的结果就是它查询-1查不到然后把我们的数据补上了
在这里插入图片描述
然后我们提交的数据

pw=123456

所以连起来有最后的payload
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值