JarvisOJ-Basic部分writeup

写在前面,经过几天的奋斗终于搞定了jarvisOJ的basic部分题目,虽然题目确实比较简单,但是胜在类型多啊,有些见都没见过,长姿势,长姿势

base64?

题目描述 分值:50

GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI===

解题过程

观察字符串,完全大写,应该是base32编码,python解密

很明显16进制,hackbar hex解密得到flag

关于USS Lab.

题目描述 分值:50

USS的英文全称是什么,请全部小写并使用下划线连接_,并在外面加上PCTF{}之后提交

解题过程

既然知道jarvisOJ就肯定知道这个全称啊,加上PCTF{},得到flag

veryeasy

题目描述 分值:50

使用基本命令获取flag

解题过程

拿到附件,直接上IDA,是个mac下的文件,搜索字符串,拿到了flag,感觉并没有用什么基本命令啊
后来一想;应该题目本意是让用strings命令吧

拿到flag

段子

题目描述 分值:50

程序猿圈子里有个非常著名的段子:

手持两把锟斤拷,口中疾呼烫烫烫。

请提交其中”锟斤拷”的十六进制编码。(大写)

FLAG: PCTF{你的答案}

解题过程

“烫烫烫”我倒是知道,”锟斤拷”就不清楚了,这个时候就上google了

“烫烫烫”与“锟斤拷”的原理
组合起来,加上PCTF{},拿到flag

手贱

题目描述 分值:50

某天A君的网站被日,管理员密码被改,死活登不上,去数据库一看,啥,这密码md5不是和原来一样吗?为啥登不上咧?

d78b6f302l25cdc811adfe8d4e7c9fd34

请提交PCTF{原来的管理员密码}

解题过程

观察所给“md5”的形式,发现多了一位l;去掉多余一位,在线解密
md5在线解密
得到flag

题目描述 分值:50

出题人丢下个logo就走了,大家自己看着办吧

解题过程

下载附件后,一个图片,先上stegsolve
在第二个frame里看到flag

veryeasyRSA

题目描述 分值:50

已知RSA公钥生成参数:

p = 3487583947589437589237958723892346254777 q = 8767867843568934765983476584376578389
e = 65537

求d = ?

请提交PCTF{d}

解题过程

直接上工具RSATool
输入对应值,拿到flag

神秘的文件

题目描述 分值:50

出题人太懒,还是就丢了个文件就走了,你能发现里面的秘密吗?

解题过程

binwalk分析下

发现是个磁盘文件,挂载

1
2
3
$ sudo mkdir tmp && mount haha.f38a74f55b4e193561d1b707211cf7eb tmp
$ cd tmp
$ ls

发现文件目录下多了很多文件

打开几个文件发现,每个文件中只有一个字符,写了个脚本读取每个文件中的值,并组合成flag

1
2
3
4
5
6
flag = ''
for i in range(0,254):
f = open(str(i))
flag += f.read()
f.close()
print flag


拿到flag

公倍数

题目描述 分值:50

请计算1000000000以内3或5的倍数之和。

如:10以内这样的数有3,5,6,9,和是23

请提交PCTF{你的答案}

解题过程

简单数学问题,直接上脚本

1
2
3
4
5
6
7
8
flag = 0
for i in xrange(3,1000000000,3):
flag += i
for i in xrange(5,1000000000,5):
flag += i
for i in xrange(15,1000000000,15):
flag -= i
print flag

Easy Crackme

题目描述 分值:50

都说逆向挺难的,但是这题挺容易的,反正我不会,大家来挑战一下吧~~:)

解题过程

IDA载入,找到关键点

分析代码
写出脚本

