冲冲冲

分类 CTF 下的文章

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}

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

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

//部分内容转自https://www.cnblogs.com/pcat/p/5256288.html

因为做CTF时要用到binwalk时每每还得打开虚拟机,于是便想看看是否有Windows环境下的binwalk。搜索后看到一篇相关博客。但可能因为我的知识面不够,没能很好的理解原文作者的完整意思,便自己摸索。写此篇博客给大家参考。

首先现在github上下载binwalk项目https://github.com/ReFirmLabs/binwalk
接着下载后打开cmd,cd进入所下载的文件解压后的路径。输入python setup.py install接着就会开始安装。
然后我们进入py环境测试一下binwalk是否有被安装完成。
输入
>>> import binwalk

如果没有报错即安装成功。
这时已经安装好了,但是我们想要更好的使用binwalk。我们可以将其加入系统变量让其可以在cmd中调用。

以下是转载自pcat的代码和方法:
原文链接:https://www.cnblogs.com/pcat/p/5256288.html

方法一:
创建一个文件夹,在文件夹里新建一个名为binwalk.bat文件。(代码如下)

@echo off
echo * suggest: you'd better to input the parameters enclosed in double quotes.
echo * made by pcat
python "%~dp0\p_binwalk.py" %1 %2 %3 %4 %5 %6 %7 %8 %9

在文件夹里再新建一个p_binwalk.py文件。(代码如下)

# -*- coding:utf-8 -*-
# author: pcat
# http://pcat.cnblogs.com

import sys
import binwalk

if __name__ == "__main__":
    lst=sys.argv
    if len(lst)<2:
        print("No files.")
        exit()
    try:
        if lst[1][0]=='-':
            binwalk.scan(*lst[2:],signature=lst[1])
        elif lst[1][0]!='-':
            binwalk.scan(*lst[1:],signature=True)
    except:
        pass

打开系统设置-环境变量-系统变量的-path-新建,指定刚刚创建的文件夹的路径即可。(该文件夹和变量存在的情况下即可在cmd内使用binwalk)

方法二:
打开系统设置-环境变量-系统变量-新建-变量名为PYTHON_HOME的系统变量。变量值为你python的安装地址,默认为C:\Python27
接着新建一个binwalk.bat 文件。(代码如下)

:: author: pcat@chamd5.org
:: http://pcat.cnblogs.com
@echo off
echo * suggest: you'd better to input the parameters enclosed in double quotes.
echo * made by pcat
echo * ***********************************************************************
if defined python_home (
    python "%python_home%\Scripts\binwalk" %1 %2 %3 %4 %5 %6 %7 %8 %9
)else (
    echo "you need to set PYTHON_HOME"
)

打开系统设置-环境变量-系统变量的-path-新建,指定该文件夹即可。(该文件夹和变量存在的情况下即可在cmd内使用binwalk)

1.BurpSuite的默认代理地址为127.0.0.1:8080
无标题.png

修改浏览器的代理例如chrome在高级设置中修改代理添加局域网设置即可。
2.chrome推荐使用Proxy SwitchyOmega插件
无标题.png
新建情景模式CTF
无标题.png

T1. 权限(20分)
http://ctf4.shiyanbar.com/web/root/index.php
1.查看源源代码可以看见有个password.txt的提示,进入后发现一堆的密码#¥…%¥#@!!%&¥&%爆破得到Nsf0cuS是密码。在这之前该网页的password maxlength="5",所以先改大。
用正确密码登录后返回值就不是false了而是“这里没有flag哦” (???)。
2.抓包获得一个Cookie“newpage=MjkwYmNhNzBjN2RhZTkzZGI2NjQ0ZmEwMGI5ZDgzYjkucGhw” ,然后发现是base64加密,解码后的到了“290bca70c7dae93db6644fa00b9d83b9.php”
3.进入后抓包进入了留言板界面2018.1.16_1.png
随便留言抓包后可以看到是否登陆“否”,留言内容“233”,用户等级“guest”。2018.1.16_2.png
将是否登录改作1,用户等级改作Administrator、admin发现都没有变化最后尝试了root获得了flag。
PS:后从鸿神那里听到了据说是远神的方法。这题存在源码泄露,http://ctf4.shiyanbar.com/web/root/index.php~ 存在php的备份文件,下载下来可以看到 2018.1.16_3.png
如此一来似乎这才是正解。


T2. IOS(10分)
http://ctf4.shiyanbar.com/web/IOS/index.php
1.打开网页显示 这是一个提示
2.用chrome自带的Network conditions伪造UA,先选定iPhone然后修改为Mozilla/5.0 (iPhone; CPU iPhone OS 99 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B137 Safari/601.1 2018.1.16_4.png
3.抓包即可得到 。2018.1.16_5.png


T3. 照猫画虎(10分)
http://ctf4.shiyanbar.com/web/copy/index.php
2018.1.16_6.png

从题目中我们可以看到第1234567890位访客会是幸运访客。抓包获得Cookie:“Visitor=MjY5OTowNDE1NzQwZWFhNGQ5ZGVjYmM4ZGEwMDFkM2ZkODA1Zg%3D%3D”
按照图示一步步解码再反过来加密“1234567890”产生新的Cookie提交后即可。2018.1.16_7.png


T5. 你最美(10分)
http://ctf4.shiyanbar.com/misc/123/123.exe
Winhex打开exe后发现十六进制码其实是png的base64转换。转换后扫描二维码即可。zzz


T6. shellcode(30分)
http://ctf4.shiyanbar.com/re/shellcode/shellcode.txt

1.\x6a\x0b\x58\x99\x52\x66\x68\x2d\x63\x89\xe7\x68\x2f\x73\x68\x00\x68\x2f\x62\x69\x6e\x89\xe3\x52\xe8\x34\x00\x00\x00\x65\x63\x68\x6f\x20\x5a\x6d\x78\x68\x5a\x33\x74\x54\x53\x45\x56\x73\x62\x47\x4e\x76\x5a\x47\x56\x66\x53\x56\x4e\x66\x63\x32\x39\x66\x51\x32\x39\x76\x62\x48\x30\x4b\x7c\x62\x61\x73\x65\x36\x34\x20\x2d\x64\x00\x57\x53\x89\xe1\xcd\x80

2.以上为ASCII的十六进制转码得到:
ZmxhZ3tTSEVsbGNvZGVfSVNfc29fQ29vbH0K
3.提示为base64解码得到flag