python-rsa签名伪造漏洞(CVE-2016-1494)

作者: 分类: CTF,Python,Security 时间: 2017-05-22 评论: 1条评论

此次也是因为在RCTF里遇到了两道RSA的题目,才因此去研究python-rsa签名伪造漏洞这东西,过程曲折,但是也挺有趣,记录下来和大伙儿分享一下。

此次成果也是站在前人的肩膀上去研究的,参考文章的链接在底下都有,大家可移步过去看看(对于原理的剖析,那几篇文章讲的很好)。

0x00 Python-RSA签名伪造漏洞原理

首先,RSA是非对称加密算法,也就是说RSA存在公私钥,RSA可用于数据加密传输(传输对称加密的密钥),也可以进行数字签名,两者区别在于:

RSA用于加密时:
    公钥加密,私钥解密
RSA用于数字签名时:
    私钥加密,公钥解密

如果还不理解可以花三分钟看这里《数字签名是什么?》

RSA

阅读全文»

fbctf平台搭建指南

作者: 分类: CTF 时间: 2016-10-27 评论: 暂无评论

看这篇文章之前请确认服务器有超过1G的内存,不然可以不用看了

我在阿里云ECS上面搭建的:

# uname -a
Linux fbctf 3.13.0-86-generic #130-Ubuntu SMP Mon Apr 18 18:27:15 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/issue
Ubuntu 14.04.5 LTS

首先在/etc/apt/sources.list加上以下源(或者直接替换)

阅读全文»

SAE作CTF平台

作者: 分类: CTF 时间: 2016-09-22 评论: 暂无评论

0x00 前言

前天搭了一个CTF练习平台,准备对校内的朋友开放,可能后面还会用于举办校内赛之类的,平台搭建可以看CTFd搭建CTF平台

平台搭建好了之后就需要上传一些题目了,就想起先用Sina的SAE来弄一些web题,因为在自己服务器上弄难免会存在一些安全问题,且SAE有定量免费速度还快,安全问题更无需担心,部署也方便,对于小型CTF练习平台来说,完全足够了。

0x01 注册&生成应用

首先访问SAE:http://sae.sina.com.cn/,注册登录后,创建应用:

Create_App.png

根据自己的要求选择,云空间另外收费,标准环境可以有五个实例。这里我选择PHP标准环境:

info.png

之后进入应用,这里会有两个选择,Git或者SVN,因为我平常都是用Git,所以这里我选择了Git(注意选择后无法更改):

git.png

0x02 配置&上传文件

进入代码管理,可以看到相应的配置信息和命令,里面也有相关的Git和官方文档帮助,不懂的可以去看看。首先先新建文件夹或者直接clone一个下来,这边我用了git clone -o sae这个命令,这其实是两条命令合起来的(clone后新建一个叫sae的远程仓库):

git clone -o sae https://git.sinacloud.com/jmuctf
#等价于
git clone https://git.sinacloud.com/jmuctf
git remote add sae https://git.sinacloud.com/jmuctf

然后新建文件,addcommitpush后搞定,这边master:1master分支版本1,这个具体的自行查看官方文档或者相应的git文档,这里基本不需要用到。

init_upfile.png

最后访问下应用,可以看到我们刚刚上传的index.php的内容

index.png

这里可以看到对于未实名认证的会强行在推送到客户端的时候加上一段令人讨厌的JS代码。去认证下分分钟解决。

saeNags.png

但我就是不愿去实名,于是我丢了一个注释给它。

comment.png

clear.png

到此差不多了,之后只需要写好题丢到平台上就可以了,可以一起来玩玩,也可以甩几个题过来让新伙伴们玩一玩。

暂时还没有正式推行,平台就挂载我的子域名下,等后面看看怎么个打算。

CTFd搭建CTF平台

作者: 分类: CTF,*nix,Python 时间: 2016-09-20 评论: 暂无评论

CTFd搭建CTF平台

0x00 前言

搭个CTF平台,看能不能带动一下学校的CTF参与度。

一个下午都在搭这个平台:O 抓瞎摸索,最后成功用Apache+mod_wsgi也算是功德圆满了。

进入正题:

  • 系统: CentOS release 6.8 (Final)
  • Apache: Apache/2.2.15 (Unix)
  • Mysql: Ver 14.14 Distrib 5.1.73
  • Python: 2.7.10

0x01 下载项目&环境配置

git clone https://github.com/isislab/CTFd.git

根据文档4个大步骤:

Install:

  1. ./prepare.sh to install dependencies using apt.
  2. Modify CTFd/config.py to your liking.
  3. Use python serve.py in a terminal to drop into debug mode.
  4. Here are some deployment options

apache和mysql的搭建我不再赘述,python系统自带是2.6,我升到2.7,可参见这里,记得还要装下PyMySQL

阅读全文»

2016西安“华山杯”部分Writeup

作者: 分类: CTF 时间: 2016-09-11 评论: 暂无评论

2016西安“华山杯”部分Writeup

Web


打不过~

删掉disabled="true",加上type="submit",随便提交一个,抓包,发现返回的header头里有

Str: OGM0MzU1NTc3MTdhMTQ4NTc4ZmQ4MjJhYWVmOTYwNzk=

base64解一下再解个md5就拿下了。

系统管理

发现有提示:

<!-- $test=$_POST['username']; $test=md5($test); if($test=='0') -->

乌云有篇文章谈php弱类型的有说到,0e12353...这样的字符串等于,也就是说,我们要找到一个字串的md5是这样的形式,主义0e后面要全是数字才可以。写个脚本爆破一下子就拿到了:

md5.png

脚本代码在这里,5层循环简单粗暴

提交byGcY,提示user.php,访问得到新提示

$unserialize_str = $_POST['password']; $data_unserialize = unserialize($unserialize_str); if($data_unserialize['user'] == '???' && $data_unserialize['pass']=='???') { print_r($flag); }

是一个序列、反序列的问题,自己本地构造一下:

$t=array(
    'pass'=>'???',
    'user'=>'???'
);
$x=serialize($t);
print $x;
print gettype($x);

最后得到所要的a:2:{s:4:"pass";s:3:"???";s:4:"user";s:3:"???";}

最后到首页去连带之前的byGcY用户名一起提交,就拿下了。

序列和反序列下面还有一题,等下提供一些资料。

阅读全文»