江苏省-领航杯部分wp

  

前言

只能说这比赛平台**,题目**简单记录一下,毕竟自己也做了好久

一、AI黑白棋

打开程序是下黑白棋,要战胜AI才能获得flag。

利用ollydebug打开,找到跳入,单步步入真正的程序,然后中文搜索得到flag。

二、我是一个贝斯手

利用IDA打开能够很清楚的看明白逻辑,encode函数和judgement函数都是注明了的。Base加密自定义table。

Exp:

#!/usr/bin/env python

#_*_coding:utf-8_*_

import base64

import string

base64_enc_table=string.ascii_uppercase+string.ascii_lowercase+"0123456789"+"\\"+"+"

base64_enc="Nseky2SjMiUq9tf/BEIlaJxAwPT07V+pWX6LFgG3ZmOHK4Y8uQhRz1oDc5nCrdvb"

v7 = 'X4DPXQGP'

v8 = 'uWRtcMSt'

v9 = 'RyotcBR9'

v10 = 'FJk9uBot'

v11 = 'cWlP5alP'

v12 = 'RFRt1MRt'

v13 = '=z3w'

 

flag_enc=v7[::-1]+v8[::-1]+v9[::-1]+v10[::-1]+v11[::-1]+v12[::-1]+v13[::-1]

print flag_enc

base_flag=""

for i in flag_enc:

      if i=="=":

             base_flag+=i

      else:

             print i

             base_flag+=base64_enc_table[base64_enc.index(i)]

 

print base64.b64decode(base_flag)

三、Easycpp1

ida打开之后发现异或,但是根据题目提示do you find it继续往下看,发现if判断后的执行。对k进行爆破

Exp:key_word = "STUVWXYZ{}abcdefghijklmnopqrstuvwxyz_!ABCDEFGHIJKLMNOPQR"

key_list = [0x1f0x3a0x1d0x070x1c0x140x0d0x100x080x3d0x10,0x0a0x230x0d0x100x370x0a0x230x3e0x070x200x04,0]

test_key = [3389145201561117173229]

tempstr_list = []

key = 0

forturn inrange(10000000):

    tempstr = ""

    k += 0.1

    fortemp_key inkey_list:

        temp_key = int(temp_key * k) %56

        tempstr += key_word[temp_key]

    if"flag"intempstr andtempstr notintempstr_list:

        print(tempstr)

        tempstr_list.append(tempstr)

        input("")

四、Easycpp2

同样的爆破思路

t1 = [17, 19, 27, 55, 5, 11, 0, 6, 54, 52, 14, 20, 26, 0, 17, 4, 26, 18, 12, 0]

t2 = "STUVWXYZ{}abcdefghijklmnopqrstuvwxyz_!ABCDEFGHIJKLMNOPQR"

res = [199, 235, 202, 228, 200, 235, 195, 220, 212, 191, 110, 186, 205, 107, 10]

 

for i in range(20):

    for j in range(56):

        res = ''

        for k in range(20):

            res += t2[(t1[(k + i) % 20] + j) % 56]

        if res[4] == "{":

print res

五、re_easy

enflag = [0x66,0x6c,0x61,0x69,0x7b,0x57,0x61,0x78,0x6f,0x67,0x61,0x75,0x89,0x61,0x6e,0x7b,0x9d]

flag = ''

forinrange(len(enflag)):

        enflag[i] = enflag[i] ^ i

        printenflag[i]

forinrange(len(enflag)):

        flag += chr(enflag[i]-i)

print(flag)

Max_easy_Re

六、BabyRe

先利用patch过反调试

动态跟一遍就可以看到了

固定数组去下标即可

七、PYC

先吧PYC进行反编译

开头就是rc4加密然后有些错误改正一下改交换值

然后爆破key然后爆破flag

#!/usr/bin/env python

# encoding: utf-8

# 如果觉得不错,可以推荐给你的朋友!http://tool.lu/pyc

