HGAME 2019 WEEK2

HGAME 2019

因为week1发的太早了被查水表了。。。就直接删了。。。
写一下week2的writeup吧
怎么说呢,week1和week2简直是俩个级别啊。。。
ak了re,crypto,misc有一道二维码太毒瘤了。。。没写出来

maze

这题还是算简单的题目,可以看看我南邮的maze
都差不多
首先录入然后check
HGAME 2019 WEEK2_第1张图片
看看check函数
里面其实是在验证走完后
跟进setmap
HGAME 2019 WEEK2_第2张图片
setmap里就有个地图啦。
wasd控制方位
HGAME 2019 WEEK2_第3张图片
答案就不放出啦(依旧很懒)

Pro的Python教室(二)

这题简直是毒瘤。。。
刚开始的时候还准备弄个一血
结果???这题目怎么逆都逆不出,只能弄出前面一部分
哦豁
然后经过4小时奋斗后
我自闭了
打开群一看。。。
题目跟新过。。。不说了不说了,都是泪。
反编译直接
HGAME 2019 WEEK2_第4张图片
原码主要加密段
先是移位然后是按照顺序打乱

aaa = 'iibof}OqxaZ2vahquauj4aQ[D#~'
flag = ''
for i in range(len(aaa)):
    if i % 2 == 0:
        flag += chr(ord(aaa[i]) - 1)
    else:
        flag += chr(ord(aaa[i]) - 2)
print flag

brainfxxker’s revenge

这题也不怎么难
其实能想到是垃圾代码
后来也给了提示说用脚本去除
我太菜了就直接分析的鸭
先把bf代码放进Notepad++里
吧那些连起来的’+ -’,’- +’,’< >’,’> <'都给清光
然后git上弄个脚本吧bf换成c
8000多行代码吧。。。但是大部分都是垃圾代码,15分钟就能看完
稍微耐心点就行

ShinyShot

一个是smc
还有一个是改了码表的base64,在进行加密
然后字符串比较
smc的话看汇编能看到有一段代码没有执行
爆出来输入的数
好像是181几几来着
smc后对输入的数进行改了码表的base64
然后是异或操作,后一个与前一个异或
然后与文件中的一串比较
用winhex打开也能看到比较的那串在文件最后
当然调试也行
HGAME 2019 WEEK2_第5张图片

Pro的Python教室(三&四)

看到字节码前面一段有一个load const 100
可以看出是花指令,
这边也能学到很多,程序不被影响能运行,是因为在load const 100上方有个jump操作
所以这一段不会被运行,但是反编译的时候就不一样了,反编译的时候这一段就会有问题,导致无法反编译。
删除掉后,改一下长度,就可以反编译啦~
但是代码还是有些奇怪的

#!/usr/bin/env python
# encoding: utf-8
import string
letters = list(string.letters) + list(string.digits) + [ '+','/']
dec = 'FcjTCgD1EffEm2rPC3bTyL5Wu2bKBI9KAZrwFgrUygHN'

def encode(input_str):
    continue
    str_ascii_list = [ '{:0>8}'.format(str(bin(ord(i))).replace('0b', '')) for i in input_str ]
    output_str = ''
    equal_num = 0
    for x in [0,6,12,18]:
        continue
        temp_str_list = [][temp_str[x:x + 6]]
        continue
        temp_str_list = [ int(x, 2) for x in temp_str_list ]
        if equal_num:
            temp_str_list = temp_str_list[0:4 - equal_num]
        continue
        ''.join += []([ letters[x] for x in temp_str_list ])
        str_ascii_list = str_ascii_list[3:]
    output_str = output_str + '=' * equal_num
    return output_str

print "Welcome to Processor's Python Classroom Part 3&4!\n"
print 'qi shi wo jiu shi lan cai ba liang dao ti fang zai yi qi.'
print "Now let's start the origin of Python!\n"
print 'Plz Input Your Flag:\n'
enc = raw_input()
lst = list(enc)
lst.reverse()
llen = len(lst)
for i in range(llen):
    if i % 2 == 0:
        lst[i] = chr(ord(lst[i]) - 2)
    lst[i] = chr(ord(lst[i]) + 1)

enc2 = ''
enc2 = enc2.join(lst)
enc3 = encode(enc2)
if enc3 == dec:
    print "You're right! "
else:
    print "You're Wrong! "

这并不影响写题,稍微看看就知道,其实是吧输入的进行base64,改了码表而已,
然后进行字符串匹配,把那串字符串拿出来,大小写互换一样,找个网站解一下base64就能出答案
本来想硬撸字节码的。。。可惜还是太菜了。。。

re就写到这

misc

Are You Familiar with DNS Records?

Google一下一个在线查dns的网站
域名输进去
完事

快到火炉旁找个位置坐坐!

这题太奇葩了
没玩过炉石传说
但也能写
Google了解一下代码的组成
然后大数据分析
首先解base64

\x00 \x01 \x02 \x01    //瞎七搭八的版本啊,还有啥编号
\xfd \x04 			   //英雄编号
\x06 				   //数量   这边明显应该是 0x04
\xed \x05 			   //卡牌编号
\xb8 \x08 
\xee \xf6 \x02 		   //经过大数据分析,发现这边也有问题   这边第二个是f6,下面是c1,f6比c1大,所以上下要互换
\xd0 \xc1 \x02 
\x0c 				   //数量   这边也明显应该是0x0d
\x8a \x01 
\x9c \x02 
\xae \x03 
\xc9 \x03 
\xab \x04 
\xcb \x04 
\xe6 \x04 
\x98 \xc4 \x02 
\xda \xc5 \x02 
\x96 \xe4 \x02 
\xb4 \xfc \x02 
\xd2 \x89 \x03 
\xa6 \x98 \x03 
\x00 

然后修改后来一次base64编码就ok了

找得到我嘛?小火汁

ssl
从流量包里提出一个压缩包,有个secret.log文件
导入
然后查看可提取的文件发现一个东西。。。
用winhex打开就能看到flag
//大家一定要配好环境,然后再导入就可以啦

misc就这些啦
那个初识二维码写不出。。。
26x26码元的二维码。。。吧左边和上面去掉弄成25x25的加上定位标致还是扫不出
自闭了

crypto

浪漫的足球圣地

先Google一下标题,发现曼切斯特就知道了
吧里面每个都单独,一定是单独
16进制转二进制
然后解一下
再转字符串
完事

hill

希尔密码
已知明文攻击
大家自己找资料去学习吧

Vigener~

在线维吉尼亚解一下就出来了鸭~

这一周能学到很多东西
感谢航电的师傅们出的题目
顺便祝大家新年快乐~
HappyNewYear2019
过年这周也没多少时间写题哎
好多题目都没写出来
希望大佬们多教教我
在这也要
感谢奈沙夜影师傅,万能王大佬,还有郁离歌dalao
希望能在新的一年多教我些东西

你可能感兴趣的:(ctf)