SQL注入学习「建议收藏」

SQL注入学习「建议收藏」SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。学习目的:能找到注入点能判断数据库是什么类型能绕过各种过滤SQL注入平台层注入原因:数据库平台漏洞或数据库配置不安全代码层注入原因:程序员对输入未进行细致地过滤,从而执行了非法的数据查询SQL注入漏洞的方法数字注入字符串注入SQL注入方法有很多种,按数据类型可以分为

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因是程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。

学习目的:
能找到注入点
能判断数据库是什么类型
能绕过各种过滤

SQL注入
平台层注入
原因:数据库平台漏洞或数据库配置不安全
代码层注入
原因:程序员对输入未进行细致地过滤,从而执行了非法的数据查询
SQL注入漏洞的方法
数字注入
字符串注入

SQL注入方法有很多种,
按数据类型可以分为数字型、字符型和搜索型
按提交方式可分为get型,post型,cookie型和http请求头注入
按执行效果有可以分为报错注入、联合查询注入、盲注和堆查询注入,其中盲注又可分为基于bool的和基于时间的注入。
从查询语句及可看出来这里是字符型的注入同时也是get型注入和表单注入,数字型注入查询语句为:select * from user where id=1,搜索型注入为查询语句为:select * from user where search like ‘%1%’。

ssh连接
用户名: root
密码:123456
打开mysql 的命令行客户端,连接数据库(或者使用靶机连接数据库)(我用的BUUCTF)
语句:mysql -u root -p
用户名:root
密码:root

最基本的sql语句 查增删改
show databases;查看数据库
creat databases test;创建一个名为test 数据库
use test; 切换到(使用)当前数据库
create table users(id int(11),name varchar(255));创建一个名为users的表,其中有两列id和name
show tables;展示数据库中已有的表
desc users;展示表结构
insert into users values(1,’lezhun ‘),(2,‘tea’); 插入数据
select * from users; 查询
select * from users order by id desc;id 列降序查询
select * from users limit a offset b;b 起始(从0开始,类比数组)查询 a 行

修改
update
update users set name =‘dsy’ where id=1;将id为1的name更改为dsy

删除
delete
delete from users where is =1; 删除id为1的记录

sql注入漏洞
漏洞起源:开发者将外来参数拼接到SQL语句中
终结漏洞:1.对输入的参数过滤(基本不用) 2.使用预编译语句,外来参数作为语句的参数传入(常用)

F12 network name headers

.php?id=1’ or ‘1’=’1
.php?id=1 or 1=1
,说明有SQL注入漏洞存在
测试漏洞是否存在

要从数据库中拉取数据的话,首先要查询语句里面用了多少列数据(用union联合查询)

1.数字注入
在浏览器地址栏输入:/backend/content_detail.php?id=1,这是一个get型接口,发送这个请求相当于调用一个查询语句, 正常情况下,应该返回一个id=1的文章信息,如果输入:/backend/content_detail.php?id=-1 or 1 =1,这就是一个SQL注入攻击了,可能会返回所有文章的相关信息。

这是因为,id = -1永远是false,1=1永远是true,所有整个where语句永远是ture,所以where条件相当于没有加where条件,那么查询的结果相当于整张表的内容

2.字符串注入

用户名:
密码:
提交

出现以上界面的是一个post请求,登录时调用接口study.us/sql/login.html,首先连接数据库,然后后台对post请求参数中携带的用户名、密码进行参数校验,即sql的查询过程。
假设正确的用户名和密码为lezhun和123456,输入正确的用户名和密码、提交,相当于调用了以下的SQL语句: select * from user where username = ‘lezhun’ and password =‘123456’

用户名:lezhun
密码:123456
提交

由于用户名和密码都是字符串,SQL注入方法即把参数携带的数据变成mysql中注释的字符串。mysql中有2种注释的方法:
(1) ‘#’ , ‘#’ 后所有的字符串都会被当成注释处理 常用于SQL注入万能语句

用户名输入:lezhun’#(单引号闭合lezhun左边的单引号),密码随意输入,如:111,然后点击提交按钮。等价于SQL语句: select * from user where username = ‘lezhun’#’ and password = ‘111’
‘#‘后面都被注释掉了,相当于:select * from user where username = ‘lezhun’
(2))’– ’ (–后面有个空格):’– ‘后面的字符串都会被当成注释处理

用户名输入:user’– (–后面有个空格,单引号闭合user左边的单引号),密码随意输入,如:‘111’,然后点击提交按钮。等价于SQL语句:
select * from user where username = ‘lezhun’– ‘and password = ‘111’
select * from user where username = ‘lezhun’– ‘and password = ‘1111’
‘– ‘后面都被注释掉了,相当于:
select * from user where username = ‘lezhun’
这两种可用于不知道正确密码就可以直接登录用户的账号。

SQL注入万能语句 ’ or 1=1# ,绕开登录密码,直接进入。

判断是否存在SQL注入的方法:在url或者表单中输入一个单引号或者其他特殊符号,页面出现错误说明此页面存在SQL注入,如果页面正常显示说明有字符被过滤或者不存在注入。
若存在注入,判断注入类型的方法:在url或者表单中输入0 or 1,如果可以查到数据,说明是数字型注入,如果输入0’or 1#,查到数据说明是字符型注入。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171518.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Using MSAgent to Scan the Start Menu 选择自 wm_ni 的 Blog

    Using MSAgent to Scan the Start Menu 选择自 wm_ni 的 BlogNotethiscodewillignoreduplicateshortcuts.ForexampleIhave4or5shortcutsinmyStartMenuthatarenamed”Readme.txt.”Onlythefirstinstanceofthesewillgetaddedtothecommandsallot

  • Ubuntu安装和配置ssh

    Ubuntu安装和配置ssh因为配置pypbc环境,需要windows系统下PycharmSSH连接虚拟机python环境1.安装ssh服务器sudoaptinstallopenssh-server2.安装ssh客

  • 解决Oracle数据库1521端口telnet不通问题

    解决Oracle数据库1521端口telnet不通问题现象:服务器的ip地址可以ping通,但是安装oracle过程中的指定的“1521”端口telnet不通过解决办法:1、确保防火墙对1521端口开启; 2、修改oracle安装之后的文件tnsnames.ora(F:\install\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora)中“HOST”的值为”计算机全名“(桌面属性\高级

  • Java cas原理_java cas原理

    Java cas原理_java cas原理CASCAS:CompareandSwap,翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文先从CAS的应用说起,再深入原理解析。CAS应用CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。非阻塞算

    2022年10月16日
  • 五角大楼仍然使用 SHA-1 证书

    五角大楼仍然使用 SHA-1 证书

  • 火星坐标系统_怎样算自己的上升星座

    火星坐标系统_怎样算自己的上升星座其原理是这样的:保密局开发了一个系统,能将实际的坐标转换成虚拟的坐标。所有在中国销售的数字地图必须使用这个系统进行坐标转换之后方可上市。这是生产环节,这种电子地图被称为火星地图。在使用环节,GPS终端

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号