giun

  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

bugku 16-31 writeup(misc)

发表于 2019-08-02 | 更新于 2019-09-12 | 分类于 bugkuCTF

十六、想蹭网络先破解wifi密码

题目给了我们一个数据包,且提示我们flag为wifi密码,

第一步:

打开文件,WIFI连接认证的重点在WPA的四次握手包,即eapol协议的包,过滤一下:
刚好四个包
在这里插入图片描述

第二步

既然是密码,还给了我们数据包,那么我们开始爆破,首先需要一个字典

因为手机号为11位,给了我们7位,故我们使用一下python代码生成字典
代码如下:

import string
s = string.digits
f = open('1.txt', 'w')
for i in s:
    for j in s:
        for k in s:
            for o in s:
                f.write("1391040"+i+j+k+o+'\n')

第三步

使用aircrack-ng进行爆破。

首先进行安装aircrack-ng,我在kali下进行操作。无法锁定的原因是我之前使用终端时,可能强制退出,还有命令在执行,那么我们就强制解除,命令如下

sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock

在这里插入图片描述
然后进行安装aircrack-ng
命令如下

apt-get install aircrack-ng

安装好用,进行爆破,得出密码

aircrack-ng -a2 wifi.cap -w password.txt

在这里插入图片描述
aircrack-ng使用

aircrack-ng -w 字典文件 目标 

破解KEY,漫长的过程.漫不漫长取决于两个方面:一是网管的聪明程度(能否设置出复杂的密码),二是电脑的速度. 
usage:aircrack-ng[options]<.cap/.ivsfile(s)>

Commonoptions:
-a<amode>:暴破(1/WEP,2/WPA-PSK)

-e<essid>:选择essid为目标

-b<bssid>:选择ap的mac为目标,就是破解识别的关键字

-q:使用安静模式,无数出模式

-C<macs>:将所有的AP合并为一个虚拟的

–help:显示这个帮助

十七、linux2

根据题目提示,flag为key{},那么使用winhex打开文件,并搜索key发现flag.

十八、账号被盗了

点击getf lag,发现没有管理员权限,那么我们就想到cookie,使用抓包工具将cookie的值,改成ture,即可得到一个网站然而发现该网站我怎么也进去,打扰了。

十九、细心的大象

1、下载图片,使用winhex打开没发现什么有用的信息

2、用binwalk查看图片是否包含其他文件,成功分离出一个压缩文件
在这里插入图片描述
3、发现该压缩文件里有个图片是加密的,于是我们寻找密码

4、在用winhex看一下大象的图片,还是没发现重要信息,我们打开文件的属性,去看看文件的详细信息里面有什么信息,发现一串类似于base64加密的东西。
在这里插入图片描述
5、把该串信息当作密码输入,发现失败了,base64解密后,再输入,可以得到以下图片
在这里插入图片描述
使用winhex打开修改图片的高为500,就可以在图片里看到flag了
在这里插入图片描述

二十、爆照

1、首先对文件进行分析,发现1个压缩包,压缩包里有一个动态图和8个文件。更具文件的大小可以发现88、888、8888比较特殊。flag应该在这3张图片里。

使用winhex打开可以依次打开这3个文件可以发现这3个文件都是jpg文件。修改后缀名为jpg

可以发现88文件有个二维码,扫描得bilibili

在这里插入图片描述
888文件是个图片,查看文件详细信息可以发现一段base64加密的数据,解密得silisili
在这里插入图片描述
8888文件修改后缀名得到一张图片,详细信息没有有用信息,使用binwalk分析下,发现了一个压缩包。压缩包里有一个二维码图片,扫描得panama
在这里插入图片描述
故该题flag为{bilibili_silisili_panama}

二十一、猫片(安恒)

根据题目提示,这样应该是LBS隐写
在这里插入图片描述
1、下载附件修改后缀名为png

2、使用stegsolve打开,使用其DATA extract功能进行分析,根据提示为LSB,BGR隐写,经过下图操作,保存为png文件。
在这里插入图片描述
3、发现图片打不开,使用winhex打开查看,进行下图操作,然后保存,发现是半张二维码
在这里插入图片描述

4、进行图片高度的修改,可以得到一张完整的二维码,扫描下载flag.rar压缩包
在这里插入图片描述
打开文件,有上面的错误,flag文件里的内容,有点气,费尽脑子,发现无可奈何,于是开始查各种资料。
在这里插入图片描述
发现是ntfs文件数据流隐写,就说题目的提示为什么ntfs没用到。
使用ntfsstreamsEditor工具查找数据流,然后导出(注意这边一个坑:flag.rar这个压缩文件一定要用winrar来解压才能找得到数据流)

在这里插入图片描述
发现导出的数据流文件是python反编译文件。直接扔到在线我就进行python反编译 ,https://tool.lu/pyc/
得到以下结果

import base64

