首页 > 数据库 >kali 漏洞篇-SQL注入 学习笔记

kali 漏洞篇-SQL注入 学习笔记

时间:2022-08-22 16:25:43浏览次数:77  
标签:语句 -- kali 数据库 漏洞 SQL admin 注入


1.SQL注入的概念

SQL注入 (SQL Injection):通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。

具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

首先让我们了解什么时候可能发生SQL Injection。

假设我们在浏览器中输入URL www.sample.com,由于它只是对页面的简单请求无需对数据库动进行动态请求,所以它不存在SQL Injection,当我们输入www.sample.com?testid=23时,我们在URL中传递变量testid,并且提供值为23,由于它是对数据库进行动态查询的请求(其中?testid=23表示数据库查询变量),所以我们可以该URL中嵌入恶意SQL语句。

 

2.SQL注入的安全隐患

一旦应用中存在sql注入漏洞,就可能会造成如下影响:

    1. 数据库内的信息全部被外界窃取。
    2. 数据库中的内容被篡改。
    3. 登录认证被绕过
    4. 其他,例如服务器上的文件被读取或修改/服务上的程序被执行等。

 

3. SQL注入产生的过程

如果一个网站使用数据库来存储用户登录信息,并执行如下的SQL语句进行登录尝试: select * from users where username='farmsec' and password='123456' 在这种情况下,攻击者可注入用户名或密码字段,以修改应用程序执行的查询,从而破坏它的逻辑。例如攻击者知道应用程序的username为farmsec,那么他就可以通过提交一下用户名和任意密码,以管理员的身份登录: farmsec' -- 应用程序将执行以下查询: select * from users where username='farmsec' --' and password='sadfas' 于是乎这个查询完全避开了密码检查。

这也引出了经典的万能密码问题。

有些网站的登录页面其背后的逻辑就是上文中的语句。

我们可以在密码部分注入:'or 1=1 --

那么整个句子就变成:

​ select * from users where username='farmsec' and password=''or 1=1 --

因为1永远等于1,登录验证就会被绕过。

一些常见的万能密码形式:

'or'='or'
admin'-- 
admin' or 4=4-- 
admin' or '1'='1'-- 
"or "a"="a
admin' or 2=2#
a' having 1=1#
a' having 1=1-- 
admin' or '2'='2
')or('a'='a
or 4=4--

 

4.SQL注入的分类

SQL注入根据不同的分类方法会有多种类别。但依照最大的区别特征而言,主要分为显注和盲注两类。

显注是指,当攻击者拼接SQL语句注入时,网站会把SQL语句的执行结果显示在网页上。

盲注与显著相反,网站不会把SQL语句的执行结果显示出来。盲注还分为时间性盲注和布尔型两者,这会在后文中详述。

 

5.SQL注入案例

5.1 显注案例

登录访问DVWA,默认用户名:admin密码:password,登录之后,将dvwa的安全级别调成low,low代表安全级别最低,存在较容易测试的漏洞。 1、找到SQl Injection 选项,测试是否存在注入点,这里用户交互的地方为表单,这也是常见的SQL注入漏洞存在的地方。正常测试,输入1,可以得到如下结果

 

标签:语句,--,kali,数据库,漏洞,SQL,admin,注入
From: https://www.cnblogs.com/Cong0ks/p/16613183.html

相关文章

  • 解决死锁之路 - 常见 SQL 语句的加锁分析
    解决死锁之路-常见SQL语句的加锁分析这篇博客将对一些常见的SQL语句进行加锁分析,看看我们平时执行的那些SQL都会加什么锁。只有对我们所写的SQL语句加锁过程了......
  • sql语句左链接left join--3张表关联
    表A---------------------------------关联第一张表B-----------------------关联第二张表cselect*from表名Aleftjoin 表B  on  表A字段=表B的idlef......
  • postgresql去重,只取时间最新的一条数据【转】
     昵称: zjyss原文地址:https://www.cnblogs.com/zjyss/p/15701439.html 1.可以循环表取出相同字段的第一条去建立临时表或视图2.使用pg的row_number函数对相同字段记......
  • 15.文件包含漏洞利用
    一.利用前提:(1)存在一个文件包含漏洞点(2)我们有其他可控点可以写入到本地文件(3)写入的本地文件路径可知或可预测 二.包含web日志前提通过信息搜集,得到了相关的服务器信......
  • Mysql Order By 字符串排序,1 10 2 20,以字符串排序,不是使用数字排序
    一、问题描述:Mysql排序时如果用的的字段为字符串型的,排序规则是这样的:如1,10,2,20,3,4,5,这种排序是按照字符从第一个字符开始比较出来的,但不是我想要的,我想要的是:1,2,3,4,5……,10,20......
  • SQL查询重复数据
    1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断select*from表名称wherepeopleIdin(select字段名from表名称groupby字段名havingcount(字......
  • lnmp重新安装mysql
    安装mysql好长时间,一直没去管,后来一直频繁重启,各种网上找方案去解决,最后问题太异常,一顿操作猛如虎之后把mysql彻底搞垮,无奈只能进行重装。whereismysqlmysql:/usr/bin/......
  • 详解MySQL游标
    1、什么是游标(或光标)虽然我们也可以通过筛选条件WHERE和HAVING,或者是限定返回记录的关键字LIMIT返回一条记录,但是,却无法在结果集中像指针一样,向前定位一条记录、向后......
  • mysql索引失效的情况及解决
    原文出处:https://www.cnblogs.com/aspirant/p/16166851.html关于explain的详解:MySQLEXPLAIN详解 经典问题:1、如果A,B两列都有索引,那么 select*fromTablewh......
  • Linux启动Mysql出现command not found的解决方法
    当在Linux中安装Mysql后,不管是在根目录下还是在安装mysql的bin下执行mysql-uroot-p结果都是commandnotfound,如下图所示:问题原因,linux默认启动Mysql,会在根目录下的bin中......