WeChall抄答案记录【1】

1.Training: Get Sourced (Training)

右键查看网页源代码,中间可以看到提示
在这里插入图片描述
把页面拉到最后也没看到有啥子,最后ctrl+f直接搜索关键词,发现在页面最下面的右下角
在这里插入图片描述

2.Training: Stegano I (Training, Stegano)

图片隐写,下载图片用记事本打开

3.Training: Crypto - Caesar I (Crypto, Training)

这里用了python暴力破解,但是答案一直提交错误,最后才发现26个字母打错了啊啊啊啊啊

message="BPM YCQKS JZWEV NWF RCUXA WDMZ BPM TIHG LWO WN KIMAIZ IVL GWCZ CVQYCM AWTCBQWV QA XXMZAUQMPNVL"
letters="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

for key in range((len(letters))):  #长度范围0-25
    translate = ''

    for symbol in message:   #解密循环
        if symbol in letters:
            num = letters.find(symbol)
            num = num-key

            if num < 0:    #判断得到的字母范围是否小于0,是的话加上26
                num = num + len(letters)
            translate = translate + letters[num]

        else:
            translate = translate + symbol
    print("key %s:%s" %(key,translate)) #输出字符串

4.Training: WWW-Robots (HTTP, Training)

先访问https://www.wechall.net/robots.txt
在这里插入图片描述
得到
在这里插入图片描述
根据/challenge/training/www/robots/T0PS3CR3T访问PASS在这里插入图片描述
在这里插入图片描述

5.Training: ASCII (Training, Encoding)

根据ASCII码对照表查找
在这里插入图片描述

6.Encodings: URL (Training, Encoding)

在这里插入图片描述
通过在线URL解码工具解码得到:
Yippeh! Your URL is challenge/training/encodings/url/saw_lotion.php?p=bhdggolmflpi&cid=52#password=fibre_optics Very well done!
在这里插入图片描述

7.2021 Christmas Hippety (Stegano)

8.Prime Factory (Training, Math)

#include<stdio.h>
#include<math.h>

int judge(long n)
{
	int i;
	for(i=2;i<=sqrt(n);i++)
	{
		if(n%i==0)return 0;
	}
	return 1;
}
int main()
{
	long n=1000000,p1,p2,sum=0,m;
	p1=n;
	while(1)
	{
		p1++;
		if(judge(p1)==1)
		{
			m=p1;
			while(m)
			{
			sum+=m%10;
			m/=10;
			}
			if(judge(sum)==1)
			{
				printf("%d",p1);
				sum=0;
				break;
			}
			else
			sum=0;
		}
	}
	p2=p1;
	while(1)
	{
		p2++;
		if(judge(p2))
		{
			m=p2;
			while(m)
			{
			sum+=m%10;
			m/=10;
			}
			if(judge(sum)==1)
			{
				printf("%d",p2);
				break;
			}
			else
			sum=0;
		}
	}
    return 0;
}

9.Training: Encodings I (Training, Encoding)

下载JAR包,打开发现是一个解码软件,把密文粘贴进去,点击Binary中Binary Foramt,发现最后一行多出来一个0,ASCII编码有7位和8位,将BitsPerBlock改成7再点击Binary中Binary Foramt,最后选择Binary to ASCII

10.Training: Programming 1 (Training, Coding)

因为有时间要求,所以需要写一个脚本来运行,这里使用指定浏览器打开(一开始尝试的时候打开不了网页,可能是因为我的谷歌浏览器的文件名有问题,与路径上的exe不一致,重新打开浏览器之后就可以正常打开了)

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=15835712-61717-vFqauJSFWe8ek5Lw') #cookie(WC=11902277-43537-W2ovBL4df44puWJB)要用你自己的!!!
text = urllib.request.urlopen(req).read().decode('utf-8')
print(text)
url2 = url2+text
req = urllib.request.Request(url2,headers = header)
chromePath = r'C:\Users\admin\AppData\Local\Google\Chrome\Application\chrome.exe'  #例如我的:C:\***\***\***\***\Google\Chrome\Application\chrome.exe
webbrowser.register('chrome', None, webbrowser.BackgroundBrowser(chromePath))  #这里的'chrome'可以用其它任意名字,如chrome111,这里将想打开的浏览器保存到'chrome'
webbrowser.get('chrome').open(url2)

