冲冲冲

HXBer 发布的文章

本文参考静静姐姐的文章,写在这用以方便更新博客证书。


下载 certbot

git clone https://github.com/certbot/certbot.git

执行证书申请

cd certbot
./letsencrypt-auto certonly --webroot --webroot-path [Nginx网站的根目录] -d [你要申请证书的域名] -m [你的邮箱]

以我为例:

./letsencrypt-auto certonly --webroot --webroot-path /usr/share/nginx/typecho/build -d white.xmutsec.com -m test@gmail.com

申请成功则会出现

   IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/white.xmutsec.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/white.xmutsec.com/privkey.pem
   Your cert will expire on 2019-05-24. To obtain a new or tweaked
   version of this certificate in the future, simply run
   letsencrypt-auto again. To non-interactively renew *all* of your
   certificates, run "letsencrypt-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

接着重载nginx

service nginx reload

1.unicode
关键字——&#;
选择unicode转ASCII
eg:

Q:ctf{flag}
A:ctf{flag}

2.ROT13加密(凯撒密码变种)
特点:已经带有{}
eg:

Q:zbpgs{Ebg_rapbQr}
A:moctf{Rot_encoDe}

3.当铺密码
关键字——口由中人工大王夫井 分别表示0-8
eg:

Q:由口中 由由夫 由由口 由由口 由中由
A:102 117 110 110 121

4.用字符串密钥解密(文件)
特点:拥有一个密钥key
eg:

Q:Snake http://www.shiyanbar.com/ctf/1851
A: 转换格式为zip后解压出两个分别名为key和cipher的文件。将藏着的base64解码后跟着提示得到了key为“anaconda”。用http://serpent.online-domain-tools.com/ 网站下的在线工具进行解密得到flag。

5.AES加密
特点:@@@/@@@/@@@==
eg:

Q:MOCTF新春欢乐赛MISC-李华的疑惑 U2FsdGVkX18R9EylBVacP/j0XpCISh9nZth6TFwoh5GUv0edeVp3ZV9gXVqd/rlH66OIZgSHn2Mock4hcdqFEg==
A:moctf{D0_You_1ik3_tO_pAinH_wi4h_pi8e1}

6.base64/32/16加密

Q:MZWGCZ33MM4GENJVHBRDSNJUGAYTSOBVGZTDAYRQGIZTINLEMMZTSNJVHBRX2===
A:Base32 flag{c8b558b954019856f0b02345dc39558c}

7.颜表情加密
特点:全是颜表情

6.Ook!密码
特点:都是由Ook组成
eg:

Q:http://ctf.bugku.com/challenges#ok
A:flag{ok-ctf-1234-admin}

8.Brainfuck
特点:由"+","-","[","]","<",">"构成
eg:

Q: http://ctf.bugku.com/challenges#%E8%BF%99%E4%B8%8D%E6%98%AF%E6%91%A9%E6%96%AF%E5%AF%86%E7%A0%81
A: flag{ok-c2tf-3389-admin}

2017年暑假,我就已经开始在了解厦门理工信息安全协会。和群里面和学长们谈笑风生真是有趣。

2017年九月,我正式的加入了厦门理工信息安全协会,从此人生多了分不同。

2017年10月18日,第一次信息安全协会见面会,见到了会长Sheldon。
请输入图片描述

2017年12月29日,我加入了厦门理工信息安全协会的CodeMonster战队

2018年4月28日,我第一次代表学校和战队成员一起来到了杭州,站在了线下比赛的场地上,我第一次获得比赛奖项——个人第十四名(优秀奖)。

比赛场地的战队宣传

“西湖论剑”杯签到处

2018年5月28日,360的小姐姐来我们学校做宣讲会,还进行了闭门会,让我们对安全企业有所了解。
360校园宣讲会

2018年6月8日,我又一次和大家来到了苏州参加全国信息安全大赛。这是我获得过的最好成绩,团队全国三等奖。
全国信息安全大赛(华东南赛区)

2018年6月28日,豆浆油条生日,协会聚餐,卢本伟直播日余老师。

卢本伟直播日余老师

2018年7月8日,我和卢本伟参加了社团换届就职演讲,从Sheldon那里接手了这个社团。

社团换届就职演讲

未完待续。。。

测试环境
UpLoad-labs
安装
在github上下载
https://github.com/c0ny1/upload-labs
将其解压在phpstudy的WWW目录下,并创建一个upload文件夹(否则会一直报错)
1.png

然后这里的shell的内容大都是<?php phpinfo() ?>
因为如果我们能够执行这句话的话说明我们可以执行其他的php木马,而且phpinfo()函数返回PHP的所有信息,包括了PHP的编译选项及扩充配置、PHP版本、服务器信息及环境变量、PHP环境变量、操作系统版本信息、路径及环境变量配置、HTTP标头等信息。

