sql注入

.NET平台下开源框架

生来就可爱ヽ(ⅴ<●) 提交于 2020-01-20 08:36:15
一、AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架。Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖配置文件的方式。这种部署方面(aspects)的方法帮助缺少经验的开发人员提高开发效率。 NKalore是一款编程语言,它扩展了C#允许在.net平台使用AOP。NKalore的语法简单、直观,它的编译器是基于Mono C#编译器(MCS)。NKalore目前只能在命令行或#Develop内部使用。NKalore兼容公共语言规范CLS(Common Language Specification),它可以在任何.NET开发环境中使用,包括微软的Visual Studio .NET。 PostSharp读取.NET字节模块,转换成对象模型。让插件分析和转换这个模型并写回到MSIL。PostSharp使开发程序分析应用程序容易得像分析代码规则和设计模式,它使程序开发的思想变革为面向方面软件开发(AOSD/AOD)思想。 AspectDNG的目标是为.NET开发人员提供简单而功能强大的AOP-GAOP实现。它效仿java下的开源工具AspectJ 和 Spoon,成熟程度也很接近它们。 RAIL(Runtime Assembly Instrumentation Library) 开源项目可以在C

MySQL——JDBC

爱⌒轻易说出口 提交于 2020-01-19 16:47:22
1、数据库驱动 驱动:声卡,显卡、数据库 我们的程序会通过 数据库 驱动,和数据库打交道! 2、 JDBC SUN 公司为了简化 开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称 JDBC 这些规范的实现由具体的厂商去做~ 对于开发人员来说,我们只需要掌握 JDBC 接口的操作即可! java.sql javax.sql 还需要导入一个数据库驱动包 mysql-connector-java-5.1.47.jar 3、第一个JDBC 程序 创建测试数据库 CREATE DATABASE jdbcStudy CHARACTER SET utf8 COLLATE utf8_general_ci; USE jdbcStudy; CREATE TABLE users( id INT PRIMARY KEY, NAME VARCHAR(40), PASSWORD VARCHAR(40), email VARCHAR(60), birthday DATE ); INSERT INTO users(id,NAME,PASSWORD,email,birthday) VALUES(1,'zhansan','123456','zs@sina.com','1980-12-04'), (2,'lisi','123456','lisi@sina.com','1981-12-04'

SQL Server 数据库性能优化

不想你离开。 提交于 2020-01-19 03:23:02
1. 查看执行时间和cpu set statistics time on select * from Bus_DevHistoryData set statistics time off 执行后在消息里可以看到 2. 查看查询对I/O的操作情况 set statistics io on select * from Bus_DevHistoryData set statistics io off 执行之后的结果: 扫描计数:索引和表执行次数 逻辑读取:数据缓存中读取的页数 物理读取:从磁盘中读取的页数 预读:查询过程中,从磁盘放入缓存的页数 lob逻辑读取:从数据缓存中读取image、text、ntext或大型数据的页数 lob物理读取:从磁盘中读取image、text、ntext或大型数据的页数 lob预读:查询过程中,从磁盘放入缓存的image、text、ntext或大型数据的页数 如果物理读取次数和预计次数比较多,可以使用索引进行优化。 上述两种信息的查看如果不想写sql,可以通过设置完成: 工具->选项 3. 查看执行计划 选中查询语句,点击 一、数据库设计优化 1、不要使用游标。 使用游标不仅占用内存,而且还用不可思议的方式锁定表,它们可以使DBA所能做的一切性能优化等于没做。游标里每执行一次fetch就等于执行一次select。 2、创建适当的索引

第1课:SQL注入原理深度解析

烈酒焚心 提交于 2020-01-19 01:50:49
对于Web应用来说,注射式攻击由来已久,攻击方式也五花八门,常见的攻击方式有 SQL注射 、 命令注射 以及新近才出现的 XPath注射 等等。本文将以SQL注射为例,在源码级对其攻击原理进行深入的讲解。 一、注射式攻击的原理 注射式攻击的根源在于,程序命令和用户数据(即用户输入)之间没有做到泾渭分明。这使得攻击者有机会 将程序命令当作用户输入的数据提交给Web程序 ,以发号施令,为所欲为。 为了发动注射攻击,攻击者需要在常规输入中混入将被解释为命令的“数据”,要想成功,必须要做三件事情: 1.确定Web应用程序所使用的技术 注射式攻击对程序设计语言或者硬件关系密切,但是这些可以通过适当的踩点或者索性将所有常见的注射式攻击都搬出来逐个试一下就知道了。为了确定所采用的技术,攻击者可以考察Web页面的页脚,查看错误页面,检查页面源代码,或者使用诸如Nessus等工具来进行刺探。 2.确定所有可能的输入方式 Web应用的用户输入方式比较多,其中一些用户输入方式是很明显的,如HTML表单;另外,攻击者可以通过 隐藏的HTML表单输入 、 HTTP头部 、 cookies 、甚至对用户不可见的后端 AJAX请求 来跟Web应用进行交互。 一般来说,所有HTTP的GET和POST都应当作用户输入 。为了找出一个Web应用所有可能的用户输入,我们可以求助于Web代理,如 Burp 等。 3

脚本攻击与Sql注入

不羁岁月 提交于 2020-01-18 23:44:57
脚本攻击 什么是Sql注入 Sql注入是通过浏览器里输入一些特殊代码和一些sql数据库查询、修改、删除语句,来让服务器执行系统管理员所禁止的活动,可以攻占网站,取得管理权限,获取数据库中的敏感数据,或者删除数据,修改数据。 如:文本框中输入一些:<>、<!、!>、=、!=、Update、delete、select、count、sum、max、 Min、from,select. 防止注入:这些动态的Sql注入用””替换。 什么javascrpt攻击 Javascrpt是输入一些脚本,动态化的截取敏感数据,或者修改,删除网页里面的信息。 如:script|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|都是一些脚本攻击语句。 防止:用替换的方法把攻击语句替换成空格字符“”。 3.什么是跨站攻击 跨站脚本攻击 (也称为 XSS )指利用网站漏洞从用户那里恶意盗取信息。用户在浏览网站、使用即时通讯软件、甚至在阅读电子邮件时,通常会点击其中的链接。攻击者通过在链接中插入恶意代码,就能够盗取用户信息。攻击者通常会用十六进制(或其他编码方式)将链接编码,以免用户怀疑它的合法性。网站在接收到包含恶意代码的请求之后会产成一个包含恶意代码的页面,而这个页面看起来就像是那个网站应当生成的合法页面一样

一种特殊的sql注入-个人理解

一笑奈何 提交于 2020-01-18 20:44:19
前言 工作中遇到某公司的web系统,其中的查询功能是存在注入的,但是却不能用sqlmap自动化的扫出; post数据包参数格式: &q%40 test.test o%40lkt%40string=&q%40 test.test_test %40let%40int= &q%40 test.test o%40eqt%40string= test &q%40 test.test %40lkt%40string=&test=&page=1&rows=1 &%24Q_test_test=&%24Q_ test_test =& xxx =&order=+ASC+&_query_code=0&pageMethod= %24Q_test=&orderCol=&order=+ASC+& query_code=0&test = test &rowCount=10000&currentPage=21 该系统查询的参数类似上面的格式: 这里面每个参数都是不存在注入的,虽然可控 但是系统是存在注入的,已经存在的参数是不能注入的,我们可以添加参数进行注入,例如: .php?id=1 我们在测试的时候会进行变形 .php?id=1 and 1=1 或者.php?id=1 and 1=2 或者 .php?id=1 or 1=1 现在重新理解一下这几个测试语句的意思,我们知道添加and 1=1和1

简单分析SQL注入语义分析库Libinjection

巧了我就是萌 提交于 2020-01-18 18:58:09
一、前言 这次主要讲开源SQL注入语义分析库libinjection,如果有发现其他开源SQL语义分析库的欢迎告知。libinjection的程序分析由Simon友情提供,需要看完整报告的可以加群看。 二、libinjection程序分析 从流程图上看,libinjection首先是初始化issqlii变量,接着设置数据结构并初始化变量state,libinjection_sqli_init()函数将初始化SQL检测所需的结构体,之后通过libinjection_is_sqli()函数进行具体分析,如果存在issqli,则将SQL注入识别特征复制进fingerprint变量并返回,如果不存在则将fingerprint变量设置为空并返回。 上图是总的函数关系图,libinjection_sqli_init()函数的主要工作是将 SQL注入识别特征码(指纹) 加载进结构体,并完成各种内置变量的初始化。libinjection_is_sqli()的处理代码如下,根据代码来分析 int libinjection_is_sqli(struct libinjection_sqli_state * sql_state) { const char *s = sql_state->s; size_t slen = sql_state->slen; if (slen == 0) { return

C++ 简单的SQL注入过滤

眉间皱痕 提交于 2020-01-18 08:08:36
前几天帮一个客户写了一个C++连接MySQL,当他用到他的游戏中后,被人注射了,用了一个永真式,无限的刷了游戏装备 所以,我针对参数和整体SQL语句写了两个简单的函数,进行简单的过滤。 bool CheckSQL ( string sql ) { string key [ 9 ] = { "%" , "/" , "union" , "|" , "&" , "^" , "#" , "/*" , "*/" } ; for ( int i = 0 ; i < 9 ; i ++ ) { if ( sql . find ( key [ i ] ) != string :: npos ) { return false ; } } return true ; } bool CheckParameter ( string Parameter ) { string key [ 14 ] = { "and" , "*" , "=" , " " , "%0a" , "%" , "/" , "union" , "|" , "&" , "^" , "#" , "/*" , "*/" } ; for ( int i = 0 ; i < 14 ; i ++ ) { if ( Parameter . find ( key [ i ] ) != string :: npos ) { return false ; }

mybatis的select、insert、update、delete语句

不打扰是莪最后的温柔 提交于 2020-01-17 17:52:15
源地址: https://www.cnblogs.com/yufeng218/p/6622644.html 一、select <!-- 查询学生,根据id --> <select id="getStudent" parameterType="String" resultMap="studentResultMap"> SELECT ST.STUDENT_ID, ST.STUDENT_NAME, ST.STUDENT_SEX, ST.STUDENT_BIRTHDAY, ST.CLASS_ID FROM STUDENT_TBL ST WHERE ST.STUDENT_ID = #{studentID} </select> 这条语句就叫做‘getStudent,有一个String参数,并返回一个StudentEntity类型的对象。 注意参数的标识是:#{studentID}。 select 语句属性配置细节: 属性 描述 取值 默认 id 在这个模式下唯一的标识符,可被其它语句引用 parameterType 传给此语句的参数的完整类名或别名 resultType 语句返回值类型的整类名或别名。注意,如果是集合,那么这里填写的是集合的项的整类名或别名,而不是集合本身的类名。(resultType 与resultMap 不能并用) resultMap 引用的外部resultMap 名

sql注入内联注释过waf

折月煮酒 提交于 2020-01-17 13:03:51
sql注入内联注释过waf 正常输入: 1 然后尝试: -1 order by 被拦截 然后单独尝试 order 或者 by 单独的order或者by并没有被拦截,内联注释干扰黑名单检测 -1/**/order/**/by 3 只是简单的 /**/ 也被过滤了,那么就在 /**/ 中间加干扰 用 -1 and 1=1 来进行测试,burp抓包,然后在被过滤的关键字前后加注释,注释中间用§ §来进行爆破定点,配置如下 字符集设置一些字符数字字母随机组合干扰 然后进行爆破 响应没有显示waf的为爆破成功的结果 此处采用payload1来进行内联注释的干扰 /*%!"/*/ -1/*%!"/*/and/*%!"/*/1=1 由此看出,此时and并没有被waf黑名单检测到 然后进行order by查询 -1/*%!"/*/order/*%!"/*/by 3 -1/*%!"/*/order/*%!"/*/by 4 由此可得,查询3项数据 然后union select查询 -1/*%!"/*/union/*%!"/*/select 1,2,3 2和3处可以查询自己想要的信息 查database:此处database单个单词没被加黑名单,database()被加黑名单了,那就在database和()中间加注释: -1/*%!"/*/union/*%!"/*/select+1,/*%!"/*