SQL Injection

[红日安全]Web安全Day1

感情迁移 提交于 2020-04-17 14:10:36
【推荐阅读】微服务还能火多久?>>> 本文由红日安全成员: Aixic 编写,如有不当,还望斧正。 大家好,我们是红日安全-Web安全攻防小组。此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了一个名字叫 Web安全实战 ,希望对想要学习Web安全的朋友们有所帮助。每一篇文章都是于基于 漏洞简介 - 漏洞原理 - 漏洞危害 - 测试方法(手工测试,工具测试) - 靶场测试 (分为PHP靶场、JAVA靶场、Python靶场基本上三种靶场全部涵盖)- 实战演练 (主要选择相应CMS或者是Vulnhub进行实战演练),如果对大家有帮助请 Star 鼓励我们创作更好文章。如果你愿意加入我们,一起完善这个项目,欢迎通过邮件形式( sec-redclub@qq.com )联系我们。 1. SQL注入 1.1 漏洞简介 结构化查询语言(Structured Query Language,缩写:SQL),是一种特殊的编程语言,用于数据库中的标准数据查询语言。1986年10月,美国国家标准学会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。

安全科普:SQLi Labs 指南 Part 1

我怕爱的太早我们不能终老 提交于 2020-04-10 09:39:49
安全科普:SQLi Labs 指南 Part 1 结构化查询语言,也叫做SQL,从根本上说是一种处理数据库的编程语言。对于初学者,数据库仅仅是在客户端和服务端进行数据存储。SQL通过结构化查询,关系,面向对象编程等等来管理数据库。编程极客们总是搞出许多这样类型的软件,像MySQL,MS SQL ,Oracle以及Postgresql。现在有一些程序能让我们有能力通过结构化查询来管理大型数据库。脚本小子们一定已经动手体验了类似SQL注入等这样的操作,虽然他们可能已经通过使用自动化工具例如SQL Map或者SQLNinja来实施攻击,但却还不知它真正的原理。在这篇简短的教程里,我将会尽力让你对SQL 注入是怎样工作的,攻击是怎样发生的以及什么是应用程序SQL漏洞有一个深入的理解。我们将要使用的实验室是SQLi Labs,它是一个可以从 https://github.com/Audi-1/sqli-labs 免费下载,以便我们研究学习以及编写安全的程序。所以这篇教程对于程序员和安全测试者都将是一次动手实践的机会。 来源: oschina 链接: https://my.oschina.net/u/2308739/blog/736296

sqli-labs

和自甴很熟 提交于 2020-03-08 19:08:43
sqli-labs 思路 我们需要从,前端,网络,数据库,日志四个角度去观察SQL injection。 当我们去一个文件夹中时,当页面的默认名为index时,URL中只需到文件夹就能访问到index文件。 基本包裹类型 不包裹 单引 ' 双引 “ 小括号 ( 单引小括号 ‘) 双引小括号 “) SQL注入类型 按注入点划分 数字型 字符型 搜索型 id = 1 name = admin keyword=关键字 select * from 表名 where id=1 select * from 表名 where name='admin' select * from 表名 where 字段 like '%关键字%' 按数据提交类型 GET POST Cookie HTTP头 http://xxx.com/news.php?id=1 post表单 存在于cookie的某个字段中 注入点存在于头部某个字段 按照执行效果 基于布尔的盲注 基于时间的盲注 基于报错注入 联合查询注入 堆查询注入 宽字节注入 返回页面 用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断 页面会返回错误信息, union 来源: oschina 链接: https://my.oschina.net/u/4466440/blog/3190101

PDO准备好的语句是否足以防止SQL注入?

会有一股神秘感。 提交于 2019-12-30 17:26:05
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 假设我有这样的代码: $dbh = new PDO("blahblah"); $stmt = $dbh->prepare('SELECT * FROM users where username = :username'); $stmt->execute( array(':username' => $_REQUEST['username']) ); PDO文档说: 准备好的语句的参数不需要用引号引起来。 司机为您处理。 那真的是我避免SQL注入所需要做的一切吗? 真的那么容易吗? 您可以假设MySQL会有所作为。 另外,我真的只是对针对SQL注入使用准备好的语句感到好奇。 在这种情况下,我不在乎XSS或其他可能的漏洞。 #1楼 不,这还不够(在某些特定情况下)! 默认情况下,当使用MySQL作为数据库驱动程序时,PDO使用模拟的准备好的语句。 使用MySQL和PDO时,应始终禁用模拟的准备好的语句: $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 总是应该做的另一件事是它设置数据库的正确编码: $dbh = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass'

面试宝典系列-Web安全与攻击

这一生的挚爱 提交于 2019-12-07 11:49:13
一、SQL注入攻击(SQL Injection) 攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令。 防范方法: 1.检查变量数据类型和格式 2.过滤特殊符号 3.绑定变量,使用预处理语句 二、跨网站脚本攻击(Cross Site Scripting, XSS) 攻击者将恶意代码注入到网页上,其他用户在加载网页时就会执行代码,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。这些恶意代码通常是JavaScript、HTML以及其他客户端脚本语言。 防范方法:使用htmlspecialchars函数将特殊字符转换成HTML编码,过滤输出的变量 三、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF) 是属于伪造客户端请求的一种攻击方式,目的是让用户访问攻击者伪造的网页,执行网页中的恶意脚本,伪造用户请求,对用户有登录权限的网站空间实施攻击。 防范CSRF要比防范其他攻击更加困难,因为CSRF的HTTP请求虽然是攻击者伪造的,但是却是由目标用户发出的,一般常见的防范方法有下面几种: 1、检查网页的来源 2、检查内置的隐藏变量 3、使用POST,不要使用GET 四、Session劫持攻击(Session Hijacking)