1
2
3
4
5
6
7
8
9
10
11
12
lists = [0xfb,0x9e,0x67,0x12,0x4e,
0x9d,0x98,0xab,0x00,0x06,
0x46,0x8a,0xf4,0xb4,0x06,
0x0b,0x43,0xdc,0xd9,0xa4,
0x6c,0x31,0x74,0x9c,0xd2,
0xa0]
string = [0xab,0xdd,0x33,0x54,0x35,0xef]
flag = ''
flag += chr(lists[0]^string[0])s
for i in xrange(1,len(lists)):
flag += chr(lists[i]^string[i%6])
print flag

拿到flag

Secret

题目描述 分值:50

传说中的签到题

题目入口:http://web.jarvisoj.com:32776/

Hint1: 提交格式PCTF{你发现的秘密}

解题过程

访问之,查看源码没有,观察http响应与请求

拿到flag

爱吃培根的出题人

题目描述 分值:50

听说你也喜欢吃培根?那我们一起来欣赏一段培根的介绍吧:

bacoN is one of aMerICa’S sWEethEartS. it’s A dARlinG, SuCCulEnt fOoD tHAt PaIRs FlawLE

什么,不知道要干什么?上面这段巨丑无比的文字,为什么会有大小写呢?你能发现其中的玄机吗?

提交格式:PCTF{你发现的玄机}

解题过程

培根密码,去掉除字母之外的字符,以5个为一组分组

bacoN isone ofaMe rICaS sWEet hEart SitsA dARli nGSuC CulEn tfOoD tHAtP aIRsF lawLE

由于培根有两种情况,分别手撕出来,拿到flag

Easy RSA

题目描述 分值:50

还记得veryeasy RSA吗?是不是不难?那继续来看看这题吧,这题也不难。

已知一段RSA加密的信息为:0xdc2eeeb2782c且已知加密所用的公钥:

(N=322831561921859 e = 23)

请解密出明文,提交时请将数字转化为ascii码提交

比如你解出的明文是0x6162,那么请提交字符串ab

提交格式:PCTF{明文字符串}

解题过程

依旧上RSATool拿到flag

ROPGadget

题目描述 分值:50

都说学好汇编是学习PWN的基础,以下有一段ROPGadget的汇编指令序列,请提交其十六进制机器码(大写,不要有空格)

XCHG EAX,ESP

RET

MOV ECX,[EAX]

MOV [EDX],ECX

POP EBX

RET

提交格式:PCTF{你的答案}

解题过程

打开od,依次输入汇编


左边的机器码组合起来就是flag

取证

题目描述 分值:50

解题过程

Google关键词 “内存” “取证”
很容易拿到flag

熟悉的声音

题目描述 分值:50

两种不同的元素,如果是声音的话,听起来是不是很熟悉呢,据说前不久神盾局某位特工领便当了大家都很惋惜哦

XYYY YXXX XYXX XXY XYY X XYY YX YYXX

请提交PCTF{你的答案}

解题过程

提示说声音,想到摩尔斯电码
先转换

1
"XYYY YXXX XYXX XXY XYY X XYY YX YYXX".replace('X','.').replace('Y','-')

在线解码
摩斯密碼翻譯器

之后进行凯撒密码解密


拿到flag

Baby’s Crack

题目描述 分值:100

既然是逆向题,我废话就不多说了,自己看着办吧。

解题过程

IDA导入,找到关键点


写出解密脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
enc = "jeihjiiklwjnk{ljj{kflghhj{ilk{k{kij{ihlgkfkhkwhhjgly"
flag = ''
for i in enc:
#print i
tmp = ord(i)
#print tmp
if tmp > 100 and tmp<=149:
flag += chr(tmp-53)
print chr(tmp-53)
elif tmp <= 57:
flag += chr(tmp - tmp%11)
else:
flag += chr(tmp + tmp%61)
print flag

拿到flag

Help!!

题目描述 分值:150

出题人硬盘上找到一个神秘的压缩包,里面有个word文档,可是好像加密了呢~让我们一起分析一下吧!

解题过程

解压得到word的压缩包,
压缩包的几种常见套路具体见CTF比赛中关于zip的总结

这里是伪加密,由于我用的是7-zip的解压软件直接无视伪加密;

