new SUCTF web 赛后复现总结

0x01 CheckIn

这题docker 报错不能复现(估计主办方提供的不是运行后的 docker 文件),因此简单整理下思路。
这题是应该是仿Insomnihack 2019思路出的题。在这题里,符合以下情况均 failed:

  • <?是否包含在文件内容中
  • 如果文件只有扩展名(像 .htaccess, .txt)
  • 文件不允许的扩展名
  • 无法经过exif_imagetype的检验
  • getimagesize不返回1337 * 1337

具体如何绕过就不在本文赘述,具体可以见:https://thibaudrobin.github.io/articles/bypass-filter-upload/

回到本题,本题没有那么多限制,但是与Insomnihack 2019不同的是,他使用的是 Apache 的.htaccess特性,而本题使用的 NGINX 的 .user.ini
如果看了上文那个链接的朋友,应该明白
如何去做这一题了,就是通过.user.ini来构造后门,通过.user.ini中配置的“特殊文件”,来执行自己的想要的命令,流程如下:




- 阅读剩余部分 -

AWVS Linux 破解版在 Centos7 下安装过程中存在问题记录

AWVS Linux 破解版在 Centos7 下安装过程中存在问题记录

问题 1

运行 AWVS 安装程序时出现以下问题:

图片 1.png

Acunetix Installer Version: v_190703137, Copyright (c) Acunetix
------------------------------------------------------------
Checking os...
Checking for dependencies...
    - dependency libXrender.so.1 not found on the system
    - dependency libXext.so.6 not found on the system
    - dependency libcairo.so.2 not found on the system
    - dependency libXss.so.1 not found on the system
    - dependency libXcursor.so.1 not found on the system
    - dependency libXfixes.so.3 not found on the system
    - dependency libXcomposite.so.1 not found on the system
    - dependency libXrandr.so.2 not found on the system
    - dependency libpangocairo-1.0.so.0 not found on the system
    - dependency libXdamage.so.1 not found on the system
    - dependency libgdk-3.so.0 not found on the system
    - dependency libatspi.so.0 not found on the system
    - dependency libXtst.so.6 not found on the system
    - dependency libgtk-3.so.0 not found on the system
    - dependency libatk-bridge-2.0.so.0 not found on the system
    - dependency libgdk_pixbuf-2.0.so.0 not found on the system
    - dependency libatk-1.0.so.0 not found on the system
    - dependency libXi.so.6 not found on the system
    - dependency libpango-1.0.so.0 not found on the system
    - dependency libcups.so.2 not found on the system
Some dependencies are not found on the system. Aborting installation.
Aborting installation

- 阅读剩余部分 -

2019NISC CTF 部分 WriteUp

0x00 Game

操作内容:
查看源码发现存在可疑 JS 文件:

1.png

读取发现:

image

构造 POST 请求,参数 score=15 时,即可读出数据

3.png


- 阅读剩余部分 -

某工控 CTF 线上赛隐信道数据安全分析题解

0x01 赛题说明

图片 1.png

0x02 曲折

题目很明显,就是一道 MP3的隐写题,按照常规思路,有三种思路:

  • 直接右击txt打开,查找关键词 flag
  • 查看该音频文件的波形图、频谱图,是否存在相关信息可以转化为摩斯电码
  • 查看mp3 中是否含有隐藏文件,提取文件

- 阅读剩余部分 -

一道MMS工控协议CTF题的WriteUp

0x01 赛题说明

图片 1.png

赛题说明:
只能变电站通过 61850 规约进行监控层到间隔层的数据采集,请分析网络数据包,了解 MMS 规约,进一步发现数据中隐藏的 flag。

题目:question_1531222544_JYvFGmLP49PFC0R2.pcap.zip(下载见最下方的百度云传送门)

0x02 背景知识

MMS即制造报文规范,是ISO/IEC9506标准所定义的一套用于工业控制系统的通信协议。

此处不介绍关于 MMS 协议的具体内容,只做报文简单讲解。

如果有兴趣,可以阅读此文:MMS(见最下方的百度云传送门)


- 阅读剩余部分 -

由filter_var()函数引起的技术探讨

0x01 起因

最近在看PHP SECURITY CALENDAR 2017的题目,这是第二题

Day 2 - Twig

Can you spot the vulnerability?

// composer require "twig/twig"
require 'vendor/autoload.php';

class Template {
  private $twig;

  public function __construct() {
    $indexTemplate = '<img ' .
      'src="https://loremflickr.com/320/240">' .
      '<a href="{{link|escape}}">Next slide »</a>';

    // Default twig setup, simulate loading
    // index.html file from disk
    $loader = new Twig\Loader\ArrayLoader([
      'index.html' => $indexTemplate
    ]);
    $this->twig = new Twig\Environment($loader);
  }

