web刷题记录(3)

[NISACTF 2022]checkin

简单的get传参,好久没做过这么简单的题了

王德发?????!,看了源代码以后,本来以为是js脚本的问题,但是禁用js脚本没用,看了大佬的wp以后才发现,是有字符被隐藏了,具体推测是因为对高亮的使用,这里第二段注释部分颜色不对。(url通过show_source函数在高亮源代码时按照php.ini中的设置来渲染)

而且,鼠标扫前面,会有后面的代码被同步

这里尝试复制源代码到winhex里面看看。

确实存在,将这些特殊符号用URL编码以后再次进行传参,这里用到的知识点就是特殊字符识别。

payload

ahahahaha=jitanglailo&%E2%80%AE%E2%81%A6%55%67%65%69%77%6F%E2%81%A9%E2%81%A6%63%75%69%73%68%69%79%75%61%6E=%E2%80%AE%E2%81%A6%20%46%6C%61%67%21%E2%81%A9%E2%81%A6%4E%31%53%41%43%54%46

得到了flag

[UUCTF 2022 新生赛]ez_rce

进来就是一个正则啊,看来这题就是各种过滤了·

        这种题我觉得一般就是过滤了平时比较常用的OS命令,然后要用点稍微冷门的命令或者格式来进行绕过。然后这里有就是php的函数以及讲解(PHP中的输出:echo、print、printf、sprintf、print_r和var_dump-腾讯云开发者社区-腾讯云)

然后就是反引号的作用,之前也遇到过,但是没有仔细的考虑过,这里做出介绍:

1.反引号常见在SQL语句中来包含关键字,比如

$sql = "select `user`,username from `Content`";
  此SQL中有反引号,也没有反引号
  
   加上反引号就不会有因为字段是关键字而出错的问题。
  
   为了保险起见,我们建议在所有字段中都加上反引号,即上面的SQL建议写成

$sql = "select `user`,`username` from `Content`";
  
  2.反引号还有种功能是执行系统命令,比如:echo `dir d:\php`;注意,此句中的引号是反引号,而不是单引号。此句在足够权限的系统环境中,将列举D盘PHP目录的一些文件信息。
  
  3.注:反引号位于键盘左边Esc下面,数字1按钮前,Tab上。
  
  4.例如:SELECT `setting` FROM `$tablename` WHERE $where LIMIT 1

        然后呢,这里的命令执行没有过滤 <> ? \/ 所以可以 ?>闭合(这个闭合针对括号也被过滤,但是这里的括号并没有被过滤,所以还是可以用括号进行过滤)

        构造第一步payload:

?code=printf(`l\s `);

这里用var_dump也可以

看一下根目录,找到了和flag有关的文件

查看的话 ,一种是使用被过滤的字符,但是要用到/,还有一种,也可以用没有被过滤的命令,比如rev和nl(这里的rev是逆序输出,所以输出的flag是反的,需要人为改正一下,或者跑个脚本,有兴趣的可以试试,我看了一下,就没有复制上)。这里因为第一种很简单,所以采用第二种来示例:

得到了flag

[SWPUCTF 2022 新生赛]ez_ez_php(revenge)

进来以后,发现应该是和伪协议有关

尝试读取flag.php

应该是读取到了,尝试解码看看

得到了一段php代码,给了关键信息,大概意思应该是说,真正的flag在'/flag'下,不是flag.php下,

尝试修改以后再次读取

成功得到了flag

 [CISCN 2019华东南]Web11

看起来都是比其他题吊一点

看到了提示

根据下面的三张图提示,可以看出是smart ssti,在XFF处构造payload