解压后得到word文件
一开始试了试word隐写,并没有什么用,然后想到word也是压缩包格式,直接解压,最终在一个文件夹中发现flag的图片,拿到flag

Shellcode

题目描述 分值:50

作为一个黑客,怎么能不会使用shellcode?

这里给你一段shellcode,你能正确使用并最后得到flag吗?

解题过程

shellcode不就是非法数据当作代码执行嘛,直接写代码

1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
char shellcode[] = "PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIYIhkmKzyCDq4l4FQyBlrRWEahI1tLKT16Pnk1ftLnkPvwlnkW6fhNkan5pNkgF6XPOR8T5HsCivaN19okQSPlKRLvD6DNk3uelNkpTthRXuQ9znk2jEHLK1Ja0FaXkhcTtBink4tlKUQhnvQYotqo0ylnLMTO0SDEWZahOtMwqhG8kXteksLwTdh1e8aLKsja4uQ8kavLKdLrklK0ZeL7qjKLKUTLKuQM8k9bdvDeL1qiSnR5XVIXTOyjENikrphNnrnVnhlBrzHooKOYoyok93u7tOKCNyHzBBSnguLgTcbyxlNKOYoYoMYaUTHphRL2LupQQ0htsFRTn541x3E2Se5T26PyKK8QLTddJlIZFBvyoSeUTLIkrv0oKy8ORpMmlk7Gl6DBrm8SoyoioyoaxrOqh0XwP1xu1Qw1upBbHrmrED3T34qiKOxQLTdEZOyZCaxQmRxgPUp0hpnPn4srRe8BDSo2PT7axqOCWROpophSYpnSo04u83K72Peu70hBpCsqDpF4qHIMXpLQ429k98aEaJr1BF3Ca3bIozp01IPf0Yof5GxAA";
int main()
{
int (*ret)() =(int(*)())shellcode;
ret();
//shellcode();
return 0;
}

编译执行拿到flag

A Piece Of Cake

题目描述 分值:100

nit yqmg mqrqn bxw mtjtm nq rqni fiklvbxu mqrqnl xwg dvmnzxu lqjnyxmt xatwnl, rzn nit uxnntm xmt zlzxuuk mtjtmmtg nq xl rqnl. nitmt vl wq bqwltwlzl qw yivbi exbivwtl pzxuvjk xl mqrqnl rzn nitmt vl atwtmxu xamttetwn xeqwa tsftmnl, xwg nit fzruvb, nixn mqrqnl ntwg nq gq lqet qm xuu qj nit jquuqyvwa: xbbtfn tutbnmqwvb fmqamxeevwa, fmqbtll gxnx qm fiklvbxu ftmbtfnvqwl tutbnmqwvbxuuk, qftmxnt xznqwqeqzluk nq lqet gtamtt, eqdt xmqzwg, qftmxnt fiklvbxu fxmnl qj vnltuj qm fiklvbxu fmqbtlltl, ltwlt xwg exwvfzuxnt nitvm twdvmqwetwn, xwg tsivrvn vwntuuvatwn rtixdvqm - tlftbvxuuk rtixdvqm yivbi evevbl izexwl qm qnitm xwvexul. juxa vl lzrlnvnzntfxllvldtmktxlkkqzaqnvn. buqltuk mtuxntg nq nit bqwbtfn qj x mqrqn vl nit jvtug qj lkwnitnvb rvquqak, yivbi lnzgvtl twnvnvtl yiqlt wxnzmt vl eqmt bqefxmxrut nq rtvwal nixw nq exbivwtl.

提交格式:PCTF{flag}

解题过程

字母频率破解替换加密
在线解密quipqiup

解密后,自己猜想补全
拿到解密后的字符串

