2023 第一届“躺平杯”信息技术与网络安全入门赛

目录

misc

签到

躺平问答

神秘的……文字

二维的码

我抄,盒!

web

Happy2023!

HTTP百解

WearMe 核心机房 准入验证

Algorithm

V我≈50

口算大整数

Binary

躺平flag提取器

躺平flag提取器 · 极速版


misc

签到

一眼base100直接出flag

躺平问答

这一题没解出来完

0.

3.weilei.studio 在赛前进行了一次停机维护,截止至2023-01-15,最后一次维护结束的时间是?(使用CST时间,精确到30分钟)

网页底部运行状态,点击之后,发现有一个停止运行时间

5.bytessec.cc的注册时的域名服务商是?whois查询

6.weilei.studio 在@域下有个TXT解析,它是?

7.weilei.studio的直接解析的IP地址所属的自治系统编号(ASN)是??

浏览器抓包,查看远程ip:104.21.50.158

9.程序员最多的地方本次SSL证书过期时间是?

一眼github,curl -v GitHub: Let’s build from here · GitHub 查看* expire date的值

神秘的……文字

这么简单

题目名字是这么简单,但是我觉得好像并不怎么简单,看到提示才做出来的,一开始没想到改表的事情,单纯的去尝试各种编码,始终是没有解出来。

第一步是base解码,解码之后的文字携带几个等号

第二步还是base解码,我是不断尝试其他表才试出来的,虽然做出来了,但是还是不知其然

毕加思索

上一个flag解出的时候,出现了一堆表情,然后base100解码,出现一堆喵呜文字

这段字符我在百度找到了喵语翻译,但是没有解出来,仔细看了一下”滴滴滴哒哒 “ 想到了摩尔斯

于是将喵替换成'.',呜替换成'-',然后在线转换一下

.... . -.--   .... . .-. .   .. ...   ..-. .-.. .- --. ..---   ..-. .-.. .- --.   .. .-.. .---- -.- . -.-. ....- -     .-. . -- . -- -... . .-.   - ---   .- -.. -..   -... .-. .- -.-. . ...   .- -. -..   .- .-.. .-..   -.-. .... .- .-. .- -.-. - . .-. ...   .- .-. .   .-.. --- .-- . .-. -.-. .- ... .   ..-. --- .-.   -. . -..- -   .--. .-.. . .- ... .   ...- .. ... .. -   .-- . .. .-.. . ..   -.. --- -   ... - ..- -.. .. ---   ... .-.. .- ... ....   -- . -.. .. .-   ... .-.. .- ... ....   ..-. .---- ....- --. ...-- --- ..-. .--. .-. ----- -... ----- ....-   -.. --- -   .... - -- .-..

这个摩尔斯代码要多试几个网站才可以解出来

解码出来

HEYHEREISFLAG2FLAGIL1KEC4TREMEMBERTOADDBRACESANDALLCHARACTERSARELOWERCASEFORNEXTPLEASEVISITWEILEIDOTSTUDIOSLASHMEDIASLASHF14G3OFPR0B04DOTHTML

