GeekChallenge2020
10.17
好家伙整忘了,在草稿箱了呆了半年了都。
Web
朋友的学妹
view-source:查看网页源码
与妹子单独相处一会儿吧
网页了解到可以使用view-source:可以看到网页源代码,执行命令
view-source:<url>
得flag.
EZwww
备份文件
提示:备份是个“好🤺”习惯
提到备份文件,想起前不久刷过的GITHUB上的题,跑过去看了一眼,(Web-Web前置技能-信息泄露-备份文件下载),想起了当时的思路👇
python3 dirsearch.py -u <url> -e *
得👇
搜索网页http://47.100.46.169:3901/www.zip可得一个压缩包,flag!!!.txt里写着
SYC{th1s_1s_4_f4ke_fl4g}
好叭不是。
观察压缩包里index.php,
<?php
$key1 = $_POST['a'];
$key2 = base64_decode('c3ljbDB2ZXI=');
if($key1 === $key2)
{
//this is a true flag
echo '<p>SYC{xxxxxxxxxxxxxxxxxx}</p>';
}
?>
由此构造a=sycl0ver,得flag。
EZgit
Git泄露
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,嘿嘿嘿。。。
同上一题,可得👇
观察得一/.git/
想到曾经GITHUB里的(Web-Web前置技能-信息泄露-Git泄露),通过
python2 GitHack.py <url>
进入dist里
git log
git diff
得flag.
RE
No RE no gain
请在招新群的文件和博客文章了解逆向工程;https://down.52pojie.cn/Tools/Disassemblers/IDA.txt 不知道下载哪个的话就下载IDA_Pro_v7.0_Portable.zip;Hint 3: IDA F5 反而找不到关键位置
找_main函数,直接看到flag.
MISC
壮言壮语
佛曰:豆梵能佛冥謹沙怯隸道等孕喝伽訶恐奢耶尼殿怯怖奢三缽南怛缽娑皤寫數皤究呐者醯皤勝孕皤顛皤耶夜哆悉侄羯涅悉怯老若俱勝菩知菩所蘇奢以梵世心亦呐耨夷哆至哆醯即波怯明除怯闍怯集怯尼明皤實怯一心缽呼侄羯夢室諳耨呐提迦梵都都呐孕礙諳那呐彌豆缽智遮諳槃提伽俱穆離冥伊冥那藐罰摩迦諳有諳盡即怯多逝侄婆冥涅神
在线网站解密得flag。
Crypto
二战情报员刘壮
你能知道刘壮在说什么?得到的flag包裹上SYC{} .-…/.----/…-/–…/…/…-/…-/-./–./…–.-/…/…–.-/–…/.----/-.–/.----
摩斯密码解密得flag。
铠甲与萨满
YEI{roafnagtmroafnagtm_hgtmhgtmhgtm}
在线网站也可。
GeekChallenge2020
10.18
Web
刘壮的黑页
没有人比我刘壮更懂请求方式
发现PHP代码
<?php
include("flag.php");
highlight_file(__FILE__);
$username = $_GET['username'];
$passwd = $_POST['passwd'];
if ($username === 'admin' && $passwd === 'syclover') {
echo $flag;
}
构造相应传参方式
得flag.
Misc
来拼图
[来拼图]
题目附件:https://pan.baidu.com/s/1hee3eFvDDA9lpdlElHtZLA 提取码: gy89
就,纯拼图。跟之前一场比赛类似,相对简便的方法是按文件大小排序后,再进行手动筛选👇
GeekChallenge2020
10.19
Web
[flagshop]
题目地址: http://173.82.206.142:8005/ 题目描述: 你给我钱,我给你flag,就是这么简单;1.No sessionid!Don’t Try to be admin(robot?) 2.Do you know csrf?
就直接购买FLAG??
[我是大黑客]
题目地址:http://39.106.144.160:100/
<?php
eval($_POST['liuzhuang']);
//谁是大恶人 那必定是我liuzhuang
//当你的服务器看到 0xliuzhuang 就知道要买台新机器了
?>
Crypto
成都养猪二厂
[成都养猪二厂]
题目地址:https://share.weiyun.com/FdTTmTP7 题目描述:v先生家里蛮大的,还有很多啤酒。v先生之所以能过上这样快哉的生活可能是因为他的养猪场厂围上了高高的栅栏
根据题目,猪圈密码+栅栏密码。
猪圈密码本来还猜测图片到底那边为正面,故试了两个版本,转成小写后分别为xbhpmvaptacivbeegjapvv和ssyirceehsagiulisolbhy
栅栏密码在线解密,想起之前接触过W型,结合HINT:
...(嘟哝)..
(int)sth_import = 889464/114514;
....(嘟哝)...
解密得类似有意义字符的字符串,分割后提交,正确.
韡髻猊岈
[韡髻猊岈]
题目地址:https://share.weiyun.com/Y5qldy3K 题目描述:v先生最近说话越来越奇怪了
傻逼了,昨天就知道是维吉尼亚了。在刷Pico的时候遇到一个超级好用的在线网站,出了明文
Modern cryptography is heavily based on mathematical theory and computer science practice; cryptographic algorithms are designed around computational hardness assumptions, making such algorithms hard to break in SYC there is no tears in vigenere
结果愣了一天,今天突然灵机一动,发现flag就是SYC there is no tears in vigenere加{}和下划线。淦
GeekChallenge2020
10.20
MISC
秘技·反复横跳
[秘技·反复横跳]
题目附件:链接:https://share.weiyun.com/6oCZShYV 密码:114514 对图片…使用binwalk拳吧!
binwalk,啥都没有。观察了一波手头关于图片的工具,准备一把梭。
运气好,第一个就碰对了,foremost.
分离出一张处理过的二维码,PS后得flag。
GeekChallenge2020
10.20
Crypto
[规规矩矩的工作]
题目地址:https://share.weiyun.com/RPDWr2WQ 题目描述:wlz当年玩蹦蹦蹦为了抽希尔氪了很多钱
提示:hint1:让我看看是谁不好好上线代课?hint2:decode程序可能加载的有点慢并且请在命令行内运行
想了好久,明确该加密方法为希尔密码。
key_encrypt
1 1 1
1 2 3
1 3 6
enc:
12
12
10
但直接加密后为(34 66 108),不对。
又想了好久,还怕自己算错了,找了个在线网站发现应该decode(😂),先求逆矩阵,得
与密文相乘得
mod26后得明文KEY,输入exe得flag。
[babyRSA]
题目地址:https://share.weiyun.com/lbPVqZN2 题目描述:因为每晚都有小毛贼翻过v先生的栅栏去对猪圈搞破坏,v先生的养猪场不久就倒闭了。失落的v先生感觉不会再爱这个世界了。在他起身去找工作之前留下了一张纸条。
from Crypto.Util.number import *
from gmpy2 import *
from secret import p,flag
flag = bytes_to_long(bytes(flag,encoding='utf-8'))
q = getPrime(1024)
n = q*p
phi_ = (p-1)*(q-1)
e = 0x10001
d = invert(e,phi_)
c = (pow(flag, e, n))
print(long_to_bytes(pow(c, d, n)))
print((c,q,n))
'''out put
(177177672061025662936587345347268313127241651965256882323180749317515733256088163186914550682635245294414879862810654773207644687262596440870094409378849307188485755700138797651039936445998433830516207630858733090581643592843521203499818069822504434370840254518614785953412492701730326524258672860416318501278155194,
166836705584681518148179737955842605213272207836752187845124149461151181903779374775281529346854786259719545699157508885500818994019618158708212777833768444327658647324555090459233657737950932895018766440119999513331707759691054888319029069397903003240927552065429412176600134636921146805408664505115889561043,
191051885543358947736760989661967468461742175898801910645529003886391047898839624568290216360845330501814019720570327197669064365268607597117598905046895097642708006373182989953758208523010345148200475257538336602695211819055893667974317905617522838840325499754862033348148407978527792816186094297381925119601464149)
'''
已知pqenc,跑脚本得flag
#! python3
import gmpy2
import libnum
p = gmpy2.mpz(166836705584681518148179737955842605213272207836752187845124149461151181903779374775281529346854786259719545699157508885500818994019618158708212777833768444327658647324555090459233657737950932895018766440119999513331707759691054888319029069397903003240927552065429412176600134636921146805408664505115889561043)
q = gmpy2.mpz(1145143)
e = 65537
c= 177177672061025662936587345347268313127241651965256882323180749317515733256088163186914550682635245294414879862810654773207644687262596440870094409378849307188485755700138797651039936445998433830516207630858733090581643592843521203499818069822504434370840254518614785953412492701730326524258672860416318501278155194
n= 191051885543358947736760989661967468461742175898801910645529003886391047898839624568290216360845330501814019720570327197669064365268607597117598905046895097642708006373182989953758208523010345148200475257538336602695211819055893667974317905617522838840325499754862033348148407978527792816186094297381925119601464149
n=p*q
s = (p- 1) * (q - 1)
d = gmpy2.invert(e,s)
m = pow(c,d,n)
print(libnum.n2s(pow(c, d, n)))
GeekChallenge2020
10.26
Crypto
[childRSA]
题目地址:https://share.weiyun.com/ht7XxhWr 题目描述:v先生有一边听广播一边码字的坏习惯。为了保证coding工作的正确性,v先生今天把数据多算了几遍
给了一段代码一段数据。
题目地址:https://share.weiyun.com/ht7XxhWr 题目描述:v先生有一边听广播一边码字的坏习惯。为了保证coding工作的正确性,v先生今天把数据多算了几遍
根据之前的经验,代码八成是用来解释此种加密方法的,只抓重点信息,e=3即可
上低加密指数广播攻击脚本
#!/usr/bin/env python
e=3
n1 = 0xe096219878f492bcdb2a2d03995521e7a65125733bae18e7d0005e35343fea3653698de60231d29b2d1b44a0b4ffd3183855b9042275f769e1702fa8843062df0938821db0258af40ab3cda8e54eb6ac826d545df91dfe76266cb01b1d6fad39e6ef13ce730c1c2395136b0bbdf22c6b0daba63701d71c6ae70d4e06935b9941
c1 = 0xff24bddc5a7b327535af92dba58c5d62a22d542e6ba1df6f91c98c7563d8e48e770fb623bfcc2f09ed49788293306ff709670b225da32ea134422d5e403b11c39ef6b144f96b2fe94b3aa136432ecea86a4069a4cb0b4d8570edb3fb5bb2cf0693184ef0c589887b012ebe6ea94e854a71a7eb768133d15e784e388976877db
n2 = 0xa36b15a395edf3e99927f658e22d5f4aefd83434972c96cca5242a1aaa517ad83739451269723092dd9e73c00682dd3bbd74a985546def88196119b6d57b397283bc7b8b6029916df84284bec1725f6e5d3d29042af685c508a58ab6fb4e5bfeb326ae49330e3f4426abc1860ca4412feb976ee571075a47b854c9a6f5f0ebff
c2 = 0x895f8283e2200bab1bf938ce3b5e42147b53a5178e436ea0b64a2380ba99776d5ba8046ef722858b20d9650ee68c09e905030f1634e0b32397b7b12236a5a301e5923a294ef1bdf16458f4fc8677370ce2ce3d0fd957da7466e5b104191d454455917147f3187b758c1c468db1b35514391e5b36bd1ac39e91bbb24fdbc07872
n3 = 0x9d4732db2539d1166dc6865670be11951bf49295bc8c472f34682a0fb7f2b3ba96dcfa1945c2e4685dfeae5255abe2ab3b7fb2282971bb16ce02d14082f71755e8a65c956e114336914a409a9f1158fb362a92c4e169fa3c460ea26fb5c6693447b14f1c3156a2d9308dd993d7ea708a00ad149fb77109d8a5f77de1703ba249
c3 = 0x3bead3d6760bff4de22562978d4722bb21ee4792ebdb32703b6df9ff5176e033e97ad8fc81467f4b3df7bd4e8bcae09462f3eca93a3da1cd9d7e8de3e464471fdd0b70112c1c738b0daa2a37a65331eaa8954b81b410f62a0280da32eb3e305782d5f774d814ca0adb13344687387cf72657dc21724bcf69da810d7635b99467
def chinese_remainder(n, a):
sum = 0
prod = reduce(lambda a, b: a*b, n)
for n_i, a_i in zip(n, a):
p = prod / n_i
sum += a_i * mul_inv(p, n_i) * p
return sum % prod
def mul_inv(a, b):
b0 = b
x0, x1 = 0, 1
if b == 1: return 1
while a > 1:
q = a / b
a, b = b, a%b
x0, x1 = x1 - q * x0, x0
if x1 < 0: x1 += b0
return x1
def find_invpow(x,n):
"""Finds the integer component of the n'th root of x,
an integer such that y ** n <= x < (y + 1) ** n.
"""
high = 1
while high ** n < x:
high *= 2
low = high/2
while low < high:
mid = (low + high) // 2
if low < mid and mid**n < x:
low = mid
elif high > mid and mid**n > x:
high = mid
else:
return mid
return mid + 1
flag_cubed=chinese_remainder([n1,n2,n3],[c1,c2,c3])
flag=find_invpow(flag_cubed,3)
print "flag: ",hex(flag)[2:-1].decode("hex")
# flag: theoretical_computer_scientist_johan_torkel_hastad
得flag:SYC{do1ng_thre3_things_At_once_i5_not_s4fe}
[Simple calculation]
题目地址:https://share.weiyun.com/EooKNpCi 题目描述:也许能在大一那本紫书上找到算法灵感hint:“The solution of system of linear congruence equations can be provided by the Chinese remainder theorem”
尝试编写脚本:
win=0
for s0 in range(0,27):
for s1 in range(0,27):
for s2 in range(0,27):
for s3 in range(0,27):
for s4 in range(0,27):
for n in range(0,10):
if(s0*1+s1*1+s2*1+s3*1+s4*1==n*26+3):
win=win+1
break
#print('1:',s0,s1,s2,s3,s4)
for n in range(0,10):
if(s0*1+s1*1+s2*1+s3*3+s4*5==n*26+7):
win=win+1
break
#print('2:',s0,s1,s2,s3,s4)
for n in range(0,10):
if(s0*1+s1*2+s2*2+s3*3+s4*3==n*26+1):
win=win+1
break
#print('3:',s0,s1,s2,s3,s4)
for n in range(0,10):
if(s0*1+s1*2+s2*5+s3*3+s4*1==n*26+1):
win=win+1
break
#print('4:',s0,s1,s2,s3,s4)
for n in range(0,10):
if(s0*1+s1*2+s2*1+s3*2+s4*1==n*26+20):
win=win+1
break
#print('5:',s0,s1,s2,s3,s4)
if(win==5):
print(s0,s1,s2,s3,s4)
print(chr(s0+65),chr(s1+65),chr(s2+65),chr(s3+65),chr(s4+65))
win=0
出结果:
(6, 4, 18, 13, 14)
('G', 'E', 'S', 'N', 'O')
(19, 4, 18, 13, 1)
('T', 'E', 'S', 'N', 'B')
尝试了第二个,flag正确!
GeekChallenge2020
10.27
MISC
[吉普赛的歌姬]
QQ:2411194883
这道题让我一度放弃。社工也太复杂了叭,我是废物……
根据简介,找到第一个QQ,进去逛了一圈,①发现两个加密的相册,猜测那个名为“你想要的”里面应该有东西。②有一条说说的内容是:身为一个老年人怎么能不玩贴吧
来贴吧和我一起玩吧:DJ南方
于是找到本次比赛的学校的贴吧,搜索ID,找到用户:DJ南方。他发布的一个帖子为:伪·Nightcore
网易云的一个电台
最喜欢里面的一首吉普赛歌姬
大家也可以来听呀,可能里面有你要的答案。怕你们找不到 这个主播的id是”不知道怎么吐槽了“的快来和我一起听歌吧。
打开网易云,找到该电台,该首歌:伪 Nightcore - Gypsy Bard,评论中出题人说:我的密码是姓名首字母+生日
那么问题来了,师傅的姓名是啥,生日又是啥呢。
直接在列表里搜索出题人x1hy9,进空间逛了一圈,啥都没有。
接下来就是毫无头绪了,索性队友Google了出题人的ID,找到了博客👇
原来简介里QQ的昵称就是师傅的姓名(原来师傅的名字这么诗意……
结合个人资料里的生日信息,得到相册密码,解开相册,那道flag。
老折磨王了。