ctfshow菜鸡杯 部分wp

参加了ctfshow组织的菜鸡杯,自我感觉还是比较不错的,让自己学习了好多新东西。还有感谢师傅们的耐心解答。真的真的感谢。

1. misc3

这道题考察的是jsfuck编码(参考),直接将编码放入浏览器的控制台进行解码。需要去掉最后的括号
在这里插入图片描述

这里解释一下原理:先说说jsfuck的格式:[]["filter"]["construtor"](CODE)()
差不多就是 [][乱七八糟](真实代码)() 所有我们可以直接取真实代码部分去输入控制台跑。

另一个方法就是去掉括号。我们可以看到上面照片的代码是if(1===2)但是1不可能等于2,所以说如果不去掉最后的括号就相当于执行这个函数也就不会执行。而如果去掉括号就是相当于定义函数表达式,会返回函数定义就可以看到函数的代码。如果代码是if(1!==2)就不需要修改直接出flag。
JavaScript函数用括号与没有括号区别
JavaScript函数定义

2. misc1

这道题让自己学习了好多。一个是crc校验循环冗余校验,另一个是斐波那契数列脚本读取文件。斐波那契数列
下载文件,里面是一张照片参考信息,可能是照片的长宽高隐写,这里可以使用crc暴力破解的脚本。参考链接

import zlib
import struct

filename = '1.png'
with open(filename, 'rb') as f:
    all_b = f.read()
    crc32key = int(all_b[29:33].hex(),16)
    data = bytearray(all_b[12:29])
    n = 4095            #理论上0xffffffff,但考虑到屏幕实际/cpu,0x0fff就差不多了
    for w in range(n):          #高和宽一起爆破
        width = bytearray(struct.pack('>i', w))     #q为8字节,i为4字节,h为2字节
        for h in range(n):
            height = bytearray(struct.pack('>i', h))
            for x in range(4):
                data[x+4] = width[x]
                data[x+8] = height[x]
            crc32result = zlib.crc32(data)
            if crc32result == crc32key:
                print("宽为:",end="")
                print(width)
                print("高为:",end="")
                print(height)
                exit(0)

在这里插入图片描述然后进行修改照片的高度
在这里插入图片描述发现照片下面有一串文字
在这里插入图片描述然后可以猜想是lsb隐写
ctfshow菜鸡杯 部分wp_第1张图片根据提示可能是斐波那契数列来读取文件数据。保存数据为二进制。
ctfshow菜鸡杯 部分wp_第2张图片直接使用师傅提供的payload,原理就是通过斐波那契数列来读取数据。

#coding=utf-8
def recur_fibo(n):
    """递归函数
    输出斐波那契数列"""
    if n <= 1:
        return n
    else:
        return (recur_fibo(n - 1) + recur_fibo(n - 2))
# 获取用户输入
nterms = int(input("您要输出几项? "))
a = open('flag','rb').read()
#print(a)
s=''
# 检查输入的数字是否正确
if nterms <= 0:
    print("输入正数")
else:
    print("斐波那契数列:")
    for i in range(nterms):
        b=recur_fibo(i)
        #print(b)
        if(recur_fibo(i) == 0):
             s+=chr(a[b])
        else:
             s+=chr(a[b-1])
print(s)

在这里插入图片描述

3. web 1(签到题)

上源代码。

 
if(isset($_GET['url'])){
     
    switch (strtolower(substr($_GET['url'], 0,4))) {
     
        case 'file':
            echo 'file protocol do not allow';
            break;
        case 'php:':
            echo 'php protocol do not allow';
            break;
        case 'zlib':
            echo 'zlib protocol do not allow';
            break;
        case 'ftp:':
            echo 'zip protocol do not allow';
            break;
        case 'phar':
            echo 'phar protocol do not allow';
            break;
        case 'ssh2':
            echo 'ssh2 protocol do not allow';
            break;
        case 'data':
            echo 'data protocol do not allow';
            break;
        case 'rar:':
            echo 'rar protocol do not allow';
            break;
        case 'ogg:':
            echo 'ogg protocol do not allow';
            break;
        case 'expe':
            echo 'expe protocol do not allow';
            break;
        case 'http':
            echo 'http protocol do not allow';
            break;
        case 'glob':
            echo 'glob protocol do not allow';
            break;
        default:
            if(!preg_match('/php|flag|zlib|ftp|phar|data|rar|ogg|expe|http|glob|ssh2|\(|\)|\[|\]|[0-9]|\,|\<|\>|\?|\/|\\\|\{|\[|\}|\]|\=|\+|\-|\_|\;|\:|\'|\"/i', $_GET['url'])){
     
                eval("include ".$_GET['url'].";");
            }else{
     
                die('error');
            }
            break;
    }
}else{
     
    highlight_file(__FILE__);
}

这里自己应该是通过非预期进行的。

payload:?url=`cat *`

这道题和自己之前出的那个红包题nl有一点像红包题nl
正规解法好像是通过包含日志文件进行getshell的

4 web 2(摇号入园)

从这道题自己学会了可以通过PHP中转进行连接mysql数据库。工具是adminer
网上有下载链接,直接下载通过蚁剑进行上传,链接数据库。
这里解释一下为什么自己使用navicat链接不上,这是因为一般在做题目中我们使用的环境是docker创建的环境,每一个环境相当于一个虚拟环境虚拟沙箱。而docker仅会将指定的端口映射到服务器环境上。比如说这个题,docker里可用端口有80和3306,但是映射到服务器上的只有80,所以要想连到数据库就需要docker内部的程序才行。就是PHP程序。
所以adminer刚刚就是通过PHP中转进行连接mysql数据库

下面就是这个题的解题过程
在这里插入图片描述通过这里使用蚁剑链接,好像使用其他的工具链接不上。
根据题目提示我们需要获得后台邮箱内容就需要获得数据库。
查看数据库配置文件 用户名ctf 密码ctf 数据库ctf 端口3306。
之后我们就上传 adminer 源代码
ctfshow菜鸡杯 部分wp_第3张图片然后进行访问url/adminer-4.7.7.php进行连接
ctfshow菜鸡杯 部分wp_第4张图片最后在kite_site_config表里面查看到flag
在这里插入图片描述
最后附上比赛成绩:师傅太强了
ctfshow菜鸡杯 部分wp_第5张图片

总结:
1.学习了crc校验和其暴破
2.学习了斐波那契数列和python的文件操作
3.学习了adminer工具进行PHP中转链接数据库
这次比赛还是学习了好多,感谢师傅们的耐心指导。其他的题目干不动了。过几天查看了wp在进行分析吧。

你可能感兴趣的:(ctfshow,ctfshow比赛)