11.Training: Regex (Training, Regex)

level1:/^$/
  1. ^匹配输入字符串的开始位置,除非在方括号表达式中使用,当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合。要匹配 ^字符本身,请使用 ^。
  2. $ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字符本身,请使用 $。
level2:/^wechall$/
level3:/^wechall4?.(?:jpg|gif|tiff|bmp|png)$/
  1. ? 重复零次或一次
  2. (?:exp)表示非捕获分组,匹配exp,不捕获匹配的文本,也不给此分组分配组号。
level4:/^(wechall4?).(?:jpg|gif|tiff|bmp|png)$/
  1. (wechall4?)用小括号来指定子表达式(也叫做分组)

12.Training: PHP LFI (Exploit, PHP, Training)

右键solution.php查看完整链接
从index.php跳转到solution.php需要经过两个父目录。
但是直接提交?file=…/…/solution.php会出错
在这里插入图片描述

原因是后面多了个.html,可以利用空字节%00来过滤掉后面的.html

13.PHP 0817 (PHP, Exploit)

switch/case 作的是松散比较。当一个非数字开头的字符串与数字0进行==比较时,结果总是true.因此可以直接提交solution作为which变量的值,"solution"相当于0,必然会执行require_once命令。
require_once 语句和 require 语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。equire_once() 是为了避免重复加载文件。
这里解决方法如下:
https://www.wechall.net/challenge/php0817/index.php?which=solution

14.Training: Crypto - Transposition I (Crypto, Training)

分析密文,开头的单词是Wonderful,每两个符号进行换位

#include<stdio.h>
#include<string.h>
int main()
{
	char a[100],temp;
	int n,i,j;
	gets(a);
	n=strlen(a);
	j=0;
	for(i=0;i<n;i++){
		if(j%2!=0)
		{
			temp=a[j];
			a[j]=a[j-1];
			a[j-1]=temp;
		}
		j++;
	}
	puts(a);
}

15.Training: Crypto - Substitution I (Crypto, Training)

通过这个在线网站,暴力破解 https://quipqiup.com/
在这里插入图片描述

cipher = "0F 37 37 2C 20 32 37 2A 74 20 41 37 3D 20 3B 37 34 3E 2D 2C 20 37 36 2D 20 35 37 3A 2D 20 2B 30 29 34 34 2D 36 2F 2D 20 31 36 20 41 37 3D 3A 20 32 37 3D 3A 36 2D 41 76 20 1C 30 31 3B 20 37 36 2D 20 3F 29 3B 20 2E 29 31 3A 34 41 20 2D 29 3B 41 20 3C 37 20 2B 3A 29 2B 33 76 20 1F 29 3B 36 6F 3C 20 31 3C 07 20 79 7A 00 20 33 2D 41 3B 20 31 3B 20 29 20 39 3D 31 3C 2D 20 3B 35 29 34 34 20 33 2D 41 3B 38 29 2B 2D 74 20 3B 37 20 31 3C 20 3B 30 37 3D 34 2C 36 6F 3C 20 30 29 3E 2D 20 3C 29 33 2D 36 20 41 37 3D 20 3C 37 37 20 34 37 36 2F 20 3C 37 20 2C 2D 2B 3A 41 38 3C 20 3C 30 31 3B 20 35 2D 3B 3B 29 2F 2D 76 20 1F 2D 34 34 20 2C 37 36 2D 74 20 41 37 3D 3A 20 3B 37 34 3D 3C 31 37 36 20 31 3B 20 38 3A 3A 31 30 29 2B 36 2D 2B 31 3A 76"
cipher = cipher.split()
#对整个字符串循环
for shift in range(127):
    #遍历字符串的每个字符
    for every in cipher:
        current =  int(every, 16)+shift+1
        print(chr(current % 128), end='')
    print()
    print(shift+1)

16.Training: Crypto - Digraphs (Crypto, Training)

将两个符号替换成一个符号,再通过https://quipqiup.com/破解
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值