WeChall CTF Writeup(二)

以下题目标题组成:
[Score] [Title] [Author]

0x06 1 Encodings: URL by Gizmore

在这里插入图片描述
题目意思:
你的任务就是去解码,一看就是url加密

明文:
%59%69%70%70%65%68%21%20%59%6F%75%72%20%55%52%4C%20%69%73%20%63%68%61%6C%6C%65%6E%67%65%2F%74%72%61%69%6E%69%6E%67%2F%65%6E%63%6F%64%69%6E%67%73%2F%75%72%6C%2F%73%61%77%5F%6C%6F%74%69%6F%6E%2E%70%68%70%3F%70%3D%63%67%6C%72%61%62%70%6E%70%61%73%61%26%63%69%64%3D%35%32%23%70%61%73%73%77%6F%72%64%3D%66%69%62%72%65%5F%6F%70%74%69%63%73%20%56%65%72%79%20%77%65%6C%6C%20%64%6F%6E%65%21
解密网站:
http://www.hiencode.com/url.html
密文:
在这里插入图片描述
Yippeh! Your URL is challenge/training/encodings/url/saw_lotion.php?p=cglrabpnpasa&cid=52#password=fibre_optics Very well done!

0x07 2 Prime Factory by ch0wch0w

在这里插入图片描述
题目意思:
你的任务很简单:
找出 100 万以上的前两个素数,它们的单独数字和也是素数。
以 23 为例,它是一个素数,其数字和 5 也是素数。
解决方案是两个数字的连接,
例如:如果第一个数字是 1,234,567
,第二个是 8,765,432,则
您的解决方案是 12345678765432

思路:只要找出1000000+的随便两个素数并且每个位加起来也是素数的两个素数拼在一起就是result
随便写了个比较啰嗦的C代码

int change(int n){
    int m = 0;
    for (m = 2; m < n; m++) {
        if (n % m == 0){
            return 0;
        }
    }
    return n;
}
int change2(n){
    int n2 = n;
    int q = 0;
    int sum = 0;
    for (q = 0; q < 7; q++) {
        sum = sum + n%10;
        n = n/10;
    }
    int a = change(sum);
    if (a != 0){
        return n2;
    }
    return 0;
}
int main(){
    int i = 0;
    int r = 0;
    for (i = 1000000; i < 1000500; i++) {
        int j = change(i);
        if (j != 0){
            r = change2(j);
            if (r != 0){
                printf("%d\n",r);
            }
        }
    }
}

在这里插入图片描述

0x08 2 Training: Encodings I by Gizmore

在这里插入图片描述
题目意思:
我们从一个挑战者那里截获了这条消息,也许你可以找出他们在说什么。
为了帮助您取得进展,我编写了一个名为JPK的小型 Java 应用程序。
注意:该消息很可能是英文的。

密文:
10101001101000110100111100110100
00011101001100101111100011101000
10000011010011110011010000001101
11010110111000101101001111010001
00000110010111011101100011110111
11100100110010111001000100000110
00011110011110001111010011101001
01011100100000101100111011111110
10111100100100000111000011000011
11001111100111110111110111111100
10110010001000001101001111001101
00000110010111000011110011111100
11110011111010011000011110010111
0100110010111100100101110

我们下载他提供的jar工具
在这里插入图片描述
从帮助里找到这么一条
在这里插入图片描述
在这里插入图片描述
每行8个还多出来一个,那就每行7个,因为可以7位或8位二进制转ASCII
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
This text is 7-bit encoded ascii. Your password is easystarter.

0x09 2 Training: Programming 1 by Gizmore

在这里插入图片描述
题目意思:
当您访问此链接时,您会收到一条消息。
将相同的消息提交回 https://www.wechall.net/challenge/training/programming1/index.php?answer=the_message
您的时间限制是 1.337 秒

点开this page为
在这里插入图片描述
在这里插入图片描述
可以看到为动态码

python实现

import urllib.request
import http.cookiejar
import webbrowser
url1 = "http://www.wechall.net/challenge/training/programming1/index.php?action=request"
url2 = 'http://www.wechall.net/challenge/training/programming1/index.php?answer='
header = {}
req = urllib.request.Request(url1,headers = header)
req.add_header('Cookie','WC=16296850-61988-XXXXXXXXXXXXXXXXX')
message = urllib.request.urlopen(req).read().decode('utf-8')
url2 = url2+message
webbrowser.open(url2)

0x10 2 Training: Regex by Gizmore

在这里插入图片描述
题目意思:
您在本次挑战中的目标是学习正则表达式语法。
正则表达式是您掌握编程的强大工具,因此您至少应该能够解决这个挑战!
每个任务的解决方案总是尽可能最短的正则表达式模式。
另请注意,您也必须在模式中提交分隔符。示例模式:/joe/i,分隔符必须是/

Level 1
你的第一课很简单:提交匹配一个空字符串的正则表达式,并且只有一个空字符串。

条件:1、一个空字符串 2、只有一个
在这里插入图片描述
在这里插入图片描述
答案为:/^$/

Level 2
匹配”wechall”,/^wechall$/

Level 3
在这里插入图片描述
题目意思:
匹配静态字符串不是正则表达式的主要目标。
您的下一个任务是提交与某些图像的有效文件名匹配的表达式。
您的模式应匹配名称为 wechall.ext 或 wechall4.ext 和有效图像扩展名的所有图像。
有效的图像扩展名是 .jpg、.gif、.tiff、.bmp 和 .png。
以下是一些有效文件名的示例:wechall4.tiff、wechall.png、wechall4.jpg、wechall.bmp

/^wechall4?.(?:jpg|gif|tiff|bmp|png)$/

Level 4
在这里插入图片描述
题目意思:
很高兴我们现在有有效的图像,但是您能否也捕获文件名,不带扩展名?
例如: wechall4.jpg 现在应该在您的模式中捕获/返回 wechall4。

需要对文件名添加捕获分组
/^(wechall4?).(?:jpg|gif|tiff|bmp|png)$/

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lmn_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值