[GXYCTF2019]BabySQli

1.验证方式

通过尝试我们发现存在一个admin用户。当name=admin时回显不是user error而是pass error。
在这里插入图片描述
经过一系列尝试,我们发现or,=字符被过滤的但是可以使用大写的OR与like代替=。
在这里插入图片描述
还是不能登陆,在报错源码处发现一串码,经过base32,base64解密后为sql语句:

select * from user where username = '$name'

这里的验证方式是将name带入查询再将查询后的密码与输入进行比对。经过常规注入手段我们发现这里有三个字段。
在这里插入图片描述
union联合查询在查询不存在的数据时,会创建一个临时数据,然后返回这个临时数据union select 1,2,3,返回数据就为column1:1,column2:2,column3:3。我们可以根据这个特性来猜测user字段的位置。经过猜测我们发现admin在2的位置。
在这里插入图片描述
那么猜测3的位置应该就是pass字段并且这里pass应该存储的是MD5值,将123进行MD5加密放到3的位置,这时union select, 1,admin,‘md5(123)’,的返回数据为column1:1,column2:admin,column3:md5(123),并且将返回的md5(123),与我们输入的pass的md5值进行比对如果一样则会登陆成功。这是我们构建payload:

name=1' union select 1,'admin','202cb962ac59075b964b07152d234b70'#&pw=123

成功拿到flag。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值