介绍一下smart

        smart是php的模板引擎,模板引擎的作用就是分离前端页面和数据的,题目中显示API的URL由于环境的原因无法使用,但我们的IP依旧显示在了页面的右上角,且根据它的提示XFF我们很容易想到,在X-Forwarded-For里构造ssti.然后呢ssti,我也写过相关的博客,详细内容,可以在这里找关于ssti(简介)-CSDN博客

         在利用SSTI注入时,在Smarty中一般用{php}{/php}标签来进行包裹执行php语句,在查询wp和一些资料后,得知{php}标签被强烈建议不使用,只有在SmartyBC中可用;

        然后{if}标签和php中的if判断类似,而且可以正常使用php中的函数和符号,不过在使用时,要配上{/if}

        然后是php的没必要去,模板引擎的作用就是分离前端页面和数据的,题目中显示API的URL由于环境的原因无法使用,但我们的IP依旧显示在了页面的右上角,且根据它的提示XFF我们很容易想到,在X-Forwarded-For里构造ssti:payload

        抓包,改xff

 经典${7*7}回显是$49

 进行下一步判断7{*comment*}7

基本可以判断是是Smarty类型,可以开始包裹php语句进行查询了(除了加个{if}标签,还是用的php语句)

找到了flag相关文件,查看

找到了flag

[LitCTF 2023]这是什么?SQL !注一下 !

这个图我都不敢放加载完的

抓包一下,搞sqlmap,时间盲注,布尔盲注

爆库

感觉应该和ctf有关,看看信息

光是用户名的话,可能没什么用,看看另外一个ctf的库里面有什么

运气很好,找到了flag相关信息,接着往下爆破

 爆字段

得到了flag

[HNCTF 2022 Week1]easy_html

提示了cookie里面有东西

 f12查看

 

%2f是url编码,说明这里给了有关文件地址的提示 ,即f14g.php,访问一下看看

让输入手机号,但是位数被限制了,限制到了十位

然后就弹了这个提示

f12改一下位数限制 ,再登陆

得到了flag

[NISACTF 2022]babyupload 

传🐎啊,我最熟了,先上个图片🐎看看·

传不上,看看源码

给了提示,意思是要叫我下个什么东西,看看

zip文件

解压以后里面是个python文件

这里是全部代码

from flask import Flask, request, redirect, g, send_from_directory
import sqlite3
import os
import uuid

app = Flask(__name__)

SCHEMA = """CREATE TABLE files (
id text primary key,
path text
);
"""


def db():
    g_db = getattr(g, '_database', None)
    if g_db is None:
        g_db = g._database = sqlite3.connect("database.db")
    return g_db


@app.before_first_request
def setup():
    os.remove("database.db")
    cur = db().cursor()
    cur.executescript(SCHEMA)


@app.route('/')
def hello_world():
    return """<!DOCTYPE html>
<html>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="file">
    <input type="submit" value="Upload File" name="submit">
</form>
<!-- /source -->
</body>
</html>"""


@app.route('/source')
def source():
    return send_from_directory(directory="/var/www/html/", path="www.zip", as_attachment=True)


@app.route('/upload', methods=['POST'])
def upload():
    if 'file' not in request.files:
        return redirect('/')
    file = request.files['file']
    if "." in file.filename:
        return "Bad filename!", 403
    conn = db()
    cur = conn.cursor()
    uid = uuid.uuid4().hex
    try:
        cur.execute("insert into files (id, path) values (?, ?)", (uid, file.filename,))
    except sqlite3.IntegrityError:
        return "Duplicate file"
    conn.commit()

    file.save('uploads/' + file.filename)
    return redirect('/file/' + uid)


@app.route('/file/<id>')
def file(id):
    conn = db()
    cur = conn.cursor()
    cur.execute("select path from files where id=?", (id,))
    res = cur.fetchone()
    if res is None:
        return "File not found", 404

    # print(res[0])

    with open(os.path.join("uploads/", res[0]), "r") as f:
        return f.read()


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

 

我们直接看最关键的def uploaddef file里的内容,意思是,上传的文件不能有后缀名,且文件名前会拼接一个前缀upload/,使得输出的文件只能是在目录upload/下的,这里就涉及到os.path.join()的绝对路径拼接漏洞:

绝对路径拼接漏洞

os.path.join(path,*paths)函数用于将多个文件路径连接成一个组合的路径。第一个函数通常包含了基础路径,而之后的每个参数被当作组件拼接到基础路径之后。

