WeChall CTF平台20题wp(一)
2022-1-25 17:1:11 Author: mp.weixin.qq.com(查看原文) 阅读量:20 收藏

CTF平台地址:https://www.wechall.net/challs

eg. 1 Training: Get Sourced by Gizmore

  • Score:1(题目等级)

  • Title:Training: Get Sourced

  • Author:Gizmore

题目后的三个分值是可以用户自己打分的,可以当作参考

可以看到,使用次网站的人还是遍布非常广的,并且题目思路与国内是有一些差异的

本篇题目

0x01 1 Training: Get Sourced by Gizmore0x02 1 Training: Stegano I by Gizmore0x03 1 Training: Crypto - Caesar I by Gizmore0x04 1 Training: WWW-Robots by Gizmore0x05 1 Training: ASCII by Gizmore0x06 1 Encodings: URL by Gizmore0x07 2 Prime Factory by ch0wch0w0x08 2 Training: Encodings I by Gizmore0x09 2 Training: Programming 1 by Gizmore0x10 2 Training: Regex by Gizmore0x11 2 Training: PHP LFI by Gizmore0x12 2 PHP 0817 by Gizmore0x13 2 Training: Crypto - Transposition I by Gizmore0x14 2 Training: Crypto - Substitution I by Gizmore0x15 2 Training: Crypto - Caesar II by Gizmore0x16 2 Training: Crypto - Digraphs by Gizmore0x17 2 Training: MySQL I by Gizmore0x18 2 Training: MySQL II by Gizmore0x19 2 Training: Register Globals by Gizmore0x20 2 Training: Math Pyramid by Gizmore0x20 2 Training: Baconian by Gizmore

    题目意思:

    为答案藏在这个页面中

    f12

    password: html_sourcecode

    题目意思为:这是我认为最基础的图片隐写

    下载下来一个.bmp文件,查看一下,位图(bmp)

    图像又称点阵图或光栅图,它使用我们称为像素(象素,Pixel)的一格一格的小点来描述图像。计算机屏幕其实就是一张包含大量像素点的网格。当我们把位图放大时,每一个像素小点看上去就像是一个个马赛克色块。

    放到win的记事本中

    passwd:steganoI

    根据题目提示Caesar-凯撒

    凯撒密码(移位密码):移位密码是一种古典密码,实际上是替换密码的一个特例

    密文:

    PDA MQEYG XNKSJ BKT FQILO KRAN PDA HWVU ZKC KB YWAOWN WJZ UKQN QJEMQA OKHQPEKJ EO ZCCCHJHOXNXL

    凯撒密码在线解密网站:
    https://www.qqxiuzi.cn/bianma/kaisamima.php

    明文:

    THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG OF CAESAR AND YOUR UNIQUE SOLUTION IS DGGGLNLSBRBP

    题目的意思为:

    我们需要去学习Robots,网络爬虫使用 robots.txt 文件来检查是否允许他们对您的网站或仅部分网站进行爬网和索引。有时这些文件会显示目录结构,而不是保护内容不被抓取。

    看到这个题目没有输入框,点进让我们看的网站

    https://en.wikipedia.org/wiki/Robots_exclusion_standard

    我们根据维基百科了解到(不看题目也有解释)robots.txt每个网站都有,robots.txt是一个协议,robots.txt是搜索引擎中访问网站的时候要查看的第一个文件,robots.txt文件告诉爬虫程序在服务器上什么文件是可以被查看的。

    访问即可

    题目意思大致为:

    在这个电脑中,你只能用数字,我们需要去解密下面的信息

    密文:

    84, 104, 101, 32, 115, 111, 108, 117, 116, 105, 111, 110, 32, 105, 115, 58, 32, 100, 101, 114, 108, 103, 110, 103, 102, 109, 108, 99, 114

    解密网站:
    https://www.qqxiuzi.cn/bianma/ascii.htm

    The solution is: derlgngfmlcr

    题目意思:

    你的任务就是去解码,一看就是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!

    题目意思:

    你的任务很简单:

    找出 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);
    }
    }
    }
    }

    题目意思:

    我们从一个挑战者那里截获了这条消息,也许你可以找出他们在说什么。

    为了帮助您取得进展,我编写了一个名为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.

    题目意思:

    当您访问此链接时,您会收到一条消息。

    将相同的消息提交回 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)

    题目意思:

    您在本次挑战中的目标是学习正则表达式语法。

    正则表达式是您掌握编程的强大工具,因此您至少应该能够解决这个挑战!

    每个任务的解决方案总是尽可能最短的正则表达式模式。

    另请注意,您也必须在模式中提交分隔符。示例模式:/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)$/

    题目意思:

    您的任务是利用此代码,该代码显然存在LFI漏洞:

    GeSHi`ed PHP code
    $filename = 'pages/'.(isset($_GET["file"])?$_GET["file"]:"welcome").'.html';
    include $filename;

    ../solution.php 中有很多重要的东西,所以请包含并执行此文件。

    下面是一些正在运行的脚本示例(在下面的框中):

    index.php?file=welcome

    index.php?file=news

    index.php?file=forums

    出于调试目的,可以再次查看整个源代码,也作为高亮版本。

    高亮版本:
    https://www.wechall.net/challenge/training/php/lfi/up/index.php?highlight=christmas
    源代码:
    https://www.wechall.net/challenge/training/php/lfi/up/index.php?show=source

    LFI漏洞又称为本地文件包含漏洞

    https://www.wechall.net/challenge/training/php/lfi/up/index.php?file=news

    isset() 函数用于检测变量是否已设置并且非 NULL

    看到地址

    https://www.wechall.net/challenge/training/php/lfi/solution.php

    判断出solution.php前应该是../../

    因为后面有一个.html,我们可以用%00进行截断

    最终结果:

    http://www.wechall.net/challenge/training/php/lfi/up/index.php?file=../../solution.php%00

    题目意思:

    我为我的动态网页编写了另一个包含系统,但它似乎容易受到 LFI 的攻击。

    这是代码:

    <?php
    if (isset($_GET['which']))
    {
    $which = $_GET['which'];
    switch ($which)
    {
    case 0:
    case 1:
    case 2:
    require_once $which.'.php';
    break;
    default:
    echo GWF_HTML::error('PHP-0817', 'Hacker NoNoNo!', false);
    break;
    }
    }
    ?>

    您的任务是包含solution.php。

    以下是正在运行的脚本:

    News

    Forum

    Guestbook

    目标是包含solution.php文件

    https://www.wechall.net/challenge/php0817/solution.php

    当非数字开头的字符串与数字 0 进行比较时,结果返回true

    http://www.wechall.net/challenge/php0817/index.php?which=solution

    题目意思:
    看起来简单的替换密码对你来说太容易了。
    根据我自己的经验,我可以看出转置密码更难攻击。
    然而,在这个训练挑战中,你应该没有太多问题来揭示明文。
    密文:
    oWdnreuf.lY uoc nar ae dht eemssga eaw yebttrew eh nht eelttre sra enic roertco drre . Ihtni koy uowlu dilekt  oes eoyrup sawsro don:wn lesoihofpc.p

    可以很快发现每两个字母进行换位,C语言实现一下

    int main()
    {
    char arr[] = "oWdnreuf.lY uoc nar ae dht eemssga eaw yebttrew eh nht eelttre sra enic roertco drre . Ihtni koy uowlu dilekt oes eoyrup sawsro don:wn lesoihofpc.p";
    int sz = sizeof(arr)/sizeof(arr[0]);
    //printf("%d\n",sz);
    char tmp = '0';
    int i = 0;
    while(i<sz-1)
    {
    tmp = arr[i];
    arr[i] = arr[i+1];
    arr[i+1] = tmp;
    i = i+2;
    }
    for (i = 0; i < sz; i++) {
    printf("%c",arr[i]);
    }
    return 0;
    }

    明文:

    Wonderful. You can read the message way better when the letters are in correct order. I think you would like to see your password now: neloshifocpp.

    题目意思:

    哦,亲爱的,我猜你已经破解了两个凯撒密码......

    这个更难。虽然简单的替换很容易破解...

    再次将字符限制为A-Z范围内.但我想我可以再想出256个版本。

    密文:

    UQ ZOT KXPJROZQ RND QNC BKE MTKD ZOJS PQ HMJTED J KP JPGMTSSTD LTMQ ITXX DNET QNCM SNXCZJNE ATQ JS TGTSRENXSPPX ZOJS XJZZXT BOKXXTERT IKS ENZ ZNN OKMD IKS JZ

    quipqiup可以破解简单的替换

    明文:

    BY THE ALMIGHTY GOD YOU CAN READ THIS MY FRIEND I AM IMPRESSED VERY WELL DONE YOUR SOLUTION KEY IS EPESGNOLSMML THIS LITTLE CHALLENGE WAS NOT TOO HARD WAS IT

    题目意思:

    caesar 的最大问题是它不允许使用数字或其他字符。

    我已经解决了这个问题,现在我可以在明文中使用任何 ascii 字符。

    键空间也从 26 个增加到 128 个。\o/

    首先根据题目知道为凯撒密码:

    解题思路:将十六进制转换成十进制,再将十进制转换成ascii

    tr 命令用于转换或删除文件中的字符

    echo "0C 34 34 29 20 2F 34 27 71 20 3E 34 3A 20 38 34
    31 3B 2A 29 20 34 33 2A 20 32 34 37 2A 20 28 2D
    26 31 31 2A 33 2C 2A 20 2E 33 20 3E 34 3A 37 20
    2F 34 3A 37 33 2A 3E 73 20 19 2D 2E 38 20 34 33
    2A 20 3C 26 38 20 2B 26 2E 37 31 3E 20 2A 26 38
    3E 20 39 34 20 28 37 26 28 30 73 20 1C 26 38 33
    6C 39 20 2E 39 04 20 76 77 7D 20 30 2A 3E 38 20
    2E 38 20 26 20 36 3A 2E 39 2A 20 38 32 26 31 31
    20 30 2A 3E 38 35 26 28 2A 71 20 38 34 20 2E 39
    20 38 2D 34 3A 31 29 33 6C 39 20 2D 26 3B 2A 20
    39 26 30 2A 33 20 3E 34 3A 20 39 34 34 20 31 34
    33 2C 20 39 34 20 29 2A 28 37 3E 35 39 20 39 2D
    2E 38 20 32 2A 38 38 26 2C 2A 73 20 1C 2A 31 31
    20 29 34 33 2A 71 20 3E 34 3A 37 20 38 34 31 3A
    39 2E 34 33 20 2E 38 20 2A 2C 27 27 28 2A 38 2C
    35 29 31 38 73 " | tr '\n' ' '

    获得目标密文:
    0C 34 34 29 20 2F 34 27 71 20 3E 34 3A 20 38 34 31 3B 2A 29 20 34 33 2A 20 32 34 37 2A 20 28 2D 26 31 31 2A 33 2C 2A 20 2E 33 20 3E 34 3A 37 20 2F 34 3A 37 33 2A 3E 73 20 19 2D 2E 38 20 34 33 2A 20 3C 26 38 20 2B 26 2E 37 31 3E 20 2A 26 38 3E 20 39 34 20 28 37 26 28 30 73 20 1C 26 38 33 6C 39 20 2E 39 04 20 76 77 7D 20 30 2A 3E 38 20 2E 38 20 26 20 36 3A 2E 39 2A 20 38 32 26 31 31 20 30 2A 3E 38 35 26 28 2A 71 20 38 34 20 2E 39 20 38 2D 34 3A 31 29 33 6C 39 20 2D 26 3B 2A 20 39 26 30 2A 33 20 3E 34 3A 20 39 34 34 20 31 34 33 2C 20 39 34 20 29 2A 28 37 3E 35 39 20 39 2D 2E 38 20 32 2A 38 38 26 2C 2A 73 20 1C 2A 31 31 20 29 34 33 2A 71 20 3E 34 3A 37 20
    Hex = "0C 34 34 29 20 2F 34 27 71 20 3E 34 3A 20 38 34 31 3B 2A 29 20 34 33 2A 20 32 34 37 2A 20 28 2D 26 31 31 2A 33 2C 2A 20 2E 33 20 3E 34 3A 37 20 2F 34 3A 37 33 2A 3E 73 20 19 2D 2E 38 20 34 33 2A 20 3C 26 38 20 2B 26 2E 37 31 3E 20 2A 26 38 3E 20 39 34 20 28 37 26 28 30 73 20 1C 26 38 33 6C 39 20 2E 39 04 20 76 77 7D 20 30 2A 3E 38 20 2E 38 20 26 20 36 3A 2E 39 2A 20 38 32 26 31 31 20 30 2A 3E 38 35 26 28 2A 71 20 38 34 20 2E 39 20 38 2D 34 3A 31 29 33 6C 39 20 2D 26 3B 2A 20 39 26 30 2A 33 20 3E 34 3A 20 39 34 34 20 31 34 33 2C 20 39 34 20 29 2A 28 37 3E 35 39 20 39 2D 2E 38 20 32 2A 38 38 26 2C 2A 73 20 1C 2A 31 31 20 29 34 33 2A 71 20 3E 34 3A 37 20"
    Hex = Hex.split()
    for shift in range(127):
    for one in Hex:
    Dec = int(one, 16)+shift+1
    print(chr(Dec % 128), end='')
    print()
    print(shift+1)
    print()

    Good[job,[you[solved[one[more[challenge[in[your[journey.[This[one[was[fairly[easy[to[crack.[Wasn't[it?[128[keys[is[a[quite[small[keyspace,[so[it[shouldn't[have[taken[you[too[long[to[decrypt[this[message.[Well[done,[your[solution[is[egbbcesgpdls.

    替换 "}"

    echo "Good[job,[you[solved[one[more[challenge[in[your[journey.[This[one[was[fairly[easy[to[crack.[Wasn't[it?[128[keys[is[a[quite[small[keyspace,[so[it[shouldn't[have[taken[you[too[long[to[decrypt[this[message.[Well[done,[your[solution[is[egbbcesgpdls." | tr '[' ' '

    题目意思:

    这次我使用有向图加密方案将一个字母加密为两个字符。

    只需 26 个不同的字母,我就可以加密多达 26*26 个不同的字符。

    另一个大问题是共享密钥,但密码很容易被破解。

    消息使用当前语言,以正确的大小写和标点符号书写。没有换行符。

    由此得出每两位对应一个字母或字符

    tqlgwdfpsgunhdufhwunhdzmlgwdlapa vxlguf aclsdhsgcvlzhdlsac hdgnzmla kplslalaunfpls laufdhdhlslalaldufhwhwcvpa djunla wdlghd hdlglg aczmldldzmdhufhwhd lszmhdgnlssghe xsunla zmhdhv djlshwhwhe fplglgac dblgejpa jawdhdlssg hdgnzmla hnlscvxslgsgac unla lalghwufhdzmlgwdzo ejldejldlgejhwejwdldlshwpa

    查看规律,因为有符号,猜测符号在最后一位,pa应该对应符号

    tqlgwdfpsgunhdufhwunhdzmlgwdlapa
    vxlguf aclsdhsgcvlzhdlsac hdgnzmla kplslalaunfpls laufdhdhlslalaldufhwhwcvpa
    djunla wdlghd hdlglg aczmldldzmdhufhwhd lszmhdgnlssghe xsunla zmhdhv djlshwhwhe fplglgac dblgejpa
    jawdhdlssg hdgnzmla hnlscvxslgsgac unla lalghwufhdzmlgwdzo ejldejldlgejhwejwdldlshwpa

    pa之前的字母有30个,应该对应一个单词,tqlgwdfpsgunhdufhwunhdzmlgwdla

    大胆猜测tqlgwdfpsgunhdufhwunhdzmlgwdla在此语境下应为congratulations

    'tq':'c',
    'lg':'o',
    'wd':'n',
    'fp':'g',
    'sg':'r',
    'un':'a',
    'hd':'t',
    'uf':'u',
    'hw':'l',
    'un':'a',
    'hd':'t',
    'zm':'i',
    'lg':'o',
    'wd':'n',
    'la':'s',
    'pa':'.'
    a = "tqlgwdfpsgunhdufhwunhdzmlgwdlapa vxlguf aclsdhsgcvlzhdlsac hdgnzmla kplslalaunfpls laufdhdhlslalaldufhwhwcvpa djunla wdlghd hdlglg aczmldldzmdhufhwhd lszmhdgnlssghe xsunla zmhdhv djlshwhwhe fplglgac dblgejpa jawdhdlssg hdgnzmla hnlscvxslgsgac unla lalghwufhdzmlgwdzo ejldejldlgejhwejwdldlshwpa"
    b = a.split()
    dic = {'tq':'C','lg':'o','wd':'n','fp':'g','sg':'r','un':'a','hd':'t','uf':'u','hw':'l','un':'a','hd':'t','zm':'i','lg':'o','wd':'n','la':'s','pa':'.'}
    for i in b:
    c =[]
    for j in range(0,len(i),2):
    c.append(i[j:j+2])
    print(c)

    d = []
    for k in c:
    if k in dic:
    d.append(dic[k])
    else:
    d.append('_')
    txt = ''.join(d)
    print(txt)
    print()

    根据“congratulations.” 可以推测出其他单词

    _ou - You
    t_is - this
    __ssag_ - message
    su___ss_ull_. - successfully
    goo_ - good

    得到新的key

    'vx' : 'Y'
    'gn' : 'h'
    'kp' : 'M'
    'ls' : 'e'
    'dh' : 'c'
    'pa' : ','//猜测
    'ac' : 'd'

    迭代进行

    'cv' : 'y'
    'lz' : 'p'
    'ld' : 'f'
    'dj' : 'w'
    'hv' : 's'
    'he' : ','//猜测

    'hn' : 'k'
    'xs' : 'b'
    'db' : 'j'
    'ej' : 'b'

    答案

    bfbfoblbnfel

    题目意思:

    这是经典的mysql注入挑战。

    您的任务很简单:以管理员身份登录。

    再次为您提供源代码,也作为突出显示的版本。

    查看题目已经给的代码

    SELECT * FROM users WHERE username='$username' AND password='$password'

    答案

    admin'#

    题目意思:

    这与MySQL1相同,但您必须想出更高级的注入来欺骗此身份验证。

    你的任务又来了:以管理员身份登录。

    再次为您提供源代码,也作为突出显示的版本。

    <?php
    /* TABLE STRUCTURE
    CREATE TABLE IF NOT EXISTS users (
    userid INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
    password CHAR(32) CHARACTER SET ascii COLLATE ascii_bin NOT NULL
    ) ENGINE=myISAM;
    */

    其中有三个参数

    username password进行了分开验证

    SELECT * FROM users WHERE username='$username'

    构造新语句

    SELECT * FROM users WHERE username='admin1' union select 1,'admin',md5('password');#

    让下面的判断语句以为搜到的数据为“1,'admin',md5('password')”

    password处输入password

    答案

    admin1' union select 1,'admin',md5('password');#

    题目意思:

    这个挑战是旧 PHP 时代的遗留物,默认情况下已启用全局寄存器,这通常会导致安全问题。

    同样,您的工作是以管理员身份登录,并为您提供源代码以及突出显示的版本。

    这是易受攻击的脚本的链接。

    我还设置了一个测试帐户:test:test

    参考链接:
    http://www.chiange.com/php%e4%bd%bf%e7%94%a8-register-globals%e5%8f%af%e8%83%bd%e5%bc%95%e5%8f%91%e7%9a%84%e9%97%ae%e9%a2%98/

    当 register_globals 打开以后,各种变量都被注入代码,例如来自 HTML 表单的请求变量。再加上 PHP 在使用变量之前是无需进行初始化的,这就使得更容易写出不安全的代码。

    答案

    http://www.wechall.net/challenge/training/php/globals/globals.php?login[0]=admin

    题目意思:

    这是数学挑战的第一个版本。

    您必须为几何函数想出最短的解决方案(9 个字符或更少)。

    故事是这样的:

    Pharao momo想要一个基于正方形的金字塔,其中所有八个边的长度都相同“a”。

    请用公式支持他计算给定边长的体积。

    示例公式:a^3/3*sqrt(a*a)

    符号提示:sqrt()、a^2 等

    我在这画了个简单的图

    a^3/3*sqrt(2) --> a^3/18^0.5 --> 18^-0.5a^3

    还是多1个字符,搜索才发现.之前的0可以省略

    答案

    18^-.5a^3

    题目意思

    在此培训挑战中,您必须在另一条消息中揭示隐藏的消息。

    众所周知,消息是通过培根密码隐藏的。

    同样,每个会话的解决方案都会发生变化,并由 12 个随机字符组成。

    The Message

    BaCoN's cIphEr or THE bacOnIAN CiPHer iS a meThOD oF sTEGaNOGrapHY (a METhoD Of HidIng A sECRet MeSsaGe as OpPOsEd TO a TRUe CiPHeR) dEVIseD BY francis bAcoN. a MessAge Is coNCeALED in THe pRESenTatIoN OF TexT, ratHer thaN iTs coNteNt. tO enCODe A MEsSaGe, eaCh lETter Of THe pLAInText Is rePLAcED By A groUp oF fIvE OF the LettERs 'a' oR 'B'. ThIS RePlaCemEnt is donE acCORDinG to thE alPhABeT of tHe BACOnIAN cIpHeR, sHoWn bElOw. NoTe: A SeCoNd vErSiOn oF BaCoN'S CiPhEr uSeS A UnIqUe cOdE FoR EaCh lEtTeR. iN OtHeR WoRdS, i aNd j eAcH HaS ItS OwN PaTtErN. tHe wRiTeR MuSt mAkE UsE Of tWo dIfFeReNt tYpEfAcEs fOr tHiS CiPhEr. AfTeR PrEpArInG A FaLsE MeSsAgE WiTh tHe sAmE NuMbEr oF LeTtErS As aLl oF ThE As aNd bS In tHe rEaL, sEcReT MeSsAgE, tWo tYpEfAcEs aRe cHoSeN, oNe tO RePrEsEnT As aNd tHe oThEr bS. tHeN EaCh lEtTeR Of tHe fAlSe mEsSaGe mUsT Be pReSeNtEd iN ThE ApPrOpRiAtE TyPeFaCe, AcCoRdInG To wHeThEr iT StAnDs fOr aN A Or a b. To dEcOdE ThE MeSsAgE, tHe rEvErSe mEtHoD Is aPpLiEd. EaCh 'TyPeFaCe 1' LeTtEr iN ThE FaLsE MeSsAgE Is rEpLaCeD WiTh aN A AnD EaCh 'TyPeFaCe 2' LeTtEr iS RePlAcEd wItH A B. tHe bAcOnIaN AlPhAbEt iS ThEn uSeD To rEcOvEr tHe oRiGiNaL MeSsAgE. aNy mEtHoD Of wRiTiNg tHe mEsSaGe tHaT AlLoWs tWo dIsTiNcT RePrEsEnTaTiOnS FoR EaCh cHaRaCtEr cAn bE UsEd fOr tHe bAcOn cIpHeR. bAcOn hImSeLf pRePaReD A BiLiTeRaL AlPhAbEt[2] FoR HaNdWrItTeN CaPiTaL AnD SmAlL LeTtErS WiTh eAcH HaViNg tWo aLtErNaTiVe fOrMs, OnE To bE UsEd aS A AnD ThE OtHeR As b. ThIs wAs pUbLiShEd aS An iLlUsTrAtEd pLaTe iN HiS De aUgMeNtIs sCiEnTiArUm (ThE AdVaNcEmEnT Of lEaRnInG). BeCaUsE AnY MeSsAgE Of tHe rIgHt lEnGtH CaN Be uSeD To cArRy tHe eNcOdInG, tHe sEcReT MeSsAgE Is eFfEcTiVeLy hIdDeN In pLaIn sIgHt. ThE FaLsE MeSsAgE CaN Be oN AnY ToPiC AnD ThUs cAn dIsTrAcT A PeRsOn sEeKiNg tO FiNd tHe rEaL MeSsAgE.

    法兰西斯·培根另外准备了一种方法,其将大小写分别看作A与B,可用于无法使用不同字体的场合(例如只能处理纯文本时)。但这样比起字体不同更容易被看出来,而且和语言对大小写的要求也不太兼容。

    培根密码本质上是将二进制信息通过样式的区别,加在了正常书写之上。培根密码所包含的信息可以和用于承载其的文章完全无关。

    通过代码将文本大写转为A,小写转为B

    a = "BaCoN's cIphEr or THE bacOnIAN CiPHer iS a meThOD oF sTEGaNOGrapHY (a METhoD Of HidIng A sECRet MeSsaGe as OpPOsEd TO a TRUe CiPHeR) dEVIseD BY francis bAcoN. a MessAge Is coNCeALED in THe pRESenTatIoN OF TexT, ratHer thaN iTs coNteNt. tO enCODe A MEsSaGe, eaCh lETter Of THe pLAInText Is rePLAcED By A groUp oF fIvE OF the LettERs 'a' oR 'B'. ThIS RePlaCemEnt is donE acCORDinG to thE alPhABeT of tHe BACOnIAN cIpHeR, sHoWn bElOw. NoTe: A SeCoNd vErSiOn oF BaCoN'S CiPhEr uSeS A UnIqUe cOdE FoR EaCh lEtTeR. iN OtHeR WoRdS, i aNd j eAcH HaS ItS OwN PaTtErN. tHe wRiTeR MuSt mAkE UsE Of tWo dIfFeReNt tYpEfAcEs fOr tHiS CiPhEr. AfTeR PrEpArInG A FaLsE MeSsAgE WiTh tHe sAmE NuMbEr oF LeTtErS As aLl oF ThE As aNd bS In tHe rEaL, sEcReT MeSsAgE, tWo tYpEfAcEs aRe cHoSeN, oNe tO RePrEsEnT As aNd tHe oThEr bS. tHeN EaCh lEtTeR Of tHe fAlSe mEsSaGe mUsT Be pReSeNtEd iN ThE ApPrOpRiAtE TyPeFaCe, AcCoRdInG To wHeThEr iT StAnDs fOr aN A Or a b. To dEcOdE ThE MeSsAgE, tHe rEvErSe mEtHoD Is aPpLiEd. EaCh 'TyPeFaCe 1' LeTtEr iN ThE FaLsE MeSsAgE Is rEpLaCeD WiTh aN A AnD EaCh 'TyPeFaCe 2' LeTtEr iS RePlAcEd wItH A B. tHe bAcOnIaN AlPhAbEt iS ThEn uSeD To rEcOvEr tHe oRiGiNaL MeSsAgE. aNy mEtHoD Of wRiTiNg tHe mEsSaGe tHaT AlLoWs tWo dIsTiNcT RePrEsEnTaTiOnS FoR EaCh cHaRaCtEr cAn bE UsEd fOr tHe bAcOn cIpHeR. bAcOn hImSeLf pRePaReD A BiLiTeRaL AlPhAbEt[2] FoR HaNdWrItTeN CaPiTaL AnD SmAlL LeTtErS WiTh eAcH HaViNg tWo aLtErNaTiVe fOrMs, OnE To bE UsEd aS A AnD ThE OtHeR As b. ThIs wAs pUbLiShEd aS An iLlUsTrAtEd pLaTe iN HiS De aUgMeNtIs sCiEnTiArUm (ThE AdVaNcEmEnT Of lEaRnInG). BeCaUsE AnY MeSsAgE Of tHe rIgHt lEnGtH CaN Be uSeD To cArRy tHe eNcOdInG, tHe sEcReT MeSsAgE Is eFfEcTiVeLy hIdDeN In pLaIn sIgHt. ThE FaLsE MeSsAgE CaN Be oN AnY ToPiC AnD ThUs cAn dIsTrAcT A PeRsOn sEeKiNg tO FiNd tHe rEaL MeSsAgE."
    b = []
    A = "A";
    B = "B";
    for i in a:
    if ord(i)>=65 and ord(i)<=90:
    b.append(B)
    elif ord(i)>=97 and ord(i)<=122:
    b.append(A)
    else:
    pass
    print(''.join(b))

    在线工具
    http://www.hiencode.com/baconian.html

    veryxwellxdonexfellowxhackerxthexsecretxkeywordxisxcghosibhsclixxkvfksujouwkwwurnwvfnfwjksvewvlkxlkjnjvmtmtevlkuvjfknkzeuvuvskkszktnkwvkvsusoevwvjkkzkvkvjwwvsvuvkvjvjosvvjuwkskwvjlfjfjnjflkvlnfkjuskkvfjkkvnkwvwwvuwusvjkzuwwkjktfkstmvjkvnkwkwvwvskkfsskvfnlfkswkkwwvwnvwskxkktjfv

    利用sublim替换x

    答案

    cghosibhscli

    剩下的一些题目在另一个文章中

    参考链接🔗:
    http://www.chiange.com/
    http://www.ruanyifeng.com/blog/2013/07/gpg.html

    https://www.tuziang.com/index.php/combat/1855.html

    确实有些题目(比如1分的题目)很简单,但也有我还没有想到思路的题,比如有一道Christmas2021(目前世界有14个人解出)

    但是本人强迫症所以会尽量最全面的记录这个网站每一道优秀的题,每一个解题的过程。

    记录也是抱着尝试和分享的态度,如果有不一样的思路可以留言分享🧡

    E

    N

    D

    Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。

    团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室。团队公众号自创建以来,共发布原创文章370余篇,自研平台达到26个,目有15个平台已开源。此外积极参加各类线上、线下CTF比赛并取得了优异的成绩。如有对安全行业感兴趣的小伙伴可以踊跃加入或关注我们。


    文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247493633&idx=1&sn=f7bfd868cd68627d58cd0d49f229f0e1&chksm=ce5dca60f92a43766f123b6c01342118ab91d383f58845746d9a96681bd61ded70ab6929f096#rd
    如有侵权请联系:admin#unsafe.sh