做题

Pass-01

这题在js代码中有文件类型过滤。
我们上传一个shell.jpg,用bp抓包修改这个文件的后缀名为.php即可。

上传shell成功后我们直接访问upload目录下的shell,测试成功。


Pass-02

查看源码会发现判断文件语句:
if (($_FILES['upload_file']['type'] == 'image/jpeg') || ($_FILES['upload_file']['type'] == 'image/png') || ($_FILES['upload_file']['type'] == 'image/gif'))
这里只校验Content-Type

方法一:

上传shell.php,抓包,会发现Content-Type为application/octet-stream(未知文件类型的二进制流)将其就改为imge/jpg,上传成功。

方法二:

上传shell.jpg,抓包,修改后缀名为shell.php,上传成功。

Pass-03

这道题采用了黑名单过滤,但是只过滤的部分后缀名,上传php3或者phtml即可。

Pass-04

这题依旧是黑名单过滤,但是与上一题不同的是它几乎过滤完了。但是依旧有漏网之鱼.htaccess
我们可以先上传一个.htaccess
SetHandler application/x-httpd-php

这样所有文件都会解析为php
接着再上传图片

Pass-05

依旧是黑名单,这题加上了.htaccess的过滤。但是大小写没有过滤。修改后缀为phP即可上传成功。

Pass-06

这题还是黑名单,但是没有对后缀名进行去空处理,可在后缀名中加空绕过过即可上传成功。

Pass-07

还是黑名单,对比前面会发现没有对后缀名进行去”.”处理,利用windows特性,会自动去掉后缀名中最后的”.”,可在后缀名中加”.”进行绕过即可上传成功。

Pass-08

还是黑名单,但是没有对后缀名进行去”::$DATA”处理,利用windows特性,可在后缀名中加” ::$DATA”绕过即可上传成功。

Pass-09

这题算是七八题的综合题,也是利用Windows的特性,会自动去除末尾的点和空格。
当我们抓包修改末尾有一个点时,会被识别删除。
当我们抓包修改末尾有一个空格时,会被识别删除。测试环境

0x00

本人是厦门理工CodeMonster战队的选手White,因为队内缺少pwn手,使得我们在比赛中pwn部分得分一直没有起色,故我决定学习pwn来提升自己与战队。因为在网上没有找到多少系统性的pwn入门,故这篇即是我从零开始的pwn入门记录,也可以供大家参考。本人PWN也是从零入门,当中也许会有错误,还望各位师傅指点。


0x01

http://pwnable.kr/play.php 题目:fd
这是我入门做的第一道题目。让我们来看看这道题。

1.png

既然是从零开始 就要有从零开始的样子

题目中给了一句提示、教程地址、以及一个地址。

ssh fd@pwnable.kr -p2222 (pw:guest)

这是要让我们要用ssh连上如上地址的2222端口,密码为guest。

我个人是用虚拟机上的kali连接

2.png

(PS:输入密码的时候是不会有回显的)

成功连上该服务器,会显示pwnable.kr的图案

我们输入ls (linux下的查看当前位置所有文件的指令,详情参照另一篇文章)来看该目录有何东西

3.png

可以看到有三个文件 一个是fd.c编译后的可执行文件、一个fd的C语言源码,一个是flag

看到flag可能眼睛都亮起来了,然而我们要打开flag会提示"flag" [Permission Denied](权限不足)

所以我们要思考如何获得flag

打开fd.c

vi fd.c

4.png

分析代码

int fd = atoi( argv[1] ) - 0x1234;

fd的值指的是第一个输入的字符串参数转换成整型减去0x1234(16进制)
其中atoi()函数是将字符串转换成整型的函数。

strcmp
C/C++函数,比较两个字符串
设这两个字符串为str1,str2,
若str1==str2,则返回零;
若str1<str2,则返回负数;
若str1>str2,则返回正数。

所以在此就是需要构造buf="LETMEWIN"

继续往下看fd的值在read中被调用

查阅read()的相关资料

From Wikipedia

The read system call interface is standardized by the POSIX specification.
Data from a file is read bycalling the read function:

ssize_t read(int fd, void *buf, size_t count);

即读取的系统调用接口由POSIX规范标准化。通过调用read函数来读取文件中的数据

然后我们想到题目给的提示——“Mommy! what is a file descriptor in Linux?”

查阅Linux file descriptor
//From Wikipedia
5.png

所以就要使用read()进行输入流——即要使fd=0

所以要使fd = atoi( argv[1] ) - 0x1234=0;