import random

import base64

from hashlib import sha1

 

def fun1(data, key):

    x = 0

    box = range(256)

    for i in range(256):

        x = (x + box[i] + ord(key[i % len(key)])) % 256

        t = box[i]

        box[i] = box[x]

        box[x] = t

    flag = ""

    x = 0

    y = 0

    out = []

    for char in data:

        x = (x + 1) % 256

        y = (y + box[x]) % 256

        t = box[x]

        box[x] = box[y]

        box[y] = t

        for i in range(256):

            temp = chr(i ^ box[(box[x] + box[y]) % 256])

            if temp == char:

                flag += chr(i)

                print i

                break

 

    return flag

 

 

def tencode(data, key, encode = base64.b64encode, salt_length = 16):

    salt = base64.b64decode(data)[:16]

    data = base64.b64decode(data)[16:]

    data = fun1(data, sha1(key + salt).digest())

    return 

 

if __name__ == '__main__':

    

    data = 'nKgI13JDX8qpFyUcvsnZqyKxb8Zfv9jCnrWul2knc8ZzhlfDpPxZmA=='

    key = "5723"

 

    print tencode(data = data, key = key)

 

 

 

'''

for i in range(1000,9999):

    key = str(i)

    temp = fun1("flag{",sha1(key+slat).digest())

    if temp == data.base64.b64decode(data)[16:21]:

        print "key: " + key

key = 5723

'''

八、crack

原题利用pintools直接爆破,github上有ctf-pins,范例题就是这个题目

flag{dr4g0n_or_p4tric1an_it5_LLVM}

九、小明。Arm

原题:https://alessandrogar.io/post/bsides2017-disarming-a-raspberry-pi/

FlgG76673250

十、flag在哪里

根据符号链接找到原题

https://github.com/vidar-team/hctf2015-all-problems/tree/master/re150

flag:HCTF{UareS0cLeVer1234}

十一、binary

key利用idc脚本可以输出,利用几个key一Google就出现了原题

https://github.com/n0l3ptr/codegate/tree/master/EasyCrack_101

 

FLAG{Thank_U_4 s0lving_MY_Pr0b…u_@re_vEry_genius!!!}

 

十二、break_jpg

利用winhex打开

从中分离出zip压缩包

利用zip修复工具修复后进行解压

得到pdf文件,同样利用工具修复

最后再解压文件中找到flag

 

十三、图片

更改了图片crc校验值,得到一个比较清晰的图

利用stegsolve

然后进行对比得出flag

4CFFD79DC13D2B4D515E8E87A79B08D8

十四、妈妈的唠叨

解压脚本解压出文件发现隐藏的flag.txt

最后对其中的文字进行频率分析

尝试几次后得到flag

cdtuhiyjnsvkbemo

十五、xor

护网杯原题,迟来的签到

十六、misc_chinese_dream

社会主义加密?

十七、system

enflag1 = 'ADmin13trat0r'

enflag2 = '4331d3b4e9431e7'

flag = ''

for i in range(len(enflag1)):

      if ord(enflag1[i]) == 97 :

             flag += chr(122)

      elif ord(enflag1[i]) == 65 :

             flag += chr(90)

      else:

             flag += chr(ord(enflag1[i]) - 1)

print flag

#本身为数字的就不需要改

#第二个就是将数字倒置

#第二个字符串进行了顺序调换

十八、奇怪的密码

利用word文档进行自负的替换最后出了

T0o0o0o0o0P______1m_h4V1nG_FuN_r1gHt_n0W_4R3_y0u_h4v1ng_fun______K3K!!!

十九、dict_create

利用社工字典生成器,生成字典

字典攻击得到密码为xiaoming_22

得到里面的flag文件

1a3dcc6272c5ed3531d1ea1dfc3b8cec

总结

。。。。。

你可能感兴趣的:(江苏省-领航杯部分wp)