然而,这个函数有一个少有人知的特性,如果拼接的某个路径以 / 开头,那么包括基础路径在内的所有前缀路径都将被删除,该路径将视为绝对路径,若我们使得res[0]='/flag',则可以读取到根目录下的flag文件,因此利用bp抓包,修改文件名为/flag即可: 

所以若使得res[0]='/flag',则可以读取到根目录下的flag文件,因此利用bp抓包,修改文件名为/flag即可:

得到路径以后,访问即可

得到了flag

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/682329.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

游戏缺失xinput1_3.dll怎么修复,总结几种有效的修复方法

在现代科技日新月异的时代&#xff0c;电脑已经成为我们生活和工作中不可或缺的工具。然而&#xff0c;由于各种原因&#xff0c;电脑可能会出现一些错误或问题&#xff0c;其中之一就是找不到xinput13.dll文件&#xff0c;这个问题会导致软件或者游戏无法正常启动运行&#xf…

认识微服务,认识Spring Cloud

1. 介绍 本博客探讨的内容如下所示 什么是微服务&#xff1f;什么是springcloud&#xff1f;微服务和springcloud有什么关系&#xff1f; 首先&#xff0c;没有在接触springcloud之前&#xff0c;我写的项目都是单体结构&#xff0c; 但随着网站的用户量越来越大&#xff0c;…

【云原生】Kubernetes----Ingress对外服务

目录 引言 一、K8S对外方式 &#xff08;一&#xff09;NodePort 1.作用 2.弊端 3.示例 &#xff08;二&#xff09;externalIPs 1.作用 2.弊端 3.示例 &#xff08;三&#xff09;LoadBalancer 1.作用 2.弊端 &#xff08;四&#xff09;Ingress 二、Ingress的…

kubeedge v1.17.0部署教程

文章目录 前言一、安装k8s平台二、部署kubeedge1.部署MetalLB(可选)2.cloud3.edge4. 部署nginx到edge端 总结参考 前言 本文主要介绍kubeedge v1.17.0的安装过程 主要环境如下表 应用版本centos7.0k8s1.28.2kubeedge1.17.0docker24.0.8centos7.0 一、安装k8s平台 本文主要参…

JavaWeb1 Json+BOM+DOM+事件监听

JS对象-Json //Json 字符串转JS对象 var jsObject Json.parse(userStr); //JS对象转JSON字符串 var jsonStr JSON.stringify(jsObject);JS对象-BOM BOM是浏览器对象模型&#xff0c;允许JS与浏览器对话 它包括5个对象&#xff1a;window、document、navigator、screen、hi…

【QT5】<总览三> QT常用控件

文章目录 前言 一、QWidget---界面 二、QPushButton---按钮 三、QRadioButton---单选按钮 四、QCheckBox---多选、三选按钮 五、margin&padding---边距控制 六、QHBoxLayout---水平布局 七、QVBoxLayout---垂直布局 八、QGridLayout---网格布局 九、QSplitter---…

Base64前端图片乱码转换

title: Base64码乱转换 date: 2024-06-01 20:30:28 tags: vue3 后端图片前端显示乱码 现象 后端传来一个图片&#xff0c;前端能够接收&#xff0c;但是console.log()后发现图片变成了乱码&#xff0c;但是检查后台又发现能够正常的收到了这张图片。 处理方法 笔者有尝试将…

身份证数字识别DBNET

采用DBNET检测身份证数字所在区域&#xff0c;然后使用切割字符的方法&#xff0c;使用PCASVM训练和分类&#xff0c;支持C/PYTHON开发&#xff0c;只需要OPENCV 身份证数字识别DBNETPCASVM

2004NOIP普及组真题 3. FBI树

线上OJ 地址&#xff1a; [04NOIP普及组] FBI树 本题的意思是&#xff1a;给定一个 01字符串 &#xff08;对应一棵完全二叉树的最后一层叶子节点&#xff09;&#xff0c;将树的每一个节点的值用字母“F、B、I”表示。规则&#xff08;如下图所示&#xff09;为&#xff1a; 1…

