码迷,mamicode.com
首页 > 其他好文 > 详细

TSCTF writeup

时间:2014-11-29 00:09:59      阅读:2316      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

俱乐部搞了一个小小的CTF来给我们这些小虾米玩,结果除了一个水的不能再水的第二别的太让学长们失望了有木有%>_<%,其实后来看看除了很少的一些以前没接触过的,都是很基础的题目,所以以后还是要多多练习,多看书多做实验。嗯。北邮天枢加油!

?

?

Misc 100 诱人的图片

????这题是简单的图片信息隐藏题目,直接将题目flag填充到了图片文件尾部。解决方法可以使用stegsolve的FileFormat分析模块(文件格式分析,可以分析出图片异常数据块)或者直接扔到UE里面去看文件尾,都可以得到flag:

bubuko.com,布布扣

bubuko.com,布布扣

????题目flag:TSCTF{S33ing _i5_b3li3ving...}

?

Misc 200诱人的wifi

????这道题目考核的是WPA2握手包破解,可以使用EWSA、hashcat或者其他握手包破解工具破解wifi密码。

????方法一:EWSA

????将握手包导入EWSA,然后设置字典,并且为了加快速度,可以取消密码变异选项:

bubuko.com,布布扣

????然后就是字典选择和时间问题了,考虑到本题密码是很弱的弱密钥,基本上字典都可以跑的出来,而且会比较靠前("最后密码"由于一秒上千个,并不是跑出来的wifi密码):

bubuko.com,布布扣

????题目flag:11223344

方法二:hashcat

????由于hashcat不支持直接处理.cap或者.pcap包,所以需要先转化成.hccap格式,附上官方转换URL:https://hashcat.net/cap2hccap/

????转换完成之后,可以通过字典文件来破解握手包密码,可以通过"—help"来查看攻击模式和命令(P.S.不同版本的hashcat命令行可能会稍有不同),我这里使用的命令是:

hashcat-cli64 -m 2500 1.hccap all_psw_dir_160k.txt

【hashcat应用程序 –m 破解模式 待破解握手包路径 字典路径】

????然后秒出了结果……明明显示的速度差不多的啊喂……好吧,只能说EWSA变异密码功能很强大,但是也占用了太多的破解时间……

bubuko.com,布布扣

????题目flag:11223344

?

Misc 300女神的秘密

????这题是考察收集、筛选信息的能力,以及对基本社工知识的掌握。首先我们拿到的是女神的简历,里面有两个比较关键的信息:

????1、QQ邮箱:@qq.com(可以获取QQ号,往往QQ号对于收集社工对象信息最为关键。)

????2、Gmail邮箱:angelynnkoh@gmail.com(考虑到之前部分Gmail邮箱帐号密码泄露,可以作为社工对象常用密码或者曾用密码的入口点。)

????首先通过QQ的搜索功能,搜索社工对象:

bubuko.com,布布扣

????这里可能得到了一些关键的信息,出生地(身份证前六位)、生日(7-14位)、常用邮箱、QQ注册时间、常用QQ登录地点等。

????然后我们访问她的QQ空间,通过说说、朋友留言、日志、相册等,进一步收集信息。在访问相册时,看到有个加密相册,需要输入社工对象的身份证号,所以明确目标为——收集身份证号。

????此时,关注空间里面的另外一条说说:

bubuko.com,布布扣

????这里泄漏了身份证中,最不容易得到的后四位1120,同时泄漏了首位为3,出生年份为1998。通过查询出生地,可以得到身份证前6位为:341202。

????所以此时得到的身份证是:

????3412021998****1120

????再通过好友留言得到生日为11月11日:

bubuko.com,布布扣

????这样就得到了完整的身份证号:341202199811111120。通过输入正确的身份证号,查看加密相册,可以得到下一条提示:

bubuko.com,布布扣

????然后去服务器下载rar文件,输入Gmail密码200780(查不到的话可以爆破rar密码 = =),可以解压得到secret.jpg和flag.txt,查看flag.txt结尾可以得到flag:

bubuko.com,布布扣

题目flag:TSCTF{5oci4l_3ngin33ring_is_5ooooo_int3r3sting!}

?

Misc 400倒数第二名

这题是将flag信息隐藏在第二幅图片中,与第一张图片不相同的像素点G值部分的倒数第二比特,嵌入算法可以通过code.bmp(在网站本题目录下)的matlab代码得到:

bubuko.com,布布扣

对应的提取代码:

import Image

import random

?

img1 = Image.open("first.bmp")

im1 = img1.load()

?

img2 = Image.open("second.bmp")

im2 = img2.load()

?

a=0

i=0

s=‘‘

?

for x in range(img1.size[0]):

for y in range(img1.size[1]):

if(im1[x,y]!=im2[x,y]):

print im1[x,y],im2[x,y]

#print im2[x,y][0]

?

if i==8:

s=s+chr(a)

a=0

i=0

if (im1[x,y][1] > im2[x,y][1]):

a=0+a*2

else:

a=1+a*2

i=i+1

?

if i==8:

s=s+chr(a)

?

print s

运行结果:

bubuko.com,布布扣

题目flag:TSCTF{OOOOOOh!Y000u_found_m3!}

?

Reverse 100给你自信

这个题目是一个cmd的程序,通过输入与flag进行字符串比对,来判断输入是否正确。直接扔到IDA里面,可以看到flag的明文。由于是控制台程序,直接找到main函数入口处(使用TextView拖到最上面):

bubuko.com,布布扣

再向下找一找,就可以看到flag明文写死在程序里面:

bubuko.com,布布扣

题目flag:TSCTF{L3t_u5_l34rn_r3v3rs3_fr0m_n3m0}

?

Reverse 200 不速之客

这题是一个MFC的程序,关键在于定位按钮响应函数和在OD中寻找比较字符串的部分,可以在内存中找到flag。

可以使用XSPY定位,找到三个按钮的响应函数,在入口处下断点,可以得到"让我进去!"按钮的响应函数地址为0x00401500。

bubuko.com,布布扣

另一种方法利用OllyIce的字符串查找功能:

bubuko.com,布布扣

bubuko.com,布布扣

可以看到一大堆和判断输入是否正确相关的关键字符串,选择一个双击,也可以进入按钮响应函数:

bubuko.com,布布扣

随便找到一个地方下断点,或者找到函数入口处下断点,F9运行,停在断点处后,单步向下跟进。接下来的关键是,找到自己的输入存在哪个寄存器里面,以及会和哪个字符串比较判断(或者从比较的关键跳转处向上找也可以):

bubuko.com,布布扣

无论在那个位置下断点,只要在生成flag完成后,都可以在ESI中看到指向的flag。将这个flag输入登录框,可以验证通过。

题目flag:TSCTF{W3lc0m3_t0_Dubh3_G33k_Club}

?

Reverse 300 灰色忧伤

这题依旧是一个MFC的程序,其中有两个按钮被禁用(分别使用属性和按钮函数禁用)了,对应解密步骤一和解密步骤二。这个题目依旧可以有多种解题方法:

1、使用灰色按钮修复工具

可以去看雪下载,或者百度,任意一款都可以使得按钮有效。

【Window 按钮突破专家:http://tools.pediy.com/other.htm

bubuko.com,布布扣

比如使用看雪上下载的EnableWindow,可以直接修复灰色按钮,依次点击可以得到解密后的flag.txt。

题目flag:TSCTF{Dis4bl3d_butt0n_i5_b0res0m3!}

2、手工修改函数跳转

bubuko.com,布布扣

使用xspy侦测到四个按钮的响应函数入口点的地址分别为:0x00401460、0x00401470、0x004015D0、0x00401710。接下来就是确定每个函数对应哪个按钮,可以在OD中下断点、IDA中查看或者查看按钮ID,都可以……

这里使用一种方便的方法,将程序扔到OllyIce里面,然后按F9运行,等到窗口弹出来之后,点击W窗口,可以看到按钮控件的ID。

bubuko.com,布布扣

得到 0x00401460:03ec:退出;

0x00401470:03ea:解密1;

0x004015D0:03eb:解密2;

0x00401710:03e9:加密。

????所以这里修改按钮跳转,让点击加密跳转到(解密1),让点击退出跳转到0x004015D0(解密2),在OD里面进行修改。

bubuko.com,布布扣

????先改一个点一下试试:

bubuko.com,布布扣

????好了,点加密就直接变成解密1了,我们如法炮制,在修改加密到解密2。

bubuko.com,布布扣

????然后查看flag.txt:

bubuko.com,布布扣

题目flag:TSCTF{Dis4bl3d_butt0n_i5_b0res0m3!}

3、逆向加密算法

既然给出了加密算法,于是我们也可以试着看看如何逆向加密算法(可以直接逆加密函数,或者是逆两个解密函数,是不是听起来有点不大靠谱……)。

一般思路是,还是要通过字符串查找或者xspy定位到关键的按钮响应函数的位置,然后先尝试用IDA F5看IDA分析生成的C代码与OD动态运行结果一起分析加密解密过程。这里可能会比较麻烦,这里试试随便给出一个flag.txt,然后单步跟踪加密算法。

首先我们在加密函数入口处下断点:

bubuko.com,布布扣

通过明显的fopen函数的参数,可以猜测到入口处调用了两次fopen,分别打开flag.txt和打开用于2进制写入的文件flag.crypt,并且判断了flag.txt是否存在。所以我们新建一个flag.txt,在里面随便写点,我这里写的是"1234567890abcdef"。

然后继续向下单步走:

bubuko.com,布布扣

走过文件指针初始化模块后,下面我们需要关心的就是明文数据读到哪里了以及是如何处理的,所以我们眼睛盯着寄存器和堆栈,看看1234567890abcdef什么时候被读进来并处理。

继续单步,可以看到fscanf以及读入的文件数据:

bubuko.com,布布扣

接下来就是盯紧这块堆栈,看看什么时候取我们的明文并且处理,继续单步:

bubuko.com,布布扣

这里可以看到一个关键循环,每次分别取一个输入的字符到cl中,再取一个"1112"的字符到dl中,两者异或,再将结果写到存我们输入的内存中。

bubuko.com,布布扣

接下来碰到一个奇怪的循环,会读我们存处理后的明文,但是并不写入,用F4跳过这个循环,可以看到会把一个奇怪的字符串放到esi里面。如果仔细观察了处理之前的数据,可以发现这些是循环前的数据的ASCII码,第二位和第一位颠倒了之后的结果。

然后再接着向下单步,可以看到这些东西被%c写到flag.crypt里面。所以整个加密算法就是,字符串和"1112"循环异或,异或结果的16进制ASCII码两位颠倒后,再转成字符写到文件里面,所以编程逆向算法即可。

4、建立字典文件

考虑到明文都是可见字符,可以尝试使用明文加密建立字典,反查明文,可以作为一种逆flag的思路。但是这题因为加密分组是4,又限制了长度,所以需要分段生成字典,然后再进行反查。

?

Reverse 400 天枢凭证

????这题加了花指令(可以参看源码),所以没办法直接用IDA去分析,先尝试去掉这些花指令。由于是控制台程序,首先要找到关键函数位置,这里借助IDA。使用TextView可以在IDA最上面看到一些敏感信息和IDA没有正确识别的代码:

bubuko.com,布布扣

????在OllyIce里面寻找对应位置,即0x004011bc。

bubuko.com,布布扣

????可以看到加了花指令,手动去除函数中的所有花指令,再丢到IDA里面F5,可以看到关键函数分析的C语言指令:

bubuko.com,布布扣

bubuko.com,布布扣

????然后就可以逆算法了……其实是判断home.txt中读出来的数据,经过循环减数字1、1、1、2后是否和字符串SRBREzCsag2]F22i^B0sa^%]Sgtlj^B.c2|相等。最后得到结果为:

????TSCTF{Dubh3_G33k_C1ub_&_Thunk_C0d3}

题目flag:TSCTF{Dubh3_G33k_C1ub_&_Thunk_C0d3}

?

Crypto & PWN 100 古典的密码

????题目中给出的密文:V1ZGV0l7VmRiX2tob29yX3dyX0ZkaHZkdV9mbHNraHUhfQ==。通过两个等号,可以判断出使用了base64编码,直接进行解码得到:

WVFWI{Vdb_khoor_wr_Fdhvdu_flskhu!}

通过题目提示和标准flag(TSCTF{}),可以发现使用了凯撒密码加密,解密可以得到明文:

bubuko.com,布布扣

题目flag:TSCTF{Say_hello_to_Caesar_cipher!}

?

?

Crypto & PWN 200 "XSS"和"XML"

这道题目给出了一大堆的0和1比特串,需要编程实现将0和1比特串转换成字符,输出到文件中,这里给出C++参考代码(使用了bitset类用于方便转换):

#include <iostream>

#include <string>

#include <bitset>

?

using namespace std;

?

int main()

{

????FILE *file = fopen("2.txt", "r");

????FILE *out = fopen("16.txt", "wb+");//注意这里要二进制写入,不然会bug

?

????if (file==NULL || out==NULL)

????{

????????cout << "error" << endl;

????????return -1;

????}

?

????char buf[9] = "";

?

????int i = 0;

????buf[i++] = fgetc(file);

????while (!feof(file))

????{

????????if (i==8)

????????{

????????????bitset<8> b(buf);

?

????????????fprintf(out, "%c", b.to_ulong());

????????????

????????????i=0;

????????}

????????buf[i++] = fgetc(file);

????}

?

????fclose(file);

????fclose(out);

?

????return 0;

}

运行程序可以得到转换完成后的文件16.txt,打开发现依旧是乱码,于是扔到UE里面可以看到文件有jpg文件头:

bubuko.com,布布扣

所以果断重命名为.jpg,打开就可以看到flag:

bubuko.com,布布扣

题目flag:TSCTF{x55_4nd_xm1_ar3_a5_funny_a5_coding!}

?

Crypto & PWN 300 暴力男

这题是需要从100W条记录的字典中,找到3次md5之后,值和题目中给出的md5值相同的那个。使用hashcat工具可以很快解决这个题目,对应的命令行如下:

hashcat-cli64 -m 3500 hash.txt dir.txt

【对应hashcat的可执行程序的名字 –m 攻击模式 哈希文件 字典文件】

然后可以在一秒钟得到答案:

bubuko.com,布布扣

题目flag:TSCTF{Do_y0u_lik3_h4shc4t?}

?

Crypto & PWN 400 printf

?

WebB 100 XSS1

????考察基本的跨站方法,即想办法闭合标签、单引号、双引号等。

看网页源码可知,后台是将提交内容放入text框的value属性。

bubuko.com,布布扣

用单引号闭合value的属性值,用">"闭合input标签,然后插入自己的标签和xss代码,payload如下:

a‘><imgsrc=x onerror=alert(1)>

提交后查看源码:

bubuko.com,布布扣

可以看出原来的input标签已经被闭合,并添加了我们的img标签。

?

WebB 200 窃听风云

根据题目提示,需要寻找登录网站后台的密码。由于登录网站发送的是HTTP包,所以在wireshark里面进行过滤,然后寻找和后台相关的数据包,就可以看到flag:

bubuko.com,布布扣

题目flag:TSCTF{Why_w3_u5e_pl4int3xt_tr4n5m1t_m0de?}

?

WebB 300 XSS2

查看页面源码可知过滤了左右尖括号和alert字符串,导致我们不能像xss1一样闭合input标签后插入其它标签,所以可以考虑不闭合input标签,而是插入并覆盖input标签的属性。

bubuko.com,布布扣

如上图,此题把type="text"放在value属性后面,这样可以用双引号闭合value属性的值,然后添加input标签的属性type=image,虽然这时和后面的type="text"冲突,但浏览器会以前面的type=image为依据进行解析。payload如下:

a" type=image onerror=eval(atob(‘YWxlcnQoMSk=‘)) src="x

由于后台将alert字符串过滤了,所以payload不能含有alert,用base64编码绕过即可。atob函数是将base64编码解码为字符串。

?

WebB 400 窃听风云2

根据题目提示,需要寻找从某edu站点下载下来的两个文件,首先使用http过滤,然后分析出目标网站的ip,再次进行过滤,最终过滤条件设置为:

http && (ip.src==222.26.161.66 || ip.dst==222.26.161.66)

bubuko.com,布布扣

????然后可以发现请求下载了flag.rar和password.docx,并且通过http协议进行了返回,所以在返回包中,导出这两个文件的内容:

bubuko.com,布布扣

????Word文件如法炮制,然后用docx中的密码,解压flag.rar,可以得到flag.jpg这张图片。而最终的flag隐藏在图片的EXIF位置处(可以使用stegsolve、UE或者EXIF查看工具看到):

bubuko.com,布布扣

题目flag:TSCTF{1_n33d_le@rn_m0r3_4b0ut_u5ing_wir3sh4rk}

?

WebA 100 美味的饼干

通过浏览器访问该页面后,再次访问该页面并截取数据包或其他方式查看本地cookie

bubuko.com,布布扣

Flag属性后面值有"=="很明显是base64编码解码后得到flag:

TSCTF{Teacher_Gong_is_Behind_You!}

?

????

WebA 200 神奇的sqlmap

本题主要是考察sqlmap注入工具的基本使用。

访问页面从参数id的变化可以判断出存在SQL盲注

使用sqlmap指定参数跑库跑表

sqlmap.py -u "http://localhost/tsctf/game/webA/2/index.php?id=1" –dbs

bubuko.com,布布扣

sqlmap.py -u "http://localhost/tsctf/game/webA/2/index.php?id=1" –tables -D sql_tianshu

bubuko.com,布布扣

sqlmap.py -u "http://localhost/tsctf/game/webA/2/index.php?id=1" --dump -T secret_isflag -D sql_tianshu

bubuko.com,布布扣

注:这是测试环境上的flag.

WebA 300 蛋疼的PHP

本题主要是考察php://input的用法。

从页面源代码可知,后台程序用$_GET方法获取参数a,随即传给函数file_get_ontents(),

bubuko.com,布布扣

在firefox下利用hackbar工具访问web300.php,并传递参数a,值为php://input,然后在post框填上tianshu,提交后即可得到flag。

WebA 400 诱人的webshell

首先访问题目

bubuko.com,布布扣

下划线为提示robots.txt访问发现"后台"

bubuko.com,布布扣

访问之

bubuko.com,布布扣

这个地方存在SQL注入漏洞

登陆框处的注入多为万能密码之类

尝试中,网页提示"你懂不懂高级一点的注入"并放出tips和阿里ctf相关,因此可以查到是一种变形的万能密码利用mysql "or"和"||"尝试绕过

在用户名处输入a‘ || 1=1#

即可绕过登陆成功

bubuko.com,布布扣

然后点击链接,进入上传页面

bubuko.com,布布扣

这里提示需要上传可执行脚本文件,之前可以通过抓包分析服务器是apache 脚本支持php,所以上传可执行脚本文件主要是利用apache的解析漏洞,只要本地命名一个文件1.Php.x就能上传成功获得最后的flag

TSCTF writeup

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/windcarp/p/4129554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!