def encode():
    flag = '*************'
    ciphertext = []
    for i in range(len(flag)):
        s = chr(i ^ ord(flag[i]))
        if i % 2 == 0:
            s = ord(s) + 10
        else:
            s = ord(s) - 10
        ciphertext.append(str(s))

    return ciphertext[::-1]

ciphertext = [
    '96',
    '65',
    '93',
    '123',
    '91',
    '97',
    '22',
    '93',
    '70',
    '102',
    '94',
    '132',
    '46',
    '112',
    '64',
    '97',
    '88',
    '80',
    '82',
    '137',
    '90',
    '109',
    '99',
    '112']

进行解密脚本的编写

def decode():
    ciphertext = [
        '96',
        '65',
        '93',
        '123',
        '91',
        '97',
        '22',
        '93',
        '70',
        '102',
        '94',
        '132',
        '46',
        '112',
        '64',
        '97',
        '88',
        '80',
        '82',
        '137',
        '90',
        '109',
        '99',
        '112']
    ciphertext.reverse()             # 加密中使用ciphertext[::-1]进行取反,故使用reverse取反,
    flag = ''
    for i in range(len(ciphertext)):     # 加密中使用的是flag的长度,而ciphertext与flag长度一样
        if i % 2 == 0:
            s = int(ciphertext[i]) - 10    # 加密中s的值其实就是int(ciphertext[i])
        else:
            s = int(ciphertext[i]) + 10
        s = chr(i ^ s)                    # 加密中为i和flag异或,那么i与s异或即可的到flag
        flag += s
    return flag

if __name__ == '__main__':
    flag = decode()
    print(flag)

二十二、多彩

下载图片,放到Stegsolve里面跑下。
发现了
在这里插入图片描述
图片的名称又是lipstick.png (lipstick是口红意思),这边又有YSL,所以怀疑与YSL口红有关(圣罗兰口红).使用data extract分析下,发现PK开头,直接save bin 存为zip格式
![在这里插入图片描述]bugku-16-26-writeup-misc\18.png)
发现文件打不开,于是使用winhex打开,进行图中操作,成功打开文件,发现flag.txt文件加密

在这里插入图片描述
然后解压文件会产生错误,这里有个小坑注意,不能使用winrar解压,要使用360压缩等解压。
在这里插入图片描述
未完待续,卡住了这题

二十三、旋转跳跃

一看题目,提示我们密码,还是音频文件,目测是音频隐写。
上工具MP3Stego。可以参考我的这篇博客
在这里插入图片描述
可以得到一个txt文件,,得到flag
在这里插入图片描述

二十四、普通的二维码

扫描会得到一句话:我不会告诉你flag就在这里。使用winhex打开发现最后一段数字,应该是8进制数。
在这里插入图片描述
编写python脚本转ASCII码,即可得到flag

