sql注入攻击

SQL注入与简单的XSS

不羁岁月 提交于 2019-11-29 11:53:05
SQL注入的基本套路 本博客仅用于学习,只是一份网络安全的入门学习笔记 1)测试交互方法,判断浏览器提交数据和web服务器的交互方式 +get提交 提交的数据在url中显示 +post提交(表单提交) 没有在url中显示 2)判断提交变量的数据类型 +整形(int类型) id = 1 and 1=2 //让提交数据为false(假) 有交互显示则为整型(即输入后与加and之前显示的不一样) +字符型 id = 1 and 1=2 无交互显示,则进一步判断闭合方式 常见的闭合方法‘’,“”,(),(‘’),(“”)等 3)构造闭合(整型不需要) --+ 或者 # 4)在闭合中构造sql语句并判断数据库表的行数 确定显示位 union all select 1,2,3 5)在有显示的行输入需要回显的sql语句 爆数据库名 database() 表名 group_concat(table_name) from information_schema.tables where table_schema=‘your database’ 列名: group_concat(column_name) from information_schema.columns where table_name=‘your table’ and table_schema=‘your database’ 具体信息:

sql面试题整理

倾然丶 夕夏残阳落幕 提交于 2019-11-29 09:54:13
1、 10条SQL优化技巧 2、 58到家MySQL数据库开发规范 3、 java.sql.Date和java.util.Date的联系和区别 4、 Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式? 5、 MyBatis里面的动态Sql是怎么设定的?用什么语法? 6、 MYSQL如何优化?结合你的经验 7、 MySQL存储引擎- MyISAM与InnoDB区别 8、 MySQL数据库索引技巧与索引优化 9、 mysql的sql语句优化方法面试题总结 10、 Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些? 11、 Mysql的数据库表锁、行锁、页级锁 12、 oracle数据库笔试题:sql统计出有两门以上的课的分数在80分以上的学生的姓名和年龄? 13、 postgresql在order by时候联合索引失效 14、 sql Server中float、real、decimal(numeric)数据类型的区别 15、 sqlserver中char(n)、varchar(n)、text有什么区别? 16、 sqlserver中nchar(n)、nvarchar(n)、ntext有什么区别? 17、 sql优化 18、 SQL怎么优化执行效率更高? 19、 SQL笔试:Student学生表,Course 课程表,Sc选课表 20、 SQL笔试题

SQL注入

