BugKuCTF-论剑场-MISC-WriteUp

BugKuCTF-论剑场-MISC-WriteUp

头像

得一张可爱妹子照片
hint:flag为flag{flag的md5 32位加密值}
- 丢进winhex 搜索flag得 flag{bGxvdmV0aGVnaXJs}
- 将{}内容base64解码 在MD5加密
- 补全flag格式

签到

白给

0和1的故事

hint;听说空格和零很配
此题想法有些牵强
- 下载得压缩包不断解压得txt 内容显示Flag_is_not_here加一堆空格
- 丢进winhex发现有规律hex
0920200920092009092009200920090920200920200909092020200909092009200920090909092020202009090920090909090909202020202020
对照右侧ascii判断20是对应空格的 听说空格和0很配所以把20当作0 09当作1
- 转换得10010101101010110010011100011101010111100001110111111000000
- 转换hex4ad5938eaf0efc0
- flag{4ad5938eaf0efc0}

这个人真的很高

下载得一图片
- 丢进winhex 末尾发现aabI11us11ts1yy0}
- 很高 那就改高加长一点改个800 打开图片得ffoEliuaanrsgDey{
- 拼起来ffoEliuaanrsgDey{aabI11us11ts1yy0}栅栏密码
- 傻了 解不出来 查了其他人writeup最后靠猜?flag{Iss0@finDa111}@ourea11y@@Easybuty@@ to flag{Iss0Easybutyourea11yfinDa111}

snake

hint:攒够500分就给flag哦
竟然要500 王校长能吃那么多的面包吗
- jd gui反编译出java代码 搜索flag 得到相关函数

    if (this.score >= 500 && 
      this.isshow) {
      String flag = "eobdxpmbhf\\jpgYaiibYagkc{";
      int key = this.snake.len - this.score;
      String xx = "";
      for (int i = 0; i < flag.length() / 2; i++) {

        int c = flag.charAt(i);
        char c1 = (char)(c ^ key);
        xx = String.valueOf(xx) + c1;
      } 
      for (int i = flag.length() / 2 + 1; i < flag.length(); i++) {

        int c = flag.charAt(i);
        char c1 = (char)(c ^ key * 2);
        xx = String.valueOf(xx) + c1;
      } 

      JOptionPane.showInputDialog(null, "This is your flag CALCULATE BY YOUR SCORE:\n", "Congratulations", -1, null, null, 
          xx);

      this.isshow = false;
    } 
public class payload {

    public static void main(String[] args) {
      String flag = "eobdxpmbhf\\jpgYaiibYagkc{";
      int key = 3;
      String xx = "";
      for (int i = 0; i < flag.length() / 2; i++) {
        int c = flag.charAt(i);
        char c1 = (char)(c ^ key);
        xx = String.valueOf(xx) + c1;
      } 
      for (int i = flag.length() / 2 + 1; i < flag.length(); i++) {
        int c = flag.charAt(i);
        char c1 = (char)(c ^ key * 2);
        xx = String.valueOf(xx) + c1;
      } 
      System.out.println(xx);
    }
}

easypdf

下载解压得easy.pdf打显示好像不完整的图片
- 丢进Adobe Acrobat DC 把图片挪一下 能看到背后的flag

损坏的图片

下载得无法打开的图片
- 丢进winhex观察结尾47 4E 50 89很明显是png89 50 4E 47倒序
- 我们把整个文件hex倒序过来

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{ 
    char a[15000]="hex";//hex太长
    char b[15000];
    for(int i =0;i<strlen(a);i=i+2){

        b[i]=a[strlen(a)-2-i];
        b[i+1]=a[strlen(a)-1-i];
    }
    for(int i =0;i<strlen(a);i++){

        cout<<b[i];
    }
    return 0;
}

怀疑人生

下载解压得ctf1.zip ctf2.jpg ctf3.jpg
- ctf1.zip有密码丢进winhex查看真加密 尝试暴力无果 尝试字典得密码password
- 解压打开txt得字符串base64-去掉\u hex解码 得flag{hacker
- ctf2.jpg丢进binwalk分离zip解压打开txt Ook!解码得3oD54e
- 在进行base58解码字符串???misc
- ctf3.jpg扫描即可12580}
- 拼起来flag{hackermisc12580}

向日葵

解压得一张图片
- 丢进binwalk分离rar解压得txt打开

在一个a[5][5]的二维数组中有下列几个元素
2,5
5,1
2,4
2,5
3,5
3,2
1,4
5,1
2,2
2,5
4,5
2,1
1,2
4,5
5,5
那么flag是什么呢?
  1 2 3 4 5
l a b c d e
2 f g h i j
3 k 1 m m o
4 p q r s t
5 u v w x y