一道很锻炼脚本能力的小题(包括正则,文件处理,字符串处理等)

0X00 前言

事情的起因是这学期开始的时候 XDSEC 招新,本来是交给大一的学弟学妹们出题运维的,但是我还是突发奇想的出了一个比较有趣的脚本题,难度并不是很大,但是很多东西都考到了,感觉很锻炼能力,意图也是让新生们学习一下脚本语言。当时题目一出来解的方法也非常多有用 C++ 的,有用 python 的,还有一个外校来交流的师傅用的是 shell 脚本。。。当然我是最奇葩的,我用的是 bat 脚本,因为当时正巧在看一些关于 bat 的东西,还写了这篇文章,现在学期快结束了,我又想起来了这个东西,因为之前和那位外校师傅交流立了 flag 说要自己也写一个 shell 脚本的版本,于是现在来填坑啦!

0X01 题目介绍

题目名称:想去BAT?先过我这关!

本题你可以看到一共有50个文件夹,每个文件夹内有一个与文件夹同名的txt文档,每个文档里面有若干由随机数字和短横线组成的字符串。

如图所示:

Linux 下使用 Spin 配合 promela 语言进行协议的模拟分析

0X00 前言

计算机网络及通信系统的核心技术是协议分析与设计。协议分析与设计是借助计算机,在相应软件平台上对以PROMELA语言为描述手段完成的设计规范,自动地完成相应协议仿真,模拟,验证测试,从而减少协议开发过程中存在的错误,提高协议开发的效率和质量。

对于给定的一个使用PROMELA描述的协议系统,SPIN可以对其执行任意的模拟,也可以生成一个C代码程序,然后对该系统的正确性进行有效检验,并报告系统中出现的死锁,无效的循环,未定义的接受和标记不完全等情况。

补充:

SPIN 是最强大的模型检测工具之一,也是迄今为止唯一获得 ACM 软件系统奖的模型 检测工具 ,本文实验所用为 SPIN 的( GUI)界面化工具 iSPAN,Promela 是 SPIN 的一种建 模语言

Linux 下编译并使用 Miracl 库

0X01 Miracl 是什么

MIRACL(Multiprecision Integer and Rational Arithmetic C/c++ Library)是一套由Shamus Software Ltd.所开发的一套关于大数运算函数库,用来设计与大数运算相关的密码学之应用,包含了RSA 公开密码学、Diffie-Hellman密钥交换(Key Exchange)、AES、DSA数字签名,还包含较新的椭圆曲线密码学(Elliptic Curve Cryptography)等等。运算速度快,并提供源代码。国外著名密码学函数库还有:GMP、NTL、Crypto++、LibTomCrypt(LibTomMath)、OpenSSL等。

HCTF 2018 web 部分题目 详细 writeup

0X00 前言

每年 HCTF 都收获颇丰,今年又在 L-team 队友们的帮助下学到了很多东西,记录一下,还是太菜了,要多学习才行,还有就是不要偷懒,多多尝试和研究,偷懒是一个人走向失败的开始。

0X01 warmup

热身题,hint 页面存在一个文件包含,还告诉了 flag 的文件名

如图所示:

此处输入图片的描述

扫了一下目录,发现了一个 source.php

一篇文章带你理解漏洞之 PHP 文件包含漏洞

0X01 前言

其实有想法写一个系列总结各种漏洞的,但是苦于没有充足的时间,只能先写一部分,后期再统一拿出来进行总结,这部分就是 PHP 文件包含的一些小总结。

0X02 最常见的两个函数的形象解释:

我们知道文件包含最常见的是两个函数 include() require()(这里就不谈他们的亲戚 include_once() 和 require_once() 了)

在php 这个工厂里,include() 是一个比较松散的员工,平时没有活干的时候他就闲着,从来不想着自己看有什么活主动一点,于是只有当程序运行到 include() 的时候他才会执行,并且呢也因为他松散的天性,在出错的时候他也只是报一个警告,并不会让程序中断

但是,有另一名员工 require() 他能力和include() 差不多,但是他这个人就非常的有上进心,工作认真负责,他一看到程序运行就立刻包含,不会像include() 一样等别人催,并且 require() 还会在出错的时候非常认真地报错,并小心谨慎地阻止程序继续运行

