Jarvis OJ BASIC部分题目writeup

base64?

GUYDIMZVGQ2DMN3CGRQTONJXGM3TINLGG42DGMZXGM3TINLGGY4DGNBXGYZTGNLGGY3DGNBWMU3WI===

base64后面最多可能出现两个=号,只有base32可能出现3个等号
使用base32解码,得到504354467b4a7573745f743373745f683476335f66346e7d
猜测是hex编码的字符串,使用hex解码得到FLAG
PCTF{Just_t3st_h4v3_f4n}


veryeasy

使用基本命令获取flag
使用strings命令,输出所有可以显示的字符
Jarvis OJ BASIC部分题目writeup_第1张图片

strings命令

strings - print the strings of printable characters in files.
打印文件中可打印的字符。可以配合管道使用。
例如:
Jarvis OJ BASIC部分题目writeup_第2张图片


段子

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


手贱

某天A君的网站被日,管理员密码被改,死活登不上,去数据库一看,啥,这密码md5不是和原来一样吗?为啥登不上咧?
d78b6f302l25cdc811adfe8d4e7c9fd34
请提交PCTF{原来的管理员密码}
md5128位,写成16进制是32个数,而不是33个数
将原来的md5减去一位(尝试每一位),使用md5解码,得到FLAG


美丽实验室logo

放到stegsolve里面浏览frame。拿到flag。


神秘的文件

使用wget命令下载
放到binwalk发现是可以挂载的文件
Jarvis OJ BASIC部分题目writeup_第3张图片
使用mount命令挂载
Jarvis OJ BASIC部分题目writeup_第4张图片
发现有很多文件,且都只有一个字母,写一个脚本把这些文件拼接起来即可
Jarvis OJ BASIC部分题目writeup_第5张图片
得到flag
在这里插入图片描述
这里也可以不使用mount挂载,而使用binwalk -e命令分离其中的文件
Jarvis OJ BASIC部分题目writeup_第6张图片

binwalk

做misc题的时候,一般都需要从某个网址下载一个文件,然后开始分析这个文件,最终从文件中得到flag。而查看下载的文件中是否包含其他文件的时候一般都需要binwalk这个神器。

binwalk参考


公倍数

Jarvis OJ BASIC部分题目writeup_第7张图片


veryeasyRSA

import libnum

p = 3487583947589437589237958723892346254777
q = 8767867843568934765983476584376578389
e = 65537
phin = (p - 1) * (q - 1)
d = libnum.invmod(e, phin)
print(d)
# d=19178568796155560423675975774142829153827883709027717723363077606260717434369

kali安装gmpy2教程


Easy RSA

import libnum

c = 0xdc2eeeb2782c
n = 322831561921859
e = 23
q = 13574881
p = 23781539

d = libnum.invmod(e, (p - 1) * (q - 1))
m = pow(c, d, n)
print(libnum.n2s(m))

爱吃培根的出题人

密文:

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

去掉无关符号:

bacoNisoneofaMerICaSsWEethEartSitsAdARlinGSuCCulEntfOoDtHAtPaIRsFlawLE

大小写分别代表b和a:

aaaabaaaaaaaabaabbababbaaabaaabaaababbaaabbabbaabaaabababbababbabaaabb

按照第二种方式解密得:baconisnotfood


取证

百度“内存取证”,即volatility


熟悉的声音

只有X、Y空格三种字符,猜测是摩斯密码

XYYY YXXX XYXX XXY XYY X XYY YX YYXX
.--- -... .-.. ..- .-- . .-- -. --..

解密得JBLUWEWNZ
交上去不对,凯撒一下,得到flag:PHRACKCTF


Help!!

使用010Editor打开压缩包word.zip,其中deFlags字段标记是否加密。当该字段为偶数时含义是未加密,当该字段是奇数时,含义是已加密。打开word.zip后发现该字段是09,将其修改为00,即可正常解压。
Jarvis OJ BASIC部分题目writeup_第8张图片
解压后打开word.docx,并没有看到flag
但是发现word文件首为PK开头,那说明是就一个压缩文件包了,尝试将该word文档的后缀改为.zip,然后用解压缩软件居然果然能够正常解压缩。
在 word\media 目录下发现flag
参考:
Help!!
ZIP伪加密
ZIP文件头协议
Word文件格式分析


ROPGadget

from pwn import *
print asm('XCHG EAX,ESP\nRET\nMOV ECX,[EAX]\nMOV [EDX],ECX\nPOP EBX\nRET'.lower()).encode('hex').upper()

Kali安装pwntools


a piece of cake

quipquip传送门
解得:

	the word ro?ot can refer to ?oth physical ro?ots and virtual software agents, ?ut the latter are usually
	referred to as ?ots. there is no consensus on which machines ?ualify as ro?ots ?ut there is general 
	agreement among e?perts, and the pu?lic, that ro?ots 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 e?hi?it intelligent ?ehavior - especially ?ehavior which mimics 
	humans or other animals. flag is su?stitutepassisveryeasyyougotit. closely related to the concept of a 
	ro?ot is the field of synthetic ?iology, which studies entities whose nature is more compara?le to ?
	eings than to machines.

容易猜到?是b


Shellcode

文件中都是可见字符串,可能是经过处理得shellcode。

int main(void)
{
    int x;
    char a[] = "PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIYIhkmKzyCDq4l4FQyBlrRWEahI1tLKT16Pnk1ftLnkPvwlnkW6fhNkan5pNkgF6XPOR8T5HsCivaN19okQSPlKRLvD6DNk3uelNkpTthRXuQ9znk2jEHLK1Ja0FaXkhcTtBink4tlKUQhnvQYotqo0ylnLMTO0SDEWZahOtMwqhG8kXteksLwTdh1e8aLKsja4uQ8kavLKdLrklK0ZeL7qjKLKUTLKuQM8k9bdvDeL1qiSnR5XVIXTOyjENikrphNnrnVnhlBrzHooKOYoyok93u7tOKCNyHzBBSnguLgTcbyxlNKOYoYoMYaUTHphRL2LupQQ0htsFRTn541x3E2Se5T26PyKK8QLTddJlIZFBvyoSeUTLIkrv0oKy8ORpMmlk7Gl6DBrm8SoyoioyoaxrOqh0XwP1xu1Qw1upBbHrmrED3T34qiKOxQLTdEZOyZCaxQmRxgPUp0hpnPn4srRe8BDSo2PT7axqOCWROpophSYpnSo04u83K72Peu70hBpCsqDpF4qHIMXpLQ429k98aEaJr1BF3Ca3bIozp01IPf0Yof5GxAA";

    asm("jmp %0;"
        : "=a"(x)
        : "0"(a));
}

运行即可得到flag
参考:
171115 杂项-可见字符组成的Shellcode

Shellcode

Shellcode实际上就是汇编对应的机器码
但是由于机器码大部分都是不可见字符,所以无法直接显示出来

本题直接给了大段的乱码可见字符串,再结合机器码不可见,首先就想到了Base64编码–它的出现就是为了将不可见字符全部转为可见字符嘛

然而解b64发现不仅长度不符合,而且在最后添上等号以后解出来的值转汇编也并没有意义
Alpha2这个工程是专门将Shellcode编码成可见字符串的(甚至仅有字母和数字)


-.-字符串

摩斯解码即可得到flag
摩斯电码转换器


德军的密码

密钥也是12位大写字母
密文一共84位,7位对应一个明文字符
通过异或得到明文

a = '000000000000000000000000000000000000000000000000000101110000110001000000101000000001'
b = 'WELCOMETOCFF'
c = ''

for i in range(12):
    d=int(a[i*7:(i+1)*7],2)
    e=ord(b[i])
    c+=chr(d^e)

print(c)

握手包

使用Kali中的aircrack-ng爆破密码即可
输入命令:

aircrack-ng -w /usr/share/wordlists/rockyou.txt ~/Documents/tmp/wifi.cap.d4e4d22bc8fe925bf0ccb9382056ce8e

Jarvis OJ BASIC部分题目writeup_第9张图片
得到密码:11223344


Baby’s Crack

解压后得到两个文件,一个加密程序和一个flag加密得到的密文。将加密程序丢到IDA中,可以看到关键的加密代码如下:
Jarvis OJ BASIC部分题目writeup_第10张图片暴力破解得到flag:

f = open("flag.enc", "rb+")
cypher = f.read()
flag = ''
print(cypher)

for i in range(len(cypher)):
    for j in range(256):
        t = j
        if t > 47 and t <= 96 :
            t += 53
        elif t <= 46 :
            t += t % 11
        else :
            t -= t % 61
        if t == cypher[i] :
            flag += chr(j)

print(flag)
print(bytearray.fromhex(flag))
f.close()

运行结果:

b'jeihjiiklwjnk{ljj{kflghhj{ilk{k{kij{ihlgkfkhkwhhjgly'
504354467B596F755F6172335F476F6F645F437261636B33527D
bytearray(b'PCTF{You_ar3_Good_Crack3R}')

你可能感兴趣的:(其他,CTF)