CTF web题型总结 第七课 CTF WEB实战练习(三)

2020-11-18 9,372


image.png

继上一篇总结:

CTF web题型总结-第五课 CTF WEB实战练习()

以下也是我在bugku练习的解题过程

以下内容大多是我在Bugku自己操作练习有部分来源于网络,我只是在前人的基础上,对CET WEB进行一个总结;

-----------------------------------------------------------------------

-----------------------------------------------------------------------

入门第一部分 

bugku-ctf 第一题:特殊的后门 

image.png 

下载压缩包,解压打开

wireshark流量包分析)

我们根据题目提示可以看到提示我们flag可能在这几个协议中我们打开wireshark分析下。

image.png 

虽然我是直接一开始就搜的icmp....

我们在往下看,

image.png 

image.png 

image.png 

image.png 

image.png 

image.png 

是不是看的有点眼熟接下来我们顺着一个一个看,便可以得到

flag{Icmp_backdoor_can_transfer-some_infomation}

 

bugku-ctf 第二题:phpcmsV9

image.png 

http://123.206.87.240:8001/

根据提示先想到了robots.txt

访问得到flag

image.png 

 

bugku-ctf 第三题: bugku导航

image.png 

image.png 

第一步,我们先用扫描器扫描该网站有没有什么敏感文件或资源

image.png 

我们发现扫出了1admin1.ziprobots.txt等等敏感文件目录

然后我们访问1.zip把该文件下载过来,然后下载解压后发现这个是该网站的源代码

这个时候,我们在看一下上面的题目提示,flag在根目录,是的,我们发现了这个东西

image.png 

在本地打开该文件是没有任何东西的,但是我们在浏览器上访问该文件,就显示出flag

image.png 

flag{NusWJjjsw90-SDADSADAA}

 

 

 

入门第二部分-社工篇

bugku-ctf 社工篇: 密码

image.png 

分析:这个是典型的弱口令,猜了一下,KEY是姓名+生日, KEY{zs19970315}

 

bugku-ctf社工篇: 信息查找

image.png 

分析:直接百度bugku群号码,

image.png 

得出 KEY{462713425}

 

bugku-ctf社工篇:简单个人信息收集

image.png 

下载压缩包

打开发现压缩包加密了

卡了很久,上网搜索才发现有可能存在伪加密

winhex打开,然后修改0900

image.png 

是个伪加密压缩包

将最后的09改为00(奇数表示加密,偶数表示未加密)

 

这里扩充一下压缩包伪加密的知识

压缩源文件数据区:

50 4B 03 04:这是头文件标记(0x04034***

14 00:解压文件所需 pkware版本

00 00:全局方式位标记(有无加密)

08 00:压缩方式

5A 7E:最后修改文件时间

F7 46:最后修改文件日期

16 B5 80 14CRC-32校验(1480B516

19 00 00 00:压缩后尺寸(25

17 00 00 00:未压缩尺寸(23

07 00:文件名长度

00 00:扩展记录长度

 

压缩源文件目录区:

50 4B 01 02:目录中文件文件头标记(0x02014***)

3F 00:压缩使用的 pkware 版本

14 00:解压文件所需 pkware版本

00 00:全局方式位标记(有无加密,这个更改这里进行伪加密,改为09 00打开就会提示有密码了)

08 00:压缩方式

5A 7E:最后修改文件时间

F7 46:最后修改文件日期

16 B5 80 14CRC-32校验(1480B516

19 00 00 00:压缩后尺寸(25

17 00 00 00:未压缩尺寸(23

07 00:文件名长度

24 00:扩展字段长度

00 00:文件注释长度

00 00:磁盘开始号

00 00:内部文件属性

20 00 00 00:外部文件属性

00 00 00 00:局部头部偏移量

 

压缩源文件目录结束标志:

50 4B 05 06:目录结束标记

00 00:当前磁盘编号

00 00:目录区开始磁盘编号

01 00:本磁盘上纪录总数

01 00:目录区中纪录总数

59 00 00 00:目录区尺寸大小

3E 00 00 00:目录区对第一张磁盘的偏移量

00 00ZIP 文件注释长度

 

好了,修改后重新保存压缩包

打开得到

image.png 

 

emmmmm

接下来要用社工库来查询了

但是本菜鸡没找到好用的在线查询网站,请好心的大佬赐教..........

  查看前辈们写的wp,借大佬的查询结果图一用(侵权删)

image.png 

flag{15206164164}

 

bugku-ctf社工篇: 社工进阶

image.png 

由于之前知道有bugku的百度吧   并且这个是一个社工题所以可以试一下这个百度吧

进入百度吧然后会见到

image.png 

这句话的意思是要我们登录这个账号 但是我们只有账号没有密码  如果爆破的话很有可能爆破不开 所以我们再重新看一下 题目然后 我们看到了一个关键词弱口令然后我们去百度弱口令top100.

然后会发现弱口令

image.png 

https://blog.51cto.com/10907603/2139653

image.png 

然后一个个试一下这些弱口令

image.png 

然后发现第二个 就是密码 然后登录 进入邮箱

image.png 

应该会发现一个邮件 邮寄那里面就有 flag

image.png 

 

入门第部分-高级篇

image.png 

第一题:fuzzing

访问目标网址,there is nothing ”,小编心想,没东西是不是可以不做了?

当然是不可能了,年轻人想想就好了,何必当真呢

image.png 

burp抓包查看响应情况,初看好像没什么,这个时候拼什么呢,拼的是小编的这份细心了,看见小编圈起来的了嘛,很有用哦

image.png 

伪造一个IP,查看响应,出现了一个“m4nage.php”,进行访问,继续抓包

image.png 

继续伪造IP,可以看到回显内容“show me you key”

image.png 

任意构造一个key值,继续伪造IP,发包访问,可以看到回显了找到正确的key的方法

image.png 

破解key值得python代码如下,破解出来的key值为“ichunqiu618ok”

import hashlib

def md5(data):

    m = hashlib.md5()

    m.update(data)

    a = m.hexdigest()

    return a

a = 'ichunqiu'

b = 'abcdefghijklmnopqrstuvwxyz1234567890'

for i in b:

    for j in b:

        for k in b:

            for l in b:

                for m in b:

                    if md5(a+i+j+k+l+m)=='5a2a7d385fdaad3fabbe7b11c28bd48e':

                        print a+i+j+k+l+m

传入正确的key值后,回显了一个php文件

image.png 

继续burp抓包,伪造IP访问,得到一个“x0.txt”文件

image.png 

访问是一段php的源码函数,复制到本地,对代码进行修改,在最后对函数进行echo输出。

image.png 

本地网页访问代码,即可得到flag信息

image.png 

题:pyscript

访问目标网址,很有趣的界面,input your answer”,那么到底输入什么呢,小编也不知道,只有继续乱翻翻看了

image.png 

查看网页源代码,小编发现了一个重要的线索(很重要哦),不过看完之后看来小编还是逃不了代码的命了

image.png 

破解代码python,如下

import urllib,urllib2,json

import hashlib

import re

import requests

 

url = 'http://106.75.108.111:1111'

 

def sha_1(data):

    sha_1 = hashlib.sha1()

    sha_1.update(data)

    sha = sha_1.hexdigest()

    return sha

 

def key(key1,key2):

    c='0123456789'

    str1 = key1

    cipher = key2

    for i in c:

        for j in c:

            for k in c:

                if sha_1(i+j+k+str1) == cipher:

                    # print (i+j+k)

                    return i+j+k

def get_info():

    r = requests.post("http://106.75.108.111:1111")

    key2 = r.headers['Ciphertext']

    cookies = r.cookies

    html = r.text

    res = r'\+(.*?)\)'

    key1 = re.findall(res,html)[0]

    print key1

    return key1,key2,cookies

 

def postx(number,cookies):

    cookies = cookies

    values={'pass':number}

    response = requests.post("http://106.75.108.111:1111",cookies=cookies,data=values)

    return response.text

 

def sum(text):

    res = r'<!--.*?([\d\+\-\*]+).*?-->'

    key3 = re.findall(res,text)[0]

    result = eval(key3)

    return result

 

 

if __name__ == '__main__':

    (key1,key2,cookies)=get_info()

    number = key(key1,key2)

    result1 = postx(number,cookies)

    result2 = sum(result1)

    print result2

    print postx(result2,cookies)

直接运行,滴滴滴,flag信息瞬间就出来了呢

image.png 

原文链接:https://blog.csdn.net/qu_iet/java/article/details/79099218

 

 

所有需要资料均是我个人学习笔记,根据在bugku平台的练习以及参考了互联网上各位大佬的思路经验进行总结。

互联网上的思路过于零散,很少有资料是系统的从理论到实践的总结。本着共享的经身,这几天关于CTF-WEB的学习笔记进行了整理,分享。

 

有需要的可以私聊我公众号,回复“CTF学习资料”获取。

CTF web方面和渗透测试涉及的知识点基本一样,但是思路又完全不一样。渗透测试基本是整个站漏洞挖掘的思路,CTF基本是单个点的思路。相同点即是他们所涉及到的漏洞点、知识点、利用方式是一样的。对于有渗透基础的大佬来说,学习CTF只是学习一个解题思路;

以上仅是我个人见解,整理的笔记中涉及的点并不全,大多漏洞点其实并没有涉及到,后续如进行深度学会CTF web方面的话,我会继续进行整理分享。


本文作者:Lemon

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/146728.html

Tags:
评论  (0)
快来写下你的想法吧!

Lemon

文章数:68 积分: 647

安全问答社区

安全问答社区

脉搏官方公众号

脉搏公众号