【AI大模型】Transformers大模型库(三):特殊标记(special tokens)

目录​​​​​​​ 一、引言 二、特殊标记&#xff08;special tokens&#xff09; 2.1 概述 2.2 主要功能 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库&#xff0c;为huggingface上数以万计的预训练大模型提供预测、训练等服…

证件照太大了怎么压缩到100k?6个软件教你快速进行压缩

证件照太大了怎么压缩到100k&#xff1f;6个软件教你快速进行压缩 压缩证件照大小通常需要使用专门的图片压缩工具或者图片编辑软件。以下是六款常用的软件&#xff0c;它们可以帮助你快速压缩证件照大小到100KB以内&#xff1a; 1.迅捷压缩&#xff1a;这是一款图片压缩工具…

【javaEE初阶】

&#x1f308;&#x1f308;&#x1f308;关于java ⚡⚡⚡java的由来 我们这篇文章主要是来介绍javaEE&#xff0c;一般称为java企业版&#xff0c;实际上java的历史可以追溯到上个世纪90年代&#xff0c;当时主要的语言主流的还是C语言和C&#xff0c;但是在那个时期嵌入式初…

MySQL之查询性能优化(六)

查询性能优化 查询优化器 9.等值传播 如果两个列的值通过等式关联&#xff0c;那么MySQL能够把其中一个列的WHERE条件传递到另一列上。例如&#xff0c;我们看下面的查询: mysql> SELECT film.film_id FROM film-> INNER JOIN film_actor USING(film_id)-> WHERE f…

K8S==ingress配置自签名证书

安装openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 生成证书 openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout example.local.key -out example.local.crt -subj "/CNexample.local/Oexample.local"创建K8S secr…

揭秘c语言储存类别

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文将整理c语言的储存类型的知识点 储存类型概念 描述:用于解决内存开辟与解放的时间的问题。跟作用域没啥关系。 但是呢&#xff0c;他也是能影响到程序的运行的&#xff0c;所以是很关键的。 类型: auto :自…

htb_solarlab

端口扫描 80,445 子域名扫描 木有 尝试使用smbclient连接445端口 Documents目录可查看 将Documents底下的文件下载到本地看看 xlsx文件里有一大串用户信息&#xff0c;包括username和password 先弄下来 不知道在哪登录&#xff0c;也没有子域名&#xff0c;于是返回进行全端…

flyfish3.0.0配置避坑

1.基础环境准备篇 doc/01-基础环境准备篇.md 云智慧/FlyFish - Gitee.com 使用教程里给出的java环境时&#xff0c;可以显示java版本&#xff0c;但是不能显示Maven的版本 改为&#xff1a; export NODE_HOME/usr/local/node/node-v14.19.3-linux-x64 export PATH$NODE_HOME…

C语言—字符函数和字符串函数

1.字符分类函数 C语言中有一系列的函数是专门做字符分类的&#xff0c;也就是一个字符是属于什么类型的字符的。 这些函数的使用都需要包含一个头文件 ctype.h。 例&#xff1a;将一句话中的小写字母改成大写字母。 2.字符转换函数 头文件&#xff1a;ctype.h C语言提供了2…

不是,有了这套IP地址管理开源系统谁还用Excel啊

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 中午好&#xff0c;我的网工朋友。 作为网工的我们想必都很清楚IP地址管理的重要性以及其复杂性&#xff0c;传统的Excel表格虽然在某些情况下能…

搭建大型分布式服务(三十九)SpringBoot 整合多个kafka数据源-支持Aware模式

系列文章目录 文章目录 系列文章目录前言一、本文要点二、开发环境三、原项目四、修改项目五、测试一下五、小结 前言 本插件稳定运行上百个kafka项目&#xff0c;每天处理上亿级的数据的精简小插件&#xff0c;快速上手。 <dependency><groupId>io.github.vipjo…