本文主要是介绍JarvisOJ basic部分WriteUp,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
0x0 前言
由于开学后会有一个省赛,作为一个好久没做过除re以外ctf题的小白,不得不抽出时间来刷一刷题…通过做JarvisOJ的basic部分确实学到了不少东西,感谢~
0x1 base64?
1.题目描述
GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI===
2.解题过程
base64?应该是base家族的,写个脚本decode一下。
import base64
str1='GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI==='
try:print base64.b64decode(str1)
except:try:print base64.b32decode(str1)except:print base64.b16decode(str1)
得到结果504354467b4a7573745f743373745f683476335f66346e7d,很明显,十六进制转字符就可以了~
flag=''
key='504354467b4a7573745f743373745f683476335f66346e7d'
for i in range(0,len(key),2):flag+=chr(int(key[i:i+2],16))
print flag
得到flag:PCTF{Just_t3st_h4v3_f4n}
0x2 关于USS Lab.
题目描述
USS的英文全称是什么,请全部小写并使用下划线连接_,并在外面加上PCTF{}之后提交
解题过程
百度uss lab可以搜到
OK,flag得到了。
0x3 veryeasy
题目描述
使用基本命令获取flag
解题过程
使用srings得到flag.
0x4 段子
题目描述
程序猿圈子里有个非常著名的段子:
手持两把锟斤拷,口中疾呼烫烫烫。
请提交其中”锟斤拷”的十六进制编码。(大写)
FLAG: PCTF{你的答案}
解题过程
对于不会的东西需要百度…
好了,将三个字拼起来就得到了flag:PCTF{EFBFBDEFBFBD}
0x5 手贱
题目描述
某天A君的网站被日,管理员密码被改,死活登不上,去数据库一看,啥,这密码md5不是和原来一样吗?为啥登不上咧?
d78b6f302l25cdc811adfe8d4e7c9fd34
请提交PCTF{原来的管理员密码}
解题过程
在上面不容易看出,复制到别的地方还是可以轻松的发现上面md5比正确的值多了一位l。去掉l后得到d78b6f30225cdc811adfe8d4e7c9fd34,进行md5解密后即可。
0x6 美丽的实验室logo
题目描述
出题人丢下个logo就走了,大家自己看着办吧
解题过程
运用StegSolve的Frame Brower功能可以在第二桢中得到flag。
0x7 veryeasyRSA
题目描述
已知RSA公钥生成参数:
p = 3487583947589437589237958723892346254777 q = 8767867843568934765983476584376578389
e = 65537
求d =
请提交PCTF{d}
Hint1: 有好多小伙伴问d提交什么格式的,现在明确一下,提交十进制的d
解题过程
运用RSA Tool计算出d.
0x8 神秘的文件
题目描述
出题人太懒,还是就丢了个文件就走了,你能发现里面的秘密吗?
解题过程
利用linux的file得知所给文件为磁盘文件。
将磁盘文件挂载
mkdir ffffile &&sudo mount haha ffffile
挂载后可以查看文件中的内容
我们发现里面是253个只包含一个字符的文件
猜测可以把这些字符拼接起来得到flag.
flag=''
for i in range(254):file=open('ffffile/'+str(i))flag+=file.read()file.close()
print flag
0x9 公倍数
题目描述
请计算1000000000以内3或5的倍数之和。
如:10以内这样的数有3,5,6,9,和是23
请提交PCTF{你的答案}
解题过程
sum=0
for i in xrange(1000000000):if i%3==0 or i%5==0:sum+=i
print sum
一个简单的小脚本得到flag,这里注意一定要用xrange,不要用range!
0x10
题目描述
都说逆向挺难的,但是这题挺容易的,反正我不会,大家来挑战一下吧~~:)
解题过程
载入IDA,很容易就能找到关键代码
*(_WORD *)v5 = 0xDDABu;v5[2] = 0x33;v5[3] = 0x54;v5[4] = 0x35;v5[5] = 0xEFu;printf((unsigned __int64)"Input your password:");_isoc99_scanf((__int64)"%s", v6, *(_QWORD *)v5);if ( strlen(v6) == 26 ){v3 = 0LL;if ( (v6[0] ^ 0xAB) == list1 ){while ( ((unsigned __int8)v6[v3 + 1] ^ (unsigned __int8)v5[(signed __int64)(((signed int)v3 + 1) % 6)]) == list[v3] ){if ( ++v3 == 25 ){printf((unsigned __int64)"Congratulations!");return 0;}}}}printf((unsigned __int64)"Password Wrong!! Please try again.");return 0;
}
逆一下代码写脚本得到flag.
v5=[0xAB,0xDD,0x33,0x54,0x35,0xEF]
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]
flag=chr(v5[0]^lists[0])
for i in xrange(1,len(lists)):flag+=chr(v5[i%6]^lists[i])
print flag
得到flag:
PCTF{r3v3Rse_i5_v3ry_eAsy}
0x11 Secret
题目描述
传说中的签到题
题目入口:http://web.jarvisoj.com:32776/
Hint1: 提交格式PCTF{你发现的秘密}
解题过程
查看响应头,可以找到疑似flag的字符串..
提交上去没想到竟然是对的。
0x12 爱吃培根的出题人
题目描述
听说你也喜欢吃培根?那我们一起来欣赏一段培根的介绍吧:
bacoN is one of aMerICa’S sWEethEartS. it’s A dARlinG, SuCCulEnt fOoD tHAt PaIRs FlawLE
什么,不知道要干什么?上面这段巨丑无比的文字,为什么会有大小写呢?你能发现其中的玄机吗?
提交格式:PCTF{你发现的玄机}
解题过程
提示培根加密,直接用脚本,不过脚本得到的flag多了一个字母…不知道哪儿出了问题。
#coding:utf-8
import string
letters=string.uppercase
a="bacoN is one of aMerICa'S s
这篇关于JarvisOJ basic部分WriteUp的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!