1
the word robot can refer to both physical robots and virtual software agents, but the latter are usually referred to as bots. there is no consensus on which machines pualify as robots but there is general agreement among experts, and the public, that robots tend to do some or all of the following: accept electronic programming, process data or physical perceptions electronically, operate autonomously to some degree, move around, operate physical parts of itself or physical processes, sense and manipulate their environment, and exhibit intelligent behavior - especially behavior which mimics humans or other animals. flag is substitutepassisveryeasyyougotit. closely related to the concept of a robot is the field of synthetic biology, which studies entities whose nature is more comparable to beings than to machines.

得到flag

-.-字符串

题目描述 分值:100

请选手观察以下密文并转换成flag形式

..-. .-.. .- –. ….. ..— ..— —– .—- —.. -.. -…. -…. ….. …– —.. –… -.. .—- -.. .- —-. …– .—- —.. .—- ..— -… –… –… –… -…. …– ….- .—- —–

flag形式为32位大写md5

题目来源:CFF2016

解题过程

非常明显的摩尔斯密码
在线解密即可,之前的题目已经给出链接了
拿到flag

德军的密码

题目描述 分值:100

已知将一个flag以一种加密形式为使用密钥进行加密,使用密钥WELCOMETOCFF加密后密文为 000000000000000000000000000000000000000000000000000101110000110001000000101000000001 请分析出flag。Flag为12位大写字母

题目来源:CFF2016

解题过程

二进制密码
本题属于费娜姆密码
直接上脚本

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#--encoding:utf-8--
table = {'A':'1000001','N':'1001110',
'B':'1000010','O':'1001111',
'C':'1000011','P':'1010000',
'D':'1000100','Q':'1010001',
'E':'1000101','R':'1010010',
'F':'1000110','S':'1010011',
'G':'1000111','T':'1010100',
'H':'1001000','U':'1010101',
'I':'1001001','V':'1010110',
'J':'1001010','W':'1010111',
'K':'1001011','X':'1011000',
'L':'1001100','Y':'1011001',
'M':'1001101','Z':'1011010'}
key_list=[]
value_list=[]
for key,value in table.items():
key_list.append(key)
value_list.append(value)
#print key_list, value_list
def get_key_of_value(value):
if value in value_list:
get_value_index = value_list.index(value)
#print type(key_list[get_value_index])
return key_list[get_value_index]
else:
print "你要查询的值%s不存在" %get_value
def how_to(a,b):
if a in ['0','1'] and b in ['0','1']:
if a == '1' and b == '1':
return '0'
elif a == '0' and b == '0':
return '0'
else:
return '1'
else:
return 0
def bin_turn(arg):
binstring = ''
for i in arg:
binstring += table[i]
return binstring
def encrypt(plain,key):
binkey = bin_turn(key)
binplain = bin_turn(plain)
chiper = ''
if len(binplain)==len(binkey):
for i in range(0,len(binplain)):
chiper += how_to(binkey[i],binplain[i])
#print
return chiper
else:
return 0
def decrypt(chiper,key):
binkey = bin_turn(key)
plain = ''
if len(chiper)==len(binkey):
for i in range(0,len(chiper)):
plain += how_to(binkey[i],chiper[i])
#print binkey[i]
#print plain
return plain
else:
return 0
key = 'WELCOMETOCFF'
chiper = '000000000000000000000000000000000000000000000000000101110000110001000000101000000001'
binplain = decrypt(chiper,key)
#print type(binplain)
plain = ''
for i in xrange(0,len(binplain),7):
plain += str(get_key_of_value(binplain[i:i+7]))
print plain

拿到flag

握手包

题目描述 分值:100

给你握手包,flag是Flag_is_here这个AP的密码,自己看着办吧。
提交格式:flag{WIFI密码}

解题过程

破解wpa/wpa2 加密的 wifi密码
google一下得到
Kali Linux使用Aircrack破解wifi密码(wpa/wpa2)
根据链接,依葫芦画瓢,
最终执行
aircrack-ng -a2 -w /usr/share/wordlists/rockyou.txt ./*.cap

得到wifi密码

basic部分over!!!

#版权所有,转载请注明出处