余生颓废 提交于 2019-11-29 08:36:44
我们先看一幅有意思的漫画: 相信大家对于学校们糟糕的网络环境和运维手段都早有体会,在此就不多做吐槽了。今天我们来聊一聊SQL注入相关的内容。 什么是SQL注入 SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是SQL注入方法。 SQL注入其实就是恶意用户通过在表单中填写包含SQL关键字的数据来使数据库执行非常规代码的过程。简单来说,就是数据「越俎代庖」做了代码才能干的事情。这个问题的来源是,SQL数据库的操作是通过SQL语句来执行的,而无论是执行代码还是数据项都必须写在SQL语句之中,这就导致如果我们在数据项中加入了某些SQL语句关键字(比如说SELECT、DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。 多言无益,我们拿真实的案例来说话。下面我们先使用SQLite建立一个学生档案表。 SQL操作实例 1 import sqlite3 2 3 # 连接数据库 4 conn = sqlite3.connect('test.db') 5 6 # 建立新的数据表 7 conn.executescript('''DROP TABLE IF EXISTS students; 8 CREATE TABLE students 9 (id INTEGER

代码审计思路

拜拜、爱过 提交于 2019-11-28 12:59:08
两大审计的基本方法 1. 跟踪用户的输入数据,判断数据进入的每一个代码逻辑是否有可利用的点,此处的代码逻辑可以是一个函数,或者是条小小的条件判断语句。 2. 根据不同编程语言的特性,及其历史上经常产生漏洞的一些函数,功能,把这些点找出来,在分析函数调用时的参数,如果参数是用户可控,就很有可能引发安全漏洞 1、寻找漏洞前准备理解 理解现在的 cms 大致可分为两种,单入口模式和多入口模式 .   多入口模式 cms : 每一个功能都 需要访问不同的文件。   单入口模式的 cms : MVC的开发出来的 So ,挖掘漏洞方式   1、 搜索一些获取用户输入数据的函数,来找到用户输入数据的源头,之后我们从这里为起点,跟踪数据的流向,分析在这整个过程中数据的处理情况,进而定位可能触发漏洞的点。   2、 搜索一些经常产生安全问题的函数,比如执行数 据库查询的函数,执行系统命令的函数,文件操作类函数等等,在通过回溯这些函数在被调用时参数,判断参数是否我们可控,进而定位漏洞点。 常用的正则 PHP \$_SERVER|\$_COOKIE|\$_REQUEST|\$_GET|\$_POST 获取用户输入 eval\(|assert\(|system\( 命令执行 require\(|require_once\(|include\(|include_once\( 文件包含 file_get

渗透之路基础 -- SQL注入

丶灬走出姿态 提交于 2019-11-28 11:32:23
目录 SQL注入 mysql注入(上) limit 有两个参数 limit 2,3 表示从2开始查3条 通过MySql内置数据库获取表名 通过MySql内置数据库获取表名对应的列名 mysql注入(中) SQL常用函数 常用十大报错函数 1.floor() 2.extractvalue() 3.updatexml() 4.geometrycollection() 5.multipoint() 6.polygon() 7.multipolygon() 8.linestring() 9.multilinestring() 10.exp() mysql注入文件操作(root权限) mysql注入(下) 提交方式注入 盲注攻击 insert注入 update注入 delete limit 注入 Access 联合及逐字猜解 注入工具 Access 常见复杂及问题注入 偏移注入:表名知道即可 一级偏移 二级偏移 经典二次注入 MSSQL注入点攻击分类 sa权限 db权限 public权限 @ SQL注入 mysql注入(上) ​ 获取字段数:order by x 去临界值 ​ 获取数据库名:database() ​ 获取数据库版本:version() ​ information_schema : mysql5.0版本以上自带数据库,记录当前mysql下的所有数据库名,表名,列名。 ​

mysql面试相关

旧城冷巷雨未停 提交于 2019-11-28 11:07:19
1、列举常见的关系型数据库和非关系型都有那些? 常见关系型数据库:mysql oracle db2 非关系型数据库:mongodb redis 2、MySQL常见数据库引擎及比较? 常用引擎: myisam:不支持事务,支持表锁 innodb:支持事务,支持行锁和表锁 3、简述数据三大范式? 第一:确保每列保持原子性,即每个字段必须是不可拆分的最小单元 例如:创建一个地址的字段时,就应该将其划分为省市区这三个字段,这就满足了上述的原子性。 第二:表中的每列都和主键相关,一个表里只能存在一种数据,不可把多种数据保存在同一张数据库表中。 例如:即订单里存在客户和商品的信息,建议将客户和商品的数据拆分开 即创建两张表 ,一个放订单和客户的信息,一个放订单和商品的信息! 第三:确保每列都和主键直接相关。而不是间接相关。 例如:订单数据表,将客户编号作为一个外键关联字段和订单表建立联系。 而不可以在订单表中添加客户的其他信息。(例如姓名,公司等) 4、什么是事务?MySQL如何支持事务? 是应用程序中一系列严密的操作,所有操作必须成功完成,否则该事务中每个操作都会被撤销。 mysql的事务:存在4个特性:acid 保证数据的安全 start transaction: try: update db set money=100 where name='erha'; update db set

mysqli-02

谁说胖子不能爱 提交于 2019-11-28 11:02:58
1、执行sql语句所产生的错误信息 echo $conn->error; 执行sql语句中的错误号 echo $conn->error; 受影响的行数 echo $conn->affected_rows; 2、关于结果集的 $result->field_count 查询到的列数 $result->feth_fields()获取结果集中列的信息 $result->num_rows()函数 获取结果集中行数的信息 3、sql注入式攻击 ‘’ or ‘1’=‘1’– 4、mysqli增删改预处理方式 $sql="insert into student(name,sex,age) values(?,?,?,?) "; $smts=$conn->prepare($sql); $smts->bind_param("ssi",$name,$sex,$age); $smts->execute(); 可以解决sql注入的问题。 转义语句特殊符号 5、 $sql="select * from users where username=? and userpwd=?"; 1、$smts=$conn->prepare($sql); 加载sql语句 2、$smts->bind_param("ss",$name,$pwd); 替换占位符 3、$result=$smts->execute(); 执行 来源:

什么是SQL注入?什么是XSS攻击?什么是CSRF攻击?

房东的猫 提交于 2019-11-28 07:25:33
1. XSS ( Cross Site Script ,跨站脚本攻击) 是向网页中注入恶意脚本在用户浏览网页时在用户浏览器中执行恶意脚本的攻击方式。 1.1 跨站脚本攻击分有两种形式: 反射型攻击(诱使用户点击一个嵌入恶意脚本的链接以达到攻击的目标,目前有很多攻击者利用论坛、微博发布含有恶意脚本的URL就属于这种方式) 持久型攻击(将恶意脚本提交到被攻击网站的数据库中,用户浏览网页时,恶意脚本从数据库中被加载到页面执行,QQ邮箱的早期版本就曾经被利用作为持久型跨站脚本攻击的平台)。 1.2 防范 XSS 主要有两方面 消毒(对危险字符进行转义)和HttpOnly(js无法获取Cookie数据) - SQL注入攻击是注入攻击最常见的形式(此外还有OS注入攻击(Struts 2的高危漏洞就是通过OGNL实施OS注入攻击导致的)),当服务器使用请求参数构造SQL语句时,恶意的SQL被嵌入到SQL中交给数据库执行。SQL注入攻击需要攻击者对数据库结构有所了解才能进行,攻击者想要获得表结构有多种方式: 如果使用开源系统搭建网站,数据库结构也是公开的(目前有很多现成的系统可以直接搭建论坛,电商网站,虽然方便快捷但是风险是必须要认真评估的); 错误回显(如果将服务器的错误信息直接显示在页面上,攻击者可以通过非法参数引发页面错误从而通过错误信息了解数据库结构,Web应用应当设置友好的错误页

什么是XSS攻击?什么是SQL注入攻击?什么是CSRF攻击?

大城市里の小女人 提交于 2019-11-28 07:25:15
1. XSS(Cross Site Script,跨站脚本攻击) 是向网页中注入恶意脚本在用户浏览网页时在用户浏览器中执行恶意脚本的攻击方式。 1.1跨站脚本攻击分有两种形式: 反射型攻击(诱使用户点击一个嵌入恶意脚本的链接以达到攻击的目标,目前有很多攻击者利用论坛、微博发布含有恶意脚本的URL就属于这种方式) 持久型攻击(将恶意脚本提交到被攻击网站的数据库中,用户浏览网页时,恶意脚本从数据库中被加载到页面执行,QQ邮箱的早期版本就曾经被利用作为持久型跨站脚本攻击的平台)。 1.2防范XSS主要有两方面 消毒(对危险字符进行转义)和HttpOnly(js无法获取Cookie数据) - SQL注入攻击是注入攻击最常见的形式(此外还有OS注入攻击(Struts 2的高危漏洞就是通过OGNL实施OS注入攻击导致的)),当服务器使用请求参数构造SQL语句时,恶意的SQL被嵌入到SQL中交给数据库执行。SQL注入攻击需要攻击者对数据库结构有所了解才能进行,攻击者想要获得表结构有多种方式: 如果使用开源系统搭建网站,数据库结构也是公开的(目前有很多现成的系统可以直接搭建论坛,电商网站,虽然方便快捷但是风险是必须要认真评估的); 错误回显(如果将服务器的错误信息直接显示在页面上,攻击者可以通过非法参数引发页面错误从而通过错误信息了解数据库结构,Web应用应当设置友好的错误页

DVWA SQL Injection(Blind) 通关教程

送分小仙女□ 提交于 2019-11-28 00:25:28
SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高。目前网络上现存的SQL注入漏洞大多是SQL盲注。 手工盲注思路 手工盲注的过程,就像你与一个机器人聊天,这个机器人知道的很多,但只会回答“是”或者“不是”,因此你需要询问它这样的问题,例如“数据库名字的第一个字母是不是a啊?”,通过这种机械的询问,最终获得你想要的数据。 盲注分为基于布尔的盲注、基于时间的盲注以及基于报错的盲注,这里由于实验环境的限制,只演示基于布尔的盲注与基于时间的盲注。 下面简要介绍手工盲注的步骤(可与之前的手工注入作比较): 1.判断是否存在注入,注入是字符型还是数字型 2.猜解当前数据库名 3.猜解数据库中的表名 4.猜解表中的字段名 5.猜解数据 再介绍一下盲注中常用的几个函数: substr() count() ascii() length() left() 下面对四种级别的代码进行分析。 Low Security Level <?php if( isset( $_GET[ 'Submit' ] ) ) { // Get input $id = $_GET[ 'id' ]; // Check database