故输入的参数要等与0x1234 即十进制的4660

我们带参数运行fd(如图)在输入LETMEWIN即可获得flag
6.png

0x00

本人是厦门理工CodeMonster战队的选手White,因为队内缺少pwn手,使得我们在比赛中pwn部分得分一直没有起色,故我决定学习pwn来提升自己与战队。因为在网上没有找到多少系统性的pwn入门,故这篇即是我从零开始的pwn入门记录,也可以供大家参考。本人PWN也是从零入门,当中也许会有错误,还望各位师傅指点。


0x01 什么是PWN?

Wikipedia:

在骇客行话里,尤其在另外一种电脑技术方面,包括电脑(服务器或个人电脑)、网站、闸道装置、或是应用程序,"pwn"在这一方面的意思是攻破("to compromise",危及、损害)或是控制("to control")。在这一方面的意义上,它与骇客入侵与破解是相同意思的。例如某一个外部团体已经取得未经公家许可的系统管理员控制权限,并利用这个权限骇入并入侵("owned" 或是"pwned")这个系统。

Pwn 题目主要考察二进制漏洞的发掘和利用,需要对计算机操作系统底层有一定的了解。在CTF比赛中,PWN题目主要出现在 Linux 平台上。题目一般会提供一个地址,这个地址的端口上挂着你需要解决的题目。有时候出题者会提供题目源码,有时不会提供。需要解题者想办法通过逻辑或者漏洞来解决问题。

0x02环境和工具的准备

# Linux系统

# python环境 https://www.python.org/downloads/

# netcat安装 https://eternallybored.org/misc/netcat

# 将netcat的路径添加到系统变量中让我们可以使用cmd来打开nc

系统设置-环境变量-系统变量(path)-新建-选择netcat的路径

# pwntools安装 https://docs.pwntools.com/en/stable/install.html

pip install pwntools

安装好后测试一下是否成功

form pwn import  *

# IDA Pro(F5大法好)

未完待续。。。

MISC:PICTURE
解题思路:附件下载下来为一张png图片。一顿操作之后用binwalk跑了一下发现藏有数据
QQ截图20180429174442.png
binwalk -e 分离出来是两个文件。打开其中一个可以看到一串经过base64加密过后的字符
串。用base64脚本跑出来的文件经WinHex打开后可以发现存在ZIP关键字——PK。搜索504B0506找到文件尾,将其分离提取出来,并将头部的4B和50的位置对调得到一个带密码且非伪加密的ZIP文件。
3.png
继续观察解码出来的内容,我们不难观察到里面的几个关键信息:

python2.7
File" " line 1

。该特征体现这是一个python程序的报错内容。但是并不完整。而这里面已经有password的提示。搜索完整的报错内容应该为:ZeroDivisionError: integer division or modulo by zero。尝试密码成功,得到一个文件。
5.png
最后Uudecode后即可获得flag

MISC:寻找入侵者
题目描述:“黑客使用无线钓鱼攻击一个SSID为“CyberPeace”的热点,但是我们的蜜罐系统捕获了他的数据包,并且已经得知他的握手包密码就是他的网卡地址。可是根据我们最新获得的情况,他又发送重连请求的Malformat Frame试图崩溃我们的无线路由器。 请从attack包中找到密码,并解开他的数据包,找到那条畸形数据。”

解题思路:从题目描述中能得知,握手包的密码即为黑客网卡地址,同时这还是该Wi-Fi的密码。所以我们先在攻击包中用Wireshark将所有的设备的MAC地址提取出来,然后用aircrack-ng对握手包来进行字典爆破。
1.png
先用aircrack-ng分析握手包得到握手包的各种数据。
接着用字典爆破爆破可以得到结果——黑客网卡MAC: 88:25:93:c1:c8:eb
7.png
通过MAC地址确定攻击机为Tp-LinkT_c1:c8:eb
接着使用刚刚爆破出来的密码用airdecap-ng来读握手包得到一个新的cap文件
QQ截图20180429192315.png
Wireshark打开分析HTTP流,最后一行有一个key.rar吸引了我。
10.png
查看详细有一个链接,下载key.rar打开后依旧是一个pcap回到题目,黑客为了使路由器崩溃而发了畸形数据,所以可以分析得出,该数据包依旧由原网卡发出,且改畸形数据包按照时间顺序排列应该在较为后方的位置。
wlan.sa == 88:25:93:c1:c8:eb 过滤Tp-LinkT_c1:c8:eb
11.png
可以看到除了最后一条以外,上面的数据包都是Malformed Packet。然而点开都没有什么异常字符串。后点开最后一个数据包发现了一条字符串即为flag
12.png