对单词进行差分,老实说,英语不太好:(

flag{il1kec4t}

喵?咕?唔~

按照上一题的题解,找到题目入口,https://weilei.studio/media/f14g3ofpr0b04.html 访问看到是那啥加密,

尝试解密

3bZQw1kEq8ZUdBUyk53JA4j4whLycw4HRhpxnC1d6XFgGThG9RmqDmeFKfvDE3k5mWrF7NzK9JimM6zLseYQ2T22wxtvPvUeo17P4LrRFx5HYqv57TEoJnzZ4AkxofHjuya4xJnLQAp5Wxir9TNAYrynvXmn44aUuZZm7Yh5JAh4KrNeux8LMmJemJi49eVme8EXZYRwrorprdPr1LUtXnLLSXqjaeAzYWhQXbDq2gktf4Wpxb57TvqTw8x76gVCZdmrMEfpcu4hK4rhYEBUkZvjebJLhL6MvL1EAmDRdEXkFzkQP5cqaE6gYxWFEf6UjMb8VYd6eP1FssmoWcb82WtE53Wy2dcZ2SHdxQTTxdrHVvacWa7uVoufWn1f8LkPzJcpybeiaFLRCMCQnGsEX6JwQEUjDVuD1XcazgdH1jbe1EYXRw8iaZtqdNoTx54zA74wokFnV1oSCaLx4uYUZhEFwfWCzaqdmuygVQjcxQbeBQ3crBAiknf1mRn3LDGTA1t9KU2jbCB1PB94yVQtYyFAXoFwTNBc1MPo4PKyvQBCn35hfWFSAZP5XDXTRaA9NxnanWMSRjB23NtPBZ5httVifTiZpoBKDFp1UxRFPXFG1TVDUcipzsamgH2r8FHN5haQUMH1HtH6qnkHf4Xbb8ZNWya6YgGVtpaEH79eUw2XT9iQX3YTmP7Q75jjFGSS7rVcWEHd

base58解密一下

GDP (Gozdura Dha Plot) ndordac prem CAPGES GDP, o gemzadidika toma omest gemzudar naguridy asdhuniondn, eritisolly hendac is 1996. plot3: plot{MioeTuVu_Dostzist} GDP gekarn o vica rosta ep pialcn. Olest vidh dha akelkist naguridy daghselety, dha cippiguldy ep GDP ghollastan in taddist horcar osc horcar. On o ranuld, dha laorsist gurka per fatissarn in taddist ndaazar. Mend eslisa ispermodies in ngoddarac osc drikiol. Fatissarn epdas ces'd bsev hev de nyndamodigolly laors GDP, vhigh raquiran o led ep verb osc apperd.

好了,不会了

二维的码

来自理塘的码

一眼汉信码,上传在线识别失败,对比了一下正常的汉信码发现颜色相反,画图工具取反色出flag

得知下一条线索在/media/boarding_pass.zip中,访问下载附件

你管这叫码?

下载压缩包,解压发现需要密码,但是是部分加密,查看未解密的那个文件,发现是一个二维码

老方法,缺了三个角,ps补上去

识别结果:password:ecfbcf7a-0c77-ed48-2e2e-1a993ebd006e,得出加密文件的密码

解压文件之后得到一个很离谱的码,尝试一下条形码能不能扫出来,结果真扫出来了,乐

来自兔年的码

访问/media/enterpoint.gif,看到一张二维码,看似离谱,实际一扫就出来了

访问路径,得到一个压缩包,解压出现三个码,扫一下

分别得出

  • U2FsdGVkX1+QTZuns6phvCNw3MWMReSM3yeB
  • 8ZXH4JZBpFxCGu5rDf/2pS4H6w7G0B+1
  • (01)11451419198103

通过开头的U2结合题目名,猜测是rabbit加密,果断试一下,出flag,ok!

我抄,盒!

照片中的flag

date.jpg exif中存在flag

网站中的flag

这个还是没啥好说的,信息都在exif中查找,唯独那个经纬度的,我试了好几个都不对,离谱

web

Happy2023!

这题比较有意思

开局一个网页,啥也没看懂,搞半天没明白到底怎么登入

没有这个提示真做出来了

通过百度学习,大概了解了这种东西,写了一个脚本

import requests
from lxml import etree


url0="https://prob01.weilei.studio/"

res=requests.get(url0,auth=('BytesSec',"my_token:xxxxxxxxxxx"),)
print(res.text)
# print(res.request.headers)
# print('------------')
print(res.headers)

一开始运行出现的结果是:Login Success! Go...WAIT, let me check again!

在这个阶段卡了一会,我以为是需要请求两次,然后用session会话请求了两次,结果仍然是这种,后来看到提示jwt,然后就添加了一行print(res.headers),查看响应头,发现响应头返回一个jwt

其中有个提示:hint=salt_is_6_digits_HHHaaaaa;

jwt的密钥是6位数字,简单,直接上工具,前段时间试图暴力破解某app的jwt密钥工具还在

破解结果是114514,其实我应该想到是这个:(

写一个生成jwt的程序

import jwt
pay={
  "user": "admin",
  "exp": 1674401851
}
header={
  "typ": "JWT",
  "alg": "HS256"
}
key='114514'
jwn_con=jwt.encode(pay,key, algorithm="HS256")

print(jwn_con)
#hint=salt_is_6_digits_HHHaaaaa;

然后添加一个headers请求头,请求到到一串base编码,解码之后是目标网站

将html元素中的 disabled="disabled" 删除,即可输入token

看一下活动规则,其实就是遍历所有的/8网段,255个ip地址

写一个脚本跑一下

url2="https://ilrxbzij.weilei.studio/invite/28fb4aec-970e-40ec-b5de-fdcb17b31bba"
for i in range(0,256):
    data={"ip":"{}.1.1.1".format(i)}
    print(i)
    res=requests.post(url2,data=data).text
    html=etree.HTML(res)
    con=html.xpath("/html/body/div/div/div/div[1]/text()")
    print(con)

然后提现flag,虽然只有两块多,但是还是挺快乐的

HTTP百解

神之眼

第一个flag直接ctrl+u查看源代码,但是现在已经看不到了:(不放图片了

导引内卷之力

请求一下目标网站,上面说是使用Bytes安全浏览器,然后我就把ua换乘Bytes,结果不对啊,我寻思着那么多人都做出来不应该会很难啊,奶奶滴,后来才发现是我理解问题,ua应该是Bytes Security Browser

回显说是,需要admin身份,研究一下cookie,常见编码没有解出来,猜测是摘要算法,试试md5

简单,md5加密一下admin,然后放进去,再次请求,然后回显Please request me with BYTES method!,我寻思着哪来的BYTES方法,颠覆认知,后来发现这个方法可以自定义,改一下呗,把GET换成BYTES,请求一下

回显说是,data方式发送数据

  • fruit: ('b'+'a'++'a'+'a').toLowerCase()
  • token:my_token

关于('b'+'a'++'a'+'a').toLowerCase() 是什么东西,百度搜了一下

写了个脚本,跑一下直接出flag

# http百解

import requests
import re
from lxml import etree

url = "https://prob06.weilei.studio/?token=xxxx"
headers = {"user-agent": "Bytes Security Browser", "Cookie": "role=21232f297a57a5a743894a0e4a801fc3;Path=/"}
data={"token":"my——token","fruit":"banana"}
res = requests.request('BYTES',url, headers=headers,data=data)
print(res.text)

躺平问答 · Beta版

打开网页只有输入框没有题目,看一下源代码,什么也没有

试试乱填内容提交一下,过程抓一下包,分析一下请求头数据,果然,有猫腻!

这里有一处看似base编码的东西,试试解码一下

前半部分是个人token,后面有一个|0,难道是正确题目数量?实践是检验真理的唯一标准,管它呢先试试再说,更改一下url的result值,访问拿到flag

WearMe 核心机房 准入验证

我去,你怎么在这

burp上万能密码字典

Algorithm

V我≈50

老实说,我不会算法啊,但是还是做出来了这道题,非预期解

打开网页,猜v多少,然后输入一个值,但是题目忽略了cookie的问题,每一次提交之后cookie都会变化,这个是关键点,我猜,如果对该数据包进行重放,第一次看到正确的答案,重放之后,携带上次的cookie,请求的v值改成正确的,就可以看到flag了,后来题目好像修复了。。。

口算大整数

这个题也是认真学习了一下密码学的知识才做出来的,难度不大,主要是之前没有接触过,所以无从下手。

加密代码

from random import *
import sympy
p = {guess}
q = {guess}
n = p * q
phin = (p - 1) * (q - 1)
e = 3
m = int.from_bytes(b'flag{falg_or_f14g}', 'big')
c = pow(m, e, n)
print('N='+hex(n))
print('e='+hex(e))
print('c='+hex(c))
# N=0x5c4b7517422507f74540ba361bcf27dd8f3f62891bc8d674c9fc242d23711f6c18f5958af89d9300174a11c596f4cc6b6286f91a460e32e016c2c3880885601ddc1e6b479fe2b25a879e1ac51b2a019c4bfc0565e513e9b631f451fea7548345675d3a07f003e6e602452aa19d6eb9a54948abb80b3cc2177faf23991525a14603c0c9ececbc887af999e500344aba6be07ef6d1b5995d06ed02ecd0dcb659ac02b4455e55edd2714c947fad6f2a20f69e59ec64467ecd14213df84ef986be2758efd4cbb76a166999f6f3cfd158654d02e0694c52a0ea1a449c8e55f7c57530739ed36da041431af16c209085c985a1bb84fdc33aee33ff136b
# e=0xa
# c=0x6e33c752c8c1bffd6b819b9de9a95f1d6fe3a192b5b8fe07bb1cd036249da1319dc424ad0033d098c55afc7cc8d336f95de8a176a223c7766d168a50c04b2d71d538cf2905cfe64fcf8854c78d2024309a1bbb0ffb01aa3966c6182cd2a0ab56c396607e170a8d9b17e728b9e23d9b3f5406f9c6fc33be7827acf2d552d9c97db03b0e645bb9e8b9552806b9a417b1132437948a7d86a3a3dce5f2becdac052278a02b5b0274a053a48e428deb957fab1f576f892f9fcbb78c55b1db183e76c49ad1ccc5e86113c51c70b58e5ba1e37869ecad1e63672878aca418b337fce1aba1fa27e371cefb5d4302c9917424754924c52e7aa8ac399a9

低加密指数分解攻击

在 RSA 中 e 也称为加密指数。
由于 e 是可以随意选取的,选取小一点的 e 可以缩短加密时间(比如 e=2,e=3),但是选取不当的话,就会造成安全问题。
由于e很小,当n很大时,Me也比n小很多.尝试把c开根号看能否得到明文。

解密代码

import gmpy2
n = 0x5c4b7517422507f74540ba361bcf27dd8f3f62891bc8d674c9fc242d23711f6c18f5958af89d9300174a11c596f4cc6b6286f91a460e32e016c2c3880885601ddc1e6b479fe2b25a879e1ac51b2a019c4bfc0565e513e9b631f451fea7548345675d3a07f003e6e602452aa19d6eb9a54948abb80b3cc2177faf23991525a14603c0c9ececbc887af999e500344aba6be07ef6d1b5995d06ed02ecd0dcb659ac02b4455e55edd2714c947fad6f2a20f69e59ec64467ecd14213df84ef986be2758efd4cbb76a166999f6f3cfd158654d02e0694c52a0ea1a449c8e55f7c57530739ed36da041431af16c209085c985a1bb84fdc33aee33ff136b
e = 0xa
c = 0x6e33c752c8c1bffd6b819b9de9a95f1d6fe3a192b5b8fe07bb1cd036249da1319dc424ad0033d098c55afc7cc8d336f95de8a176a223c7766d168a50c04b2d71d538cf2905cfe64fcf8854c78d2024309a1bbb0ffb01aa3966c6182cd2a0ab56c396607e170a8d9b17e728b9e23d9b3f5406f9c6fc33be7827acf2d552d9c97db03b0e645bb9e8b9552806b9a417b1132437948a7d86a3a3dce5f2becdac052278a02b5b0274a053a48e428deb957fab1f576f892f9fcbb78c55b1db183e76c49ad1ccc5e86113c51c70b58e5ba1e37869ecad1e63672878aca418b337fce1aba1fa27e371cefb5d4302c9917424754924c52e7aa8ac399a9

k = 0
while 1:
    res = gmpy2.iroot(k*n+c,e)
    if(res[1] == True):
        print(bytes.fromhex(hex(res[0])[2:]))
        break
    k += 1


#b'flag{W0W_REa11y_E4sy_R5a}'

Binary

躺平flag提取器

我真的不到啊

ida打开 shift+f12查看字符串,找到flag

太美丽了家人们

这个题我一直以为是rot13,因为在c++代码中看到了rot13,老实说,我不会c++,没有理解里面的代码逻辑,尝试了很多次发现不对,大年初二的上午学了一会ida动态调试,结果真给调出来了,别的不说,真太美丽了家人们。

躺平flag提取器 · 极速版

快速提取

一看是Android,直接jadx打开看一下,看到flag了,但是这个flag有点奇怪,

java代码对flag进行了分片操作,用python还原一下,得到正确的flag数据

安全提取

通过观察native类得知第二个flag在so文件里面,个人观察的主要特征是:System.loadLibrary("main")

导出项目,在resources\lib目录的随便一个子文件夹,找到libmain.so文件,用ida打开,查找字符串就可以看到flag,不得不说,这个题是真基础。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值