JarvisOJ basic部分WriteUp

本文是作者为了准备省赛而刷JarvisOJ基础部分的WriteUp,涉及多种类型的问题,包括Base64解码、网络安全、字符串处理、密码学、逆向工程、文件分析等。作者通过各个题目描述和解题过程,分享了解题思路和技巧,旨在帮助读者提升CTF技能。
摘要由CSDN通过智能技术生成

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可以搜到
usslab
OK,flag得到了。

0x3 veryeasy

题目描述

使用基本命令获取flag

解题过程

使用srings得到flag.
veryeasy

0x4 段子

题目描述

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

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

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

FLAG: PCTF{你的答案}

解题过程

对于不会的东西需要百度…
duanzi
好了,将三个字拼起来就得到了flag:PCTF{EFBFBDEFBFBD}

0x5 手贱

题目描述

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

d78b6f302l25cdc811adfe8d4e7c9fd34

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

解题过程

在上面不容易看出,复制到别的地方还是可以轻松的发现上面md5比正确的值多了一位l。去掉l后得到d78b6f30225cdc811adfe8d4e7c9fd34,进行md5解密后即可。

题目描述

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

解题过程

运用StegSolve的Frame Brower功能可以在第二桢中得到flag。
logo

0x7 veryeasyRSA

题目描述

已知RSA公钥生成参数:

p = 3487583947589437589237958723892346254777 q = 8767867843568934765983476584376578389

e = 65537

求d =

请提交PCTF{d}

Hint1: 有好多小伙伴问d提交什么格式的,现在明确一下,提交十进制的d

解题过程

运用RSA Tool计算出d.
veryeasyRsa

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

file

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的字符串..
secret
提交上去没想到竟然是对的。

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值