a = '146154141147173110141166145137171060125137120171137163143162151160164137117164143137124157137124145156137101163143151151041175'
flag = ''
for i in range(len(a) // 3):
    flag += chr(int(a[i * 3:i * 3 + 3], 8))     # 八进制3为一个ASCII码
print(flag)

二十五、乌云邀请码

经过一些尝试,原理是LSB隐写,使用Stegsolve工具的Data Extract功能即可得到flag
在这里插入图片描述

二十六、神秘文件

下载附件,发现里面有一张图片,和一个压缩包,且压缩包里也有一个一模一样不过是加密的图片。
1、于是我们想到明文攻击。使用ARCHPR工具进行攻击。

2、注意把logo压缩成压缩包,并且把flag.zip的压缩包里的doc文件删除。

3、这边有一个坑,我们的压缩算法要与flag.zip的压缩算法一样才可以。我卡了好久在这。

4、可以复制flag.zip然后存入logo.png文件,然后修改名字为logo.zip。

5、可以得到口令,输入口令我们发现是一个笑脸
在这里插入图片描述
进行binwalk文件分离
在这里插入图片描述
然后在docProps文件下有个flag.txt,进行base64解码即可得flag。
破解zip加密的常见的几种方法,可以参考这个大佬的博客

二十八、图穷比见

下载附件
,使用winhex打开,在文件最后面发现一大堆16进制,然后复制到notepad里使用插件里的converter进行转化为ascii码。发现是一对坐标,然后把左右括号去掉,把逗号换成空格
在这里插入图片描述
然后使用gnuplot工具画图
使用命令 plot "E:\\gnuplot\\2.txt"
在这里插入图片描述
在这里插入图片描述
扫描得flag

二十九、convert

一、打开文件发现一堆二进制,保存为2.txt文件,那肯定得转化为16进制,这边我尝试直接利用脚本转化为10进制然后转化为ASCII,发现是个rar文件,却因为有些字体识别不了乱码,打不开文件。

with open('2.txt', 'w',encoding='utf-8') as f1:
    with open('1.txt',encoding='utf-8') as f2:
        while True:
            temp = f2.read(4)
            if temp:
                temp = int(temp, 2)   # 二进制转10进制
                temp = hex(temp)      # 10进制转16进制
                f1.write(temp[2:])    # 去掉0x
            else:
                break

二、利用Notepad++自带的十六进制转ascii,发现rar文件头,将文件另存为一个rar文件。
打开文件发现里面有一个图片,我们先看下属性,发现有一串base64码。
然后在线解密,发现flag.

三十、听首音乐

听了一会后,没听出啥,使用audacity进行分析,发现有点像摩斯密码
在这里插入图片描述
然后放大,摩斯密码有两种“符号”用来表示字符:点(.)和划(-),或叫“滴”(Dit)和“答”(Dah)。(滴,1t;嗒,3t),
分析,写出摩斯密码为(每一组后面加上空格)

..... -... -.-. ----. ..--- ..... -.... ....- ----. -.-. -.. ----- .---- ---.. ---.. ..-. ..... ..--- . -.... .---- --... -.. --... ----- ----. ..--- ----. .---- ----. .---- -.-.

在线解密http://www.zhongguosou.com/zonghe/moErSiCodeConverter.aspx
在这里插入图片描述

三十一、好多数值

打开题目发现一堆数值,有点像rgb的值,255,255,255就是白色。
那么题目的思路就是一个根据这堆值生成图片

把行61366因式分解分解成两个数相乘(503*122)

from PIL import Image
x = 503  # x坐标  通过对txt里的行数进行整数分解
y = 122  # y坐标  x*y = 行数

im = Image.new("RGB", (x, y))  # 创建图片
with open('1.txt') as file:  # 打开rbg值文件
    # 通过一个个rgb点生成图片
    for i in range(0,x):
        for j in range(0,y):
            line = file.readline()  # 获取一行的rgb值
            rgb = line.split(",")  # 分离rgb
            im.putpixel((i,j),(int(rgb[0]),int(rgb[1]),int(rgb[2])))  # rgb转化为像素
    im.show()

在这里插入图片描述

bugku 1-15 writeup(misc)

发表于 2019-08-02 | 分类于 bugkuCTF

一、这是一张单纯的图片

保存图片,使用记事本打开图片,发现末尾有编码的一段文字
在这里插入图片描述
在网页中&#开头的是HTML实体,一些字符在 HTML 中是预留的,拥有特殊的含义,比如小于号‘<’用于定义 HTML 标签的开始。如果我们希望浏览器正确地显示这些字符,我们必须在 HTML 源码中插入字符实体。详情请看http://baike.baidu.com/view/4757776.htm

如何把汉字转换成HTML实体呢?

其实很简单,汉字的HTML实体由三部分组成,”&#+ASCII+;“ 即可。
在线转化链接
https://uni2ascii.supfree.net/

解密即可得flag

二、隐写

前置知识
png图片的参数IHDR

文件头数据块IHDR(header chunk):它包含有PNG文件中存储的图像数据的基本信息,并要作为第一个数据块出现在PNG数据流中,而且一个PNG数据流中只能有一个文件头数据块。

文件头数据块由13字节组成,它的格式如下表所示。
在这里插入图片描述
找到IHDR,然后修改A1为F1,即可得到flag.

三、telnet

前置知识:
Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力

打开题目,下载数据包,使用wireshark软件打开,过滤telnet数据包,寻找flag
在这里插入图片描述

四、眼见非实(ISCCCTF)

得到文件:zip ,无法解压用winhex打开,发现文件头是:504B0304
是zip文件,改后缀为zip解压,得到word文档,打开错误,继续改后缀为zip解压得到很多文件,最后在document.xml文件中发现flag。

五、又一张图片,还单纯吗

使用StegSolve打开使用其analyse中的frame browser发现flag

六、猜

根据题目提示:进行在线识图,即可得出flag

七、宽带信息泄露

bin文件是二进制文件,那么就用routerpassview工具打开,发现是个配置文件,题目说是宽带用户名,我们尝试下搜索username,flag为flag{053700357621}
在这里插入图片描述

八、隐写2

1、下载图片,首先思路是用winHex打开,发现没有内容。修改文件后缀名为zip,发现里面包含了2个文件,一个是密码提示文件,一个是flag文件。

2、通过百度可以知道红桃k为查理曼,雅典娜为黑桃Q,梅
花J代表着兰斯洛特
(扑克牌的J、Q、K分别代表着侍卫、王后、国王)
使用密码为KJQ(王后和国王间有个小三),观察键盘可以发现面应数字为871(提示密码为3位数).
当然也可以使用APCHPR进行爆破
在这里插入图片描述
得到图片后使用winhex打开,发现
在这里插入图片描述
base64加密解密即可得flag,但是不知道为什么flag一直提交不正确
flag{y0u Are a h@cker!}

九、多种方法解决

下载附件,发现无法直接打开。
使用notepad打开,发现是个png文件,且base64加密,删除密文前面没用的信息,然后进行base64解密,另存为png图片,得到一个二维码,扫描可得flag,或者使用OR research分析。即可得flag。

十、闪得好快

拿到图片。第一想法就是StegSolve打开使用其analyse中的frame browser功能,发现有18张二维码,一张张扫吧,即可得出flag。
在这里插入图片描述

十一、come_game

打开游戏玩了几下,发现到第二个怎么也过不去(或许是我菜)发现多了个保存文件,用winhex打开保存文件发现以下内容,把32改成35。这里的32应该代表第二个,那么改成35直接通关。然后再次打开游戏,即可得到flag注意flag格式为SYC{}。因为题目来源:第七季极客大挑战。
在这里插入图片描述

十二、白哥的鸽子

直接使用notpade打开,在这里插入图片描述
发现文件末尾有类似flag格式的字符串,拷贝出来得到 g2ivyo}l{2s3_o@aw__rcl@进行栅栏解密得到
 lag{w22_is_v3ry_cool}@@
 在这里插入图片描述
 加个f即可得到flag,注意提交flag时需要把最后的@@去掉

十三、linux

下载附件,打开后直接用notepad打开flag文件,发现里面有个key,就是flag
在这里插入图片描述

十四、隐写3

查看图片明显少了下半身
在这里插入图片描述
得到flag
在这里插入图片描述

十五、做个游戏

这个游戏是坚持60秒就可以得到flag,我最多玩18秒就gameover了。这时候就需要反编译了,使用反编译工具jd-gui,不过需要java环境。开始审计代码,发现flag
在这里插入图片描述
编译工具jd-gui(windows版本)下载链接:https://pan.baidu.com/s/1sp7U7YwrXc7XObRe1r6jVg
提取码:6dbs

zip伪加密

发表于 2019-08-02 | 分类于 misc

zip伪加密

1. 原理

就是修改了zip的文件头的加密标位(全局方式标记位),使文件打开显示需要密码,实际没有密码。

2. zip文件的格式

简单说一个 ZIP 文件由三个部分组成:
压缩源文件数据区+压缩源文件目录区+压缩源文件目录结束标志

压缩源文件 数据区:
50 4B 03 04 头文件标记

压缩源文件 目录区:
50 4B 01 02:目录区文件头标记
1F 00:压缩使用的 pkware 版本 或3F 00
14 00:解压文件所需 pkware 版本
00 00:全局方式位标记(伪加密,改为 09 00 就提示有密码了)

压缩源文件 目录结束:

可以参考这篇博客
如
压缩文件数据区域
在这里插入图片描述

3.识别真假加密

无加密
数据区 的全局加密应当为 00 00
目录区 的全局方式位标记应当为 00 00

假加密
数据区 的全局加密应当为 00 00
目录区 的全局方式位标记应当为 09 00

真加密
数据区 的全局加密应当为 09 00
目录区 的全局方式位标记应当为 09 00

如
压缩文件目录区域
在这里插入图片描述

在这里插入图片描述

攻防世界misc部分

发表于 2019-08-02 | 分类于 misc

一、功夫再高也怕菜刀

下载附件,用foremost进行pcapng文件的分离,得到一个压缩包,打开压缩包,得到一份加密的flag文件。

foremost的下载地址https://github.com/raddyfiy/foremost (windows系统可用)

简单的使用介绍
在这里插入图片描述
在这里插入图片描述
在zip里可以发现一个加密的flag.txt文件。用wireshark打开6666.pcapng文件,查找flag.txt关键字
在这里插入图片描述
发现有个6666.jpg文件,使用TCP追踪流,复习下面蓝色部分。FFD8开头,FFD9结尾,并在winhex中新建文件复制并粘贴。注意粘贴格式选择为ASCII Hex。
在这里插入图片描述
在这里插入图片描述

报存为jpg格式,可以得到图片,图片里的文字就是密码,输入密码,得到flag.

二、菜狗收到了图后很开心,玩起了pdf(flag格式为大写)

下载附件后,发现是pdf,那么
在google上安装插件PDF Viewer,控制台输入document.documentElement.textContent(获取整个文档的文本以及CDATA数据),得到一串AB编码而成的字符串,猜测是摩斯密码,利用记事本的功能快速,将A变为 . ,B变为 - ,
在这里插入图片描述然后将替换后的字符进行摩斯解密在线解密即可得出flag

j
在这里插入图片描述

三、SSCTF线上选举美男大赛开始了,泰迪拿着他的密码去解密了,提交花括号内内容(Z2dRQGdRMWZxaDBvaHRqcHRfc3d7Z2ZoZ3MjfQ==)

前置知识
所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第i个字连起来,形成一段无规律的话。
一般比较常见的是2栏的棚栏密码。
比如明文:THERE IS A CIPHER
去掉空格后变为:THEREISACIPHER
两个一组,得到:TH ER EI SA CI PH ER
先取出第一个字母:TEESCPE
再取出第二个字母:HRIAIHR
连在一起就是:TEESCPEHRIAIHR
这样就得到我们需要的密码了!
而解密的时候,我们先吧密文从中间分开,变为两行:
T E E S C P E
H R I A I H R
再按上下上下的顺序组合起来:
THEREISACIPHER
分出空格,就可以得到原文了:
THERE IS A CIPHER
但是有些人就偏不把密码作出2栏,比如:
明文:THERE IS A CIPHER
七个一组:THEREIS ACIPHER
抽取字母:TA HC EI RP EH IE SR
组合得到密码:TAHCEIRPEHIESR
那么这时候就无法再按照2栏的方法来解了…
不过棚栏密码本身有一个潜规则,就是组成棚栏的字母一般不会太多。(一般不超过30个,也就是一、两句话)
这样,我们可以通过分析密码的字母数来解出密码…
比如:TAHCEIRPEHIESR
一共有14个字母,可能是2栏或者7栏…
尝试2栏…失败
尝试7栏…成功
然而当棚栏和拼音相结合后,诞生出一种令人痛恨的新思路(如韵母和声母)

凯撒移位密码
也就是一种最简单的错位法,将字母表前移或者后错几位,例如:
明码表:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码表:DEFGHIJKLMNOPQRSTUVWXYZABC
这就形成了一个简单的密码表,如果我想写frzy(即明文),那么对照上面密码表编成密码也就是iucb(即密文)了。密码表可以自己选择移几位,移动的位数也就是密钥。
进制转换密码。 比如给你一堆数字,乍一看头晕晕的,你可以观察数字的规律,将其转换为10进制数字,然后按照每个数字在字母表中的排列顺序,拼出正确字母。
举例:110 10010 11010 11001
解:
很明显,这些数字都是由1和0组成,那么你很快联想到什么?二进制数,是不是?嗯,那么就试着把这些数字转换成十进制试试,得到数字6 18 26 25,对应字母表,破解出明文为frzy

在这里插入图片描述
然后再进行栅栏解密得到flag
在这里插入图片描述

四、一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息?

本题为jpg图片信息隐写outguess 工具(在kali里,可对jpg图形隐藏信息查询)

安装方法
终端命令输入git clone https://github.com/crorvick/outguess进行下载,下载完成后进入outguess文件夹,

执行命令./configure && make && make install 进行编译及安装。
使用方法

加密:
outguess -k “my secret key” -d hidden.txt demo.jpg out.jpg
加密之后,demo.jpg会覆盖out.jpg,
hidden.txt中的内容是要隐藏的东西

解密:
outguess -k “my secret key” -r out.jpg hidden.txt或者outguess -r lamb.jpg hidden.txt

解密之后,解密内容放在hidden.txt中
然后使用cat hidden.txt查看

-r解密,-d加密

使用,下面2行代码得到flag

outguess -r lamb.jpg  hidden.txt
cat hidden.txt

信息收集

发表于 2019-08-01 | 分类于 web

1、域名信息收集

1.1whois查询

可以通过爱站工具网,站长之家,VirusTotal这些网站查询域名的相关信息,如域名服务商,域名拥有者,以及他们的邮箱。电话,地址等

kali系统自带whois。
语法如下

whois 所要查询的域名

1.2、备案信息查询

网站备案是指向主管机关报告事由存案以备查考。行政法角度看备案,实践中主要是《立法法》和《法规规章备案条例》的规定。网站备案的目的就是为了防止在网上从事非法的网站经营活动,打击不良互联网信息的传播,如果网站不备案的话,很有可能被查处以后关停。

常用网站有2个
ICP备案查询网
天眼查

1.3、敏感信息收集

我们可以通过构造特殊的关键字来收集敏感信息
Goole的常用语法及其说明,(其他搜索引擎的语法大同小异)
| 关键字 | 说明 |
| ——– | —————————————————- |
| Site | 指定域名 |
| Inurl | URL中的存在关键字的网页 |
| Intext | 网页正文中的关键字 |
| Filetype | 指定文件类型 |
| Intitle | 网页标题中的关键字 |
| link | link:baidu.com即表示返回所有和baidu.com做了连接的URL |
| Info | 查找一些指定站点的一些基本信息 |
| cache | 搜索Goole里关于某些内容的缓存 |
如,关键字的混合使用
在这里插入图片描述
还有burp suit 的repeater功能也可以获取到服务器的一些信息。
还可以通过乌云漏洞表查询历史的漏洞信息

2、子域名信息收集

2.1、工具收集

使用的工具主要有Layer子域名挖掘机、K8/wydomain等等,这边推荐Layer子域名挖掘机,Sublist3r和subDomainsBrute

Layer子域名挖掘机操作简单,如图
在这里插入图片描述

subDomainsBrute需要在python2的环境下使用,具体的大家可以参考这篇文章
它的特点是可以快速的发现三、四、五等不被容易探测到的域名

执行命令:

python subDomaisBrute.py xxx.com

2.2、搜索引擎枚举

如搜索baidu旗下的子域名
在这里插入图片描述

2.3、使用第三方服务枚举

很多第三方服务汇聚了大量的DNS数据集
如DNSdumpster网站、在线DNS侦查和搜索的工具挖掘出指定域潜在的大量子域
如DNSdumpster网站
在这里插入图片描述
部分结果
在这里插入图片描述

2.4、证书透明度公开日志枚举

证书透明度(CT)是证书授权机构(CA)的一个项目。证书授权机构会把每个SSL/TLS证书发布到公开日志里,这个证书通常包含域名、子域名、邮件地址。然而查找一些证书最简单的方法就是通过一下搜索引擎搜索一些公开的CT日志。

介绍2个网站 crt.sh 和 censys
下图为crt网站
在这里插入图片描述
当然也可以使用一些在线网站查询子域名,如Ip反查绑定域名网站(可以根据域名查询其对应的IP地址和IP物理地址,就是说可以查询该网站的服务器是放在什么地方的,一样可以精确到某个网吧,机房或学校等。)

3、收集常用端口信息

通过扫描服务器开放的端口以及从该端口上判断服务器存在的服务,就可以对症下药,便于我们渗透目标服务器
常见的工具有nmap、无状态端口扫描工具Masscan、Zmap和御剑高速端口扫描工具

常见的端口及其说明、还有攻击方向汇总

3.1文件共享服务端口

端口号 端口说明 攻击方向
21/22/69 FTP/tftp文件的传输协议 允许匿名的上传、下载、爆破和嗅探操作
2049 Nfs服务 配置不当
139 Samba服务 爆破、未授权访问、远程代码执行
389 Ldap目标服务协议 注入、允许匿名访问、弱口令

3.2、连接远程服务端口

端口号 端口说明 攻击方向
22 SHH远程连接 爆破、SHH隧道以及内网代理的转发和存储、文件传输
23 Telnet远程连接 爆破、嗅探、弱口令
3389 Pdp远程桌面连接 shift后门(需要windows Server 2003 以下的版本)、爆破
5900 VNC 弱口令爆破
5632 PyAnywhere服务 抓密码、代码执行

3.3、web应用服务端口

端口号 端口说明 攻击方向
80/443/8080 常见的web服务器端口 web攻击、爆破、对应服务器版本漏洞
7001/7002 webLogic控制台 java反序列化、弱口令
8080/8089 Jboss/Resin/Jetty/Jenkins 反序列化、控制台弱口令
9090 WebSphere控制台 java反序列化、弱口令
4848 GlassFish控制台 弱口令
1352 Lotus domain邮件服务 弱口令、信息泄露、爆破
10000 Webmin-Web控制面板 弱口令

3.4、数据库服务端口

端口号 端口说明 攻击方向
3306 MySQL 注入、提权、爆破
1433 MSSQL数据库 注入、提权、爆破、SA弱口令
1521 Orcale数据库 TNS爆破、注入、反弹shell
5432 PostgreSQL数据库 注入、爆破、弱口令
27017/27018 MongoDB 爆破、未授权的访问
6397 Redis数据库 可尝试为授权访问、弱口令爆破
5000 Sysbase/DB2 爆破、注入

3.5、邮件服务端口

端口号 端口说明 攻击方向
25 SMTP邮件服务 邮件伪造
110 POP3协议 爆破、嗅探
143 IMAP协议 爆破

3.6、网络常见协议端口

端口号 端口说明 攻击方向
53 DNS域名系统 允许区域传送、DNS劫持、缓存投毒、欺骗
67/68 DHCP服务 劫持、欺骗
161 SNMP协议 爆破、收集目标内网信息

3.7、特殊服务端口

端口号 端口说明 攻击方向
2811 Zookeeper服务 未授权访问
8069 Zabbix服务 远程执行、SQL注入
9200/9300 Elasticsearch服务 远程执行
11211 Memcache 未授权访问
512/513/514 Linux Rexec服务 爆破、Rlogin登录
873 Rsync服务 匿名访问、文件上传
3690 Svn服务 Svn泄露、未授权访问
50000 SAP Management Console 远程执行

4、CMS识别

在进行渗透时得识别出相应的web容器或CMS才可以进行渗透

CMS是Content Management System的缩写,意为”内容管理系统”。 内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场。业界公认的国内比较权威的产品有CmsTop、TurboCMS、TRS。对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。

常见的CMS有Dedecms(织梦)、Discuz、PHPWEB、PHPWind、PHPCMS、ECShop、Dvbbs、SiteWeaver、ASPCMS、帝国、Z-Blog、WordPress等

代表工具有御剑Web指纹识别,whatWeb、WebRobo、椰树、轻量WEB指纹识别等,可以快速识别一些主流的CMS

在线网站查询CMS指纹识别有:
BugScanner
云悉指纹
和WhatWeb

5、查找真实IP

5.1、目标服务器存在CDN

若目标服务器不存在CDN,那么我们可以直接通过ip138网来获取目标的一些IP及其域名信息。但是一般是存在CDN的

什么是CDN呢
CDN全称:Content Delivery Network或Content Ddistribute Network,即内容分发网络尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

如果渗透目标具有CDN服务,那么我们ping目标域名得到的只是离我们最近的一台节点的CDN服务器的IP,不是服务器的真实IP,那么我们要怎样获取目标服务器真实的IP呢

5.2、判断目标是否使用了CDN

可以通过ping目标域名来判断,如下图可以发现baidu服务器存在CDN服务
在这里插入图片描述

5.3、绕过CDN寻找真实的IP

介绍一些常规的方法

1、内部邮箱源。一般的邮箱系统在内部,没有经过CDN解析。故可以ping邮箱服务器的域名,必须是目标自己的邮箱服务器,不是第三方或者公共邮箱服务器。

2、扫描网站测试文件,如phpinfo,teste=等

3、分站域名。一般来说主战的访问量比较大,所以是主张挂CDN,分站可能没有挂。通过ping二级域名获取分站IP,从而1推测主站IP

4、国外访问。一般来说国内的CDN只对国内的用户访问加速,对国外就不一定了。可以通过国外在线代理网站App Synthetic Monitor访问,可能会得到真实IP

5、查看域名解析记录

6、如果目标网站有自己的App,通过抓包工具抓取App的请求,从而找到真实IP

7、通过CloudFlareWatch在线网站查找真实IP

5.4、如何验证IP的真实性

可以手工直接访问ip看响应页面是否与访问域名返回的页面一样。也可以通过工具批量访问,如Masscan等工具。

6、敏感目录文件收集

针对网站扫描工具,主要有DirBuster、御剑后台扫描珍藏版、wwwscan、Spinder、Sensitivefilescan、Weakfilescan等

在线工作站有webSacn等
下面是DirBuster存在界面,需要java环境
在这里插入图片描述
Browse是选择自己的字典也可以选择工具自带的字段,而list info是选择自己的字典

对最后一个红框进行说明,如果你选择扫描的目录为http://www.wedd.com/admin/,那么在URL to fuzz里久有写上“/admin/{dir}”,在{dir}前后都可以随意拼接你想要的目录或后缀

2019ISCC misc 第2/4/7题

发表于 2019-08-01 | 分类于 misc

第2题:

下载附件,修改文件后缀名为zip,发现50个二维码。发现最后一张二维码,格式为jpg与其他二维码都不一样。用winhex打开,发现flag。注意这边有个坑,flag提交时要把flag{}去掉。

第4题:

下载附件是一个动态的jpg,使用winhex打开在末尾发现
在这里插入图片描述
疑是base64加密,拿去在线解密,得到Salted__P)=N6q(эl%.,D7ێպ?1C’Ϊɒ~`৵܋ߖ߄zgF4_1ζ$wOk̆ӊ$Ôj睼̍⾐*!n。
怀疑是ASE加密
至于什么是ASE加密请看这篇博客
直接解密发现解密不了。
ASE在线解密
猜想密钥是ISCC,连续解密2次发现flag

第7题

下载压缩包发现,图片损坏,打开winhex
在这里插入图片描述
在这里插入图片描述保存即可得到正常的png图片。修改后缀名为zip,h获得音频文件。
打开png图片扫描在这里插入图片描述
为当铺密码,在线解码:http://www.zjslove.com/3.decode/dangpu/index.html

何为当铺密码:简单说就是当前汉字有多少笔画出头,就是转化成数字几。

然后我们使用MP3Stego工具进行音频隐写的解密,-X后面为要解密的音频文件,-P后面为密码(要把音频文件放在Decode.exe的同一个目录下,一个音频文件解压需要密码)
在这里插入图片描述
在这里插入图片描述
打开01.MP3.txt,发现里面为&#102;&#108;&#97;&#103;&#123;&#80;&#114;&#69;&#116;&#84;&#121;&#95;&#49;&#83;&#99;&#67;&#57;&#48;&#49;&#50;&#95;&#103;&#79;&#48;&#100;&#125;
进行10进制转ascii码即可得到flag.

strpos数组绕过,密码MD5比较绕过,MD5函数===绕过

发表于 2019-08-01 | 分类于 代码审计(基础篇)

一、strpos数组绕过NULL

<?php

$flag = "flag";

    if (isset ($_GET['nctf'])) {
        if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
            echo '必须输入数字才行';
        else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)   
            die('Flag: '.$flag);
        else
            echo '骚年,继续努力吧啊~';
    }

 ?>

定义和用法
strpos() 函数查找字符串在另一字符串中第一次出现的位置。

它不能对数组处理,如果是数组则返回null,null,也就不等于FALSE.
payload为?nctf[]=1

二、密码md5比较绕过

<?php

if($_POST[user] && $_POST[pass]) {
   mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $user = $_POST[user];
  $pass = md5($_POST[pass]);
  $query = @mysql_fetch_array(mysql_query("select pw from ctf where user=' $user '"));
  if (($query[pw]) && (!strcasecmp($pass, $query[pw]))) {

​
echo “

Logged in! Key: ntcf{**}

“;
}
else {
echo(“

Log in failure!

“);
}
}

?>

审计源码可知,要想得到flag,只需要同时满足

($query[pw]) && (!strcasecmp($pass, $query[pw]))

$user变量我们是可以控制的,然后又没有任何过滤措施
我们就可以直接利用这个语句选择一个相应的密码给对应的pw

如果前面的用户名不存在的话
mysql_fetch_array(mysql_query(“select pw from ctf where user=’$user’”));
取到的东西就是空,然后在加上我们的md5密码,就可以实现成功登陆

strcasecmp函数,比较2个字符串,不区分大小写。如果2个字符串大小相等就返回0。

最后payload
user=1’ union select md5(1)%23&pass=1

三、MD5函数===绕过

<?php
error_reporting(0);
$flag = 'flag{test}';
if (isset($_GET['username']) and isset($_GET['password'])) {
    if ($_GET['username'] == $_GET['password'])
        print 'Your password can not be your username.';
    else if (md5($_GET['username']) === md5($_GET['password']))
        die('Flag: '.$flag);
    else
        print 'Invalid password';
}
?>

由于md5解析不了数组,返回空。

payload:?username[]=1&password[]=2

MD5加密相等绕过和intval函数四舍五入

发表于 2019-05-01 | 分类于 代码审计(基础篇)

一、MD5加密相等绕过

<?php

$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
    echo "nctf{*****************}";
} else {
    echo "false!!!";
}}
else{echo "please input a";}

?>

将QNKCDZO进行md5加密后,发现为0e开头,所以此处考虑MD5碰撞,就是经过md5加密后以0e开头的在进行‘==’运算时,php会认为他们都为0。
payload为http://127.0.0.1/myphp/test.php?a=s1885207154a

二、intval函数四舍五入

<?php

if($_GET[id]) {
   mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $id = intval($_GET[id]);
  $query = @mysql_fetch_array(mysql_query("select content from ctf2 where id='$id'"));
  if ($_GET[id]==1024) {
      echo "<p>no! try again</p>";
  }
  else{
    echo($query[content]);
  }
}

?>

payload:?id=1024.2
intval函数四舍五入,取值为1024,但if语句中已成功绕过1024的限制,输出flag

密码MD5比较绕过和urldecode二次绕过

发表于 2019-05-01 | 分类于 代码审计(基础篇)

一、密码MD5比较绕过

​

<?php

//配置数据库
if($_POST[user] && $_POST[pass]) {
    $conn = mysql_connect("********, "*****", "********");
    mysql_select_db("phpformysql") or die("Could not select database");
    if ($conn->connect_error) {
        die("Connection failed: " . mysql_error($conn));
} 

//赋值

$user = $_POST[user];
$pass = md5($_POST[pass]);

//sql语句

// select pw from php where user='' union select 'e10adc3949ba59abbe56e057f20f883e' # 

// ?user=' union select 'e10adc3949ba59abbe56e057f20f883e' #&pass=123456

$sql = "select pw from php where user='$user'";
$query = mysql_query($sql);
if (!$query) {
    printf("Error: %s\n", mysql_error($conn));
    exit();
}
$row = mysql_fetch_array($query, MYSQL_ASSOC);
//echo $row["pw"];

  if (($row[pw]) && (!strcasecmp($pass, $row[pw]))) {

//如果 str1 小于 str2 返回 < 0; 如果 str1 大于 str2 返回 > 0;如果两者相等,返回 0。

​
echo “

Logged in! Key:**

“;
}
else {
echo(“

Log in failure!

“);

  }
}
?>

分析这句sql语句可以知道,我们不能直接注释掉密码

$sql = "select pw from php where user='$user'";

继续分析源码我们可以发现只要让row[pw]的值与pass经过md5之后的值相等即可,用union select来返回一个已知明文的md5
payload=

' union select 'e10adc3949ba59abbe56e057f20f883e' #&pass=123456`

二、urldecode二次绕过

<?php
if(eregi("hackerDJ",$_GET[id])) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "hackerDJ")
{
  echo "<p>Access granted!</p>";
  echo "<p>flag: *****************} </p>";
}
?>

审计源码

eregi()函数

字符串比对解析,与大小写无关。
语法: eregi(string pattern, string string, array [regs]);
返回值: 整数/数组
特点:PHP函数eregi()与大小写无关,类似函数ereg() 则区分大小写
例:if (eregi(“C”,”abcdef”)   //true

要想得出flag我们即要求id不能等于hackerDJ,又要要求id的urldecode解码等于id
因此我们需要进行两次编码: h –> %68 –> %2568

构造url: index.php?id=%2568ackerDJ

提交即可获得flag:  

shal()函数绕过和session验证绕过

发表于 2019-05-01
123…5
wr

wr

47 日志
10 分类
6 标签
© 2020 wr
由 Hexo 强力驱动 v3.8.0
|
主题 – NexT.Gemini v7.0.0
|
0%