少女祈祷中...

MISC

她说她想结婚

题目描述:

林佑生在雪地里面找到了key并骂了出来,最终他感慨:时间过得好快,戳戳戳的一下就没了,快的来不及眨。就像天空中绽放的烟花,那美好的一瞬间,再看已消散不见。

hint:图片上的汉字是某个key

下载附件

图片

010查看文件发现藏有压缩包文件

图片

提取出来

图片

发现有密码,伪加密

图片

查看flag.txt,发现存在snow隐写

图片

根据提示尝试snow隐写密码为“你们耳朵是聋了吗”

图片

得到第一部分flag: ctfshow{W1sh1ng_every0ne_4_

根据tips的时间是2012/5/20 13:14,然后0-10.txt属性打开里面修改时间很奇怪,时间戳隐写

exp:

1
2
3
4
5
6
7
8
9
10
import os
key=''
for i in range(11):
filename = "D:\\ctf\\CTF工具包\\CTF常用工具\\个人CTFTools\\编码与密码\\密码\\Zip\\Zip伪加密\\暧昧\\{0}.txt".format(i)
file_attr = os.stat(filename)
create_time = str(file_attr.st_mtime)
print(create_time)
key+=chr(int(create_time[7:10]))
print(key)
#print(chr(int(create_time[7:10])),end='')

运行得到key: ctfSh0w

010删掉后面zip数据,oursecret隐写

图片

base解密

图片

得到第二部分flag: happy_time_pl4ying}

最后flag为ctfshow{W1sh1ng_every0ne_4_happy_time_pl4ying}

你是我的眼

题目描述:

通过审计代码+眼力获flag

hint:

flag 区分大小写,包括包裹字符

下载附件

图片

代码审计

1
2
3
4
5
6
7
8
在Java中, replace 方法是 String 类的一部分,用于替换字符串中的指定字符或子字符串 审题发现出题人把BASE64加密拆分了4个部分
那么我们肯定会联想到肯定会有拼接的,刚好下一部分就有一个 拼接的
再次发现好像 1. 这里使用了一个叫做 customDecode(flag) 的函数,它会对 flag 进行一系列的解码操作,最终 返回处理后的字符串 2. cleanInput = decodedFLag.replace("_", "") :这是在说,我们从 decodedFLag 中找到了 所有的下划线(我们用英文的单下划线 _ 表示,不代表实际的文本中存在下划线)。每找到一个 下划线,就把它删掉,这样字符串就干净多了 继续往下分析

1.if (checkflag(cleanInput, decodedFlag)) :在解码和清理字符串 decodedFlag 后,将其 与用户输入的字符串 cleanInput 进行比较。如果两者相等,则执行 System.out.println("flag 正确"); ,表示输入的字符串是正确的;否则执行 System.out.println("输入错误"); ,表示输入 的字符串有误。
2.scanner.close(); :关闭任何可能用于读取输入的输入流
3.private static boolean checkflag(String input, String CTFflag) :这是用于比较两 个字符串是否相等的辅助方法。这个方法首先清理两个字符串:
使用 input.replace("_", "").replace("【特殊字符】", "") 来删除 input 中的所有下划线( \_ ) 和特殊字符

exp:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.Base64;
public class BASE64 {
public static String customDecode(String input) {
String standardInput = input.replace('-', '+').replace('_', '/');
byte[] decodedBytes = Base64.getDecoder().decode(standardInput);
return new String(decodedBytes);
}
private static final String PART1 = "U2NF9CSUFOTUF9";
private static final String PART2 = "Xw" + "+";
private static final String PART3 = "Q1RGU2hvd3tURVNUX0";
private static final String PART4="JBU0";

public static void main(String[] args) {
String flag=PART3+PART4+PART1+PART2;
String decodedFLag= customDecode(flag);
String cleanInput = decodedFLag.replace("_", "").replace("•", "");
System.out.println(cleanInput);
}
}

运行得到flag

图片

最后flag为CTFShow{TEST_BASE64_BIANMA}

二维码拼图

下载附件

图片

去背景色:魔棒工具,解锁图层,选中白色背景,Delete键 旋转移动:矩形选框工具,框选二维码块,右键-自由变换,旋转/移动 PS打开图片,以最大的中心块为基础进行拼接。

二维码块的形状大小可以确定大致位置,有争议的只有”上下左右”方向中间的四个二维码块 二维码块边缘有部分残留,可依此快速定位和确定朝向 拼完扫码即得flag。

signin

提示

  • 1: 一个github地址 项目地址
  • 2:Anthony’s QR Toolkit (antfu.me)

请把得到的字符串组合起来后套上ctfshow{….}提交

LoveLy-QRCode-Scanner一把梭

图片