LCTF 2018 T4lk 1s ch34p,sh0w m3 the sh31l 详细分析

0X00 两道题两个非预期

本来就出了这一道题,PHP 代码是用 orange 的改的,我本想设计一个不可上传,但是路径可知的目录,然后利用 java 的 xxe 实现文件上传,再利用 move 移动到那个已知的路径,通过反序列化临时文件来触发已知路径中的文件包含 getshell,但是由于我自己对orange 代码中沙盒的理解的不到位,导致了这道题彻底的非预期,后来我干脆删除了 java 的部分,因为师傅们发现 data 目录其实在 cookie 中能得到,而我在反序列化的时候也没有限制 data 目录的反序列化,并且上传的文件可控,那这样就直接能 getshell, 第二题虽然我限制了不能反序列化 data 目录下面的文件,但是由于我自己写 read_secret 时候的失误导致了另一个非预期,read_secret 本来应该是一个 shell 脚本,但我写成了一个字符串,返回值是 Null ,所以 cookie 中的 hmac 签名不攻自破,路径也就可以伪造,然后利用这种方法 getshell ,但是实际上这个两个题的代码就差了过滤 data 和 .. 的正则,还有一点像吐槽的就是我那个评论框真的是因为人性化做的不好,似乎人们都觉得那个是假的似的,那我下面的主要分析就按照我一开始的想法分析了。

搭建 Spring MVC 框架踩坑记

0X00 前言

出于出LCTF 2018 题目的原因,不得不自己搭建一个 Spring MVC 框架,虽然这只是一地步,但是踩了无数的坑,我在这里简单的记录一下

0X01 创建项目

怎么创建项目呢,创建什么项目呢?这本身就是一个问题,后来在TG师傅的指点下,我最终选择了使用 maven 的方式创建项目,因为这种方法使用 pom.xml 统一管理 jar 包,添加和管理都很方便

如图所示:

此处输入图片的描述

一篇文章带你深入理解漏洞之 PHP 反序列化漏洞

0X00 前言

自从 Orange 在 2017年的 hitcon 出了一个 0day 的 php phar:// 反序列化给整个安全界开启了新世界的大门以后,php 反序列化这个漏洞就逐渐升温,没想到后来 2018 年 blackhat 的议题上这个问题再次被提及,利用的还是 Orange 的思路(我只能 orz),到现在 phar:// 反序列化已经成为了各大 CTF 炙手可热的思路,就仿佛 2016 年的 CVE-2016-7124 绕过 __weakup 一样,于是我也把这篇文章提上日程,希望能在对整个 PHP 反序列化漏洞的剖析过程中对其有更深入的理解,也希望读者在读我的文章中能有不一样的体验和收获(如果真的是这样,这将是我莫大的荣幸)

0X01 什么是序列化和反序列化

1.从 json 开始类比

我先不说序列化,大家都看到过 json 数据吧,json 什么样子的

如图所示:

此处输入图片的描述

一篇文章带你理解漏洞之 XXE 漏洞

一、XXE 是什么

介绍 XXE 之前,我先来说一下普通的 XML 注入,这个的利用面比较狭窄,如果有的话应该也是逻辑漏洞

如图所示:

此处输入图片的描述

既然能插入 XML 代码,那我们肯定不能善罢甘休,我们需要更多,于是出现了 XXE

XXE(XML External Entity Injection) 全称为 XML 外部实体注入,从名字就能看出来,这是一个注入漏洞,注入的是什么?XML外部实体。(看到这里肯定有人要说:你这不是在废话),固然,其实我这里废话只是想强调我们的利用点是 外部实体 ,也是提醒读者将注意力集中于外部实体中,而不要被 XML 中其他的一些名字相似的东西扰乱了思维(盯好外部实体就行了),如果能注入 外部实体并且成功解析的话,这就会大大拓宽我们 XML 注入的攻击面(这可能就是为什么单独说 而没有说 XML 注入的原因吧,或许普通的 XML 注入真的太鸡肋了,现实中几乎用不到)

|