  public function getNexSlideUrl() {
    $nextSlide = $_GET['nextSlide'];
    return filter_var($nextSlide, FILTER_VALIDATE_URL);
  }

  public function render() {
    echo $this->twig->render(
      'index.html',
      ['link' => $this->getNexSlideUrl()]
    );
  }
}

(new Template())->render();

这里考察的是XSS漏洞。对于XSS漏洞,大部分出现的地方在输出环节,如 echo $var; $var可控且无过滤,或者过滤不严格,导致了XSS漏洞的产生。

- 阅读剩余部分 -

由PHP SECURITY CALENDAR 2017引发的思考总结

0x01 起因

Day 1 - Wish List

Can you spot the vulnerability?

class Challenge {
  const UPLOAD_DIRECTORY = './solutions/';
  private $file;
  private $whitelist;

  public function __construct($file) {
    $this->file = $file;
    $this->whitelist = range(1, 24);
  }

  public function __destruct() {
    if (in_array($this->file['name'], $this->whitelist)) {
      move_uploaded_file(
        $this->file['tmp_name'],
        self::UPLOAD_DIRECTORY . $this->file['name']
      );
    }
  }
}

$challenge = new Challenge($_FILES['solution']);

这里的关键问题在in_array()函数,可以先看看In_array()的函数定义:

- 阅读剩余部分 -

typecho搬家后出现的一些问题解决方法

起因

阿里云到期,不得已搬家了~
搬家的过程中,遇到一些问题,提供一些解决方法

1、出现"500Database Query Error"

config.inc.php 里面的55行左右的数据库类型Mysql改为Pdo_Mysql,
图片 1.png

2、出现"Error establishing a database connection"错误

  • 数据库服务是否运行
  • 是否启动了数据库服务
  • 数据库配置没有配置正确
  • 检查config.inc.php配置,看看config.inc.php中数据库配置是否正确,
  • 数据库版本太高(8.0以上就会出错)
    这是个巨坑,一开始我直接yum search mysql 然后找了一个版本的MySQL安装,结果发现是8.1版本的……当时就感觉不好,果然,无论怎么测试连接,都是出现Error establishing a database connection"错误,然后把这个版本的MySQL给卸载了,重新安装了5.7版本的MySQL,恢复正常。



- 阅读剩余部分 -

精读:REDQUEEN: Fuzzing with Input-to-State Correspondence

00 - About

作者:Cornelius Aschermann, Sergej Schumilo, Tim Blazytko, Robert Gawlik and Thorsten Holz

01 – Why

近年来,基于模糊的抽象自动化软件测试经历了一次复兴,特别是反馈驱动模糊以其在有限输入语料库下高效地进行随机测试的能力而闻名(such afl)。尽管取得了许多进展,但有两个常见的问题是 magic numbers 和 checksums,这些问题通常使用 taint tracking 和symbolic execution 等计算开销较大的方法来克服这些障碍。不幸的是,这样的方法通常需要访问源代码、对环境的需求较高(例如,库调用或底层操作系统的行为)或平台指令集的确切语义。

1.png

因此,本文介绍了一种轻量级的、但非常有效的方法来替代 taint tracking 和 symbolic
execution,以方便和优化最先进的反馈模糊处理,这种模糊处理很容易扩展到大型二进制应用程序和未知环境。


- 阅读剩余部分 -

精读:CollAFL: Path Sensitive Fuzzing

0x01 Why

目前流行的fuzzing(如AFL)通常使用较为简单的coverage information,这种覆盖的不准确和不完整给fuzzing带来了严重的局限性。首先,它会导致路径冲突,从而影响fuzzing挖掘出导致新崩溃的潜在路径。更重要的是,它也会影响fuzzing的最优决策。此外,学术界的大部分研究的是Coverage-guided fuzzing,很少有目光真正的投在Coverage上,所以CollAFL做了这一块的内容。

0x02 What

对AFL中的coverage inaccuracy 和seed选择策略做了改进,改进后的工具称为CollAFL

0x03 How

本文主要做了两个改进。第一,在AFL中,AFL要用到一个64KB bitmap来保存Coverage的信息,在AFL进行fuzzing的时候,会发生碰撞,两个快构成一个边,AFL为边赋了hash值,这个hash就代表这条边,可是不同的边计算出的hash可能是一样的,于是就发生了Collision , Collision可能会导致某些input到达新的路径,但AFL却没有将该input作为seed,本文主要针对这一点,采用了一个新的算法,解决了路径hash collision问题。第二,在seed选择的时候,CollAFL会优先选择对Coverage有贡献的seed。

CollAFL的具体做法如下。

- 阅读剩余部分 -