Jarvis OJ basic writeup 题解

Posted by

握手包

题目中给了一个握手包,flag是Flag_is_here这个AP的密码。用wiresharek打开,找了半天什么都没有发现。然后用kali的密码破解工具aircrack-n得到了密码。命令如下:

aircrack-ng -w [字典路径] [握手包路径]

字典可以直接用kali系统提供的字典,路径为:

/usr/share/wordlist

貌似如果字典在压缩包里要解压压缩包,然后使用解压出来的文件。

-.-字符串

题目给的密文开起来很像摩尔斯电码,然后用在线解密摩尔斯电码工具直接得到flag。

A Piece Of Cake

给了一串看似很混乱的由英文字母构成的字符串。猜测应该是替换加密。在quipqiup网站上直接进行爆破,得到flag:substitutepassisveryeasyyougotit
file

shellcode

题目中给了一个文件,文本格式打开发现一个非常长的字符串

PYIIIIIIIIIIIIIIII7QZjAXP0A0AkAAQ2AB2BB0BBABXP8ABuJIYIhkmKzyCDq4l4FQyBlrRWEahI1tLKT16Pnk1ftLnkPvwlnkW6fhNkan5pNkgF6XPOR8T5HsCivaN19okQSPlKRLvD6DNk3uelNkpTthRXuQ9znk2jEHLK1Ja0FaXkhcTtBink4tlKUQhnvQYotqo0ylnLMTO0SDEWZahOtMwqhG8kXteksLwTdh1e8aLKsja4uQ8kavLKdLrklK0ZeL7qjKLKUTLKuQM8k9bdvDeL1qiSnR5XVIXTOyjENikrphNnrnVnhlBrzHooKOYoyok93u7tOKCNyHzBBSnguLgTcbyxlNKOYoYoMYaUTHphRL2LupQQ0htsFRTn541x3E2Se5T26PyKK8QLTddJlIZFBvyoSeUTLIkrv0oKy8ORpMmlk7Gl6DBrm8SoyoioyoaxrOqh0XwP1xu1Qw1upBbHrmrED3T34qiKOxQLTdEZOyZCaxQmRxgPUp0hpnPn4srRe8BDSo2PT7axqOCWROpophSYpnSo04u83K72Peu70hBpCsqDpF4qHIMXpLQ429k98aEaJr1BF3Ca3bIozp01IPf0Yof5GxAA

参考别人的writeup,用github上的一个工具运行直接出现弹窗显示flag。

babycrack

显然这是一道逆向题。下载题目文件。更改文件后缀为rar,解压得到两个文件。
file
用查壳工具检查exe文件……嗯啥都没有。然后直接拽进ida,反编译。
file
发现这个exe是一个对文件进行处理的程序。主要工作流:逐字符的读取文件。假设当前处理的字符为c,如果c属于(47,96],c转化为c+53。转换后的范围为(100,149],如果c<=46,c转化为c+c%11,其它情况下,c转化为61*(c/61)。猜测flag.enc就是转化之后的文件,而我们需要将其还原。
正当我为怎么处理后两种情况而发愁时,突然发现flag.enc的文件所有字符都落在了第一种情况。
file

这就好办了。直接上代码。

#include <cstdio>
using namespace std;
int main()
{
    FILE *f, *ans;
    f = fopen("flag.enc", "r");
    ans = fopen("result.enc", "w");
    while (feof(f) == 0)
    {
        char c = fgetc(f);
        c = c - 53;
        fputc(c, ans);
    }
    fclose(f);
    fclose(ans);
    return 0;
}

转换结果如下:
file
额好像有什么奇奇怪怪的东西混进来了……可能是代码写的有点问题多出来了一字节。不过没有关系,其它部分是正确的。不难看(猜)出转化得到的文本为16进制码,我们把这些16进制转化成字符,拿到flag。
file

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注