吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8850|回复: 5
收起左侧

[会员申请] 申请会员ID:windcarp【申请通过】

  [复制链接]
吾爱游客  发表于 2015-2-20 13:53
1、申 请 I D:windcarp
2、个人邮箱:1367118196@qq.com
3、原创技术文章:
本人学生党一枚,业余爱好信息安全,希望加入论坛~~求各位大大们轻拍,对学生要求不要太高~~贴出写的一个内部赛writeup,新人可以看过来学习思路,求指教~

Misc 100 诱人的图片

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

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


Misc 200诱人的wifi

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

    方法一:EWSA

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

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

    题目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变异密码功能很强大,但是也占用了太多的破解时间……

    题目flag:11223344


Misc 300女神的秘密

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

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

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

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

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

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

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

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

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

    3412021998****1120

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

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

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

题目flag:TSCTF{5oci4l_3ngin33ring_is_5ooooo_int3r3sting!}


Misc 400倒数第二名

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

对应的提取代码:

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

运行结果:

题目flag:TSCTF{OOOOOOh!Y000u_found_m3!}


Reverse 100给你自信

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

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

题目flag:TSCTF{L3t_u5_l34rn_r3v3rs3_fr0m_n3m0}


Reverse 200 不速之客

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

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

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

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

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

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

题目flag:TSCTF{W3lc0m3_t0_Dubh3_G33k_Club}


Reverse 300 灰色忧伤

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

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

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

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

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

题目flag:TSCTF{Dis4bl3d_butt0n_i5_b0res0m3!}

2、手工修改函数跳转

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

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

得到 0x00401460:03ec:退出;

0x00401470:03ea:解密1;

0x004015D0:03eb:解密2;

0x00401710:03e9:加密。

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

    先改一个点一下试试:

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

    然后查看flag.txt:

题目flag:TSCTF{Dis4bl3d_butt0n_i5_b0res0m3!}

3、逆向加密算法

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

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

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

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

然后继续向下单步走:

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

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

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

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

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

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

4、建立字典文件

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


Reverse 400 天枢凭证

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

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

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

    然后就可以逆算法了……其实是判断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{}),可以发现使用了凯撒密码加密,解密可以得到明文:

题目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文件头:

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

题目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 攻击模式 哈希文件 字典文件】

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

题目flag:TSCTF{Do_y0u_lik3_h4shc4t?}


Crypto & PWN 400 printf


WebB 100 XSS1

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

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

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

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

提交后查看源码:

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


WebB 200 窃听风云

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

题目flag:TSCTF{Why_w3_u5e_pl4int3xt_tr4n5m1t_m0de?}


WebB 300 XSS2

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

如上图,此题把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)

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

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

题目flag:TSCTF{1_n33d_le@rn_m0r3_4b0ut_u5ing_wir3sh4rk}


WebA 100 美味的饼干

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

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

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

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

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

WebA 300 蛋疼的PHP

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

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

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

WebA 400 诱人的webshell

首先访问题目

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

访问之

这个地方存在SQL注入漏洞

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

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

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

即可绕过登陆成功

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

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


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2015-2-21 14:05
ID:windcarp
邮箱:1367118196@qq.com

申请通过,欢迎光临吾爱破解论坛,期待吾爱破解有你更加精彩,ID和密码自己通过邮件密码找回功能修改,请即时登陆并修改密码!
登陆后请在一周内在此帖报道,否则将删除ID信息。
A-_虚伪_! 发表于 2015-2-21 14:25
windcarp 发表于 2015-3-4 15:42
windcarp 发表于 2015-3-4 15:43
Hmily 发表于 2015-2-21 14:05
ID:windcarp
邮箱:

来报到啦~~~~~~~~~~初来乍到求大牛带~~~
头像被屏蔽
Danna 发表于 2015-3-5 09:11 来自手机
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 18:02

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表