注入漏洞

利用SQL注入漏洞登录后台的实现方法

懵懂的女人 提交于 2020-02-25 03:50:06
一、SQL注入的步骤 a) 寻找注入点(如:登录界面、留言板等) b) 用户自己构造SQL语句(如:' or 1=1#,后面会讲解) c) 将sql语句发送给数据库管理系统(DBMS) d) DBMS接收请求,并将该请求解释成机器代码指令,执行必要的存取操作 e) DBMS接受返回的结果,并处理,返回给用户 因为用户构造了特殊的SQL语句,必定返回特殊的结果(只要你的SQL语句够灵活的话)。 下面,我通过一个实例具体来演示下SQL注入 二、SQL注入实例详解(以上测试均假设服务器未开启magic_quote_gpc) 1) 前期准备工作 先来演示通过SQL注入漏洞,登入后台管理员界面 首先,创建一张试验用的数据表: CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(64) NOT NULL, `password` varchar(64) NOT NULL, `email` varchar(64) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 添加一条记录用于测试: INSERT

(二)CRLF注入

╄→尐↘猪︶ㄣ 提交于 2020-02-12 23:35:09
01 漏洞描述 在《 HTTP | HTTP报文 》一文中,我们介绍了HTTP报文的结构:状态行和首部中的每行以CRLF结束,首部与主体之间由一空行分隔。或者理解为首部最后一个字段有两个CRLF,首部和主体由两个CRLF分隔。 CRLF注入漏洞,是因为Web应用没有对用户输入做严格验证,导致攻击者可以输入一些恶意字符。攻击者一旦向请求行或首部中的字段注入恶意的CRLF,就能注入一些首部字段或报文主体,并在响应中输出,所以又称为HTTP响应拆分漏洞(HTTP Response Splitting)。 02 漏洞知识拓展 CRLF 指的是 回车符 (CR,ASCII 13,\r,%0d) 和 换行符 (LF,ASCII 10,\n,%0a)。 CRLF的概念源自打字机,表明行的结束,计算机出现后沿用了这个概念。 回车符:光标移到行首, 换行符:光标垂直移到下行。 键盘上的回车键(Enter)就可以执行该操作。但是不同的操作系统,行的结束符是不一样的。 Windows:使用CRLF表示行的结束 Linux/Unix:使用LF表示行的结束 MacOS:早期使用CR表示,现在好像也用LF表示行的结束 所以同一文件在不同操作系统中打开,内容格式可能会出现差异,这是行结束符不一致导致的。 在HTTP规范中,行应该使用CRLF来结束。首部与主体由两个CRLF分隔

pikachu靶场 :四、SQL注入

大城市里の小女人 提交于 2020-01-30 15:55:36
pikachu靶场 :四、SQL注入 概述 数字型注入(post) 字符型注入(get) insert/update 注入 insert update delete 注入 sql 盲注 基于布尔 基于时间 宽字节注入 概述 在owasp发布的top10排行榜里, 注入漏洞一直是危害排名第一的漏洞 ,其中注入漏洞里面首当其冲的就是数据库注入漏洞。 一个严重的SQL注入漏洞,可能会直接导致一家公司破产! SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时, 没有做严格的判断 ,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。 在构建代码时,一般会从如下几个方面的策略来 防止SQL注入漏洞 : 对传进SQL语句里面的变量进行过滤,不允许危险字符传入; 使用参数化(Parameterized Query 或 Parameterized Statement); 还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重! 数字型注入(post) 在提交页面随便选一个选项,进行查询,使用burp抓包。 因为是数字型,直接在后面加上真命题,不需要加单引号测试。 修改id参数为1 or 1=1 ,发送,得到返回的数据库数据。 字符型注入(get

JDBC的SQL注入漏洞分析和解决

一世执手 提交于 2020-01-26 21:35:54
SQL 注入漏洞分析 SQL 注入漏洞解决 需要采用PreparedStatement对象解决SQL注入漏洞。这个对象将SQL预先进行编译,使用?作为占位符。?所代表内容是SQL所固定。再次传入变量(包含SQL的关键字)。这个时候也不会识别这些关键字。 public class UserDao { public boolean login(String username,String password){ Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; // 定义一个变量: boolean flag = false; try{ // 获得连接: conn = JDBCUtils.getConnection(); // 编写SQL语句: String sql = "select * from user where username = ? and password = ?"; // 预编译SQL pstmt = conn.prepareStatement(sql); // 设置参数: pstmt.setString(1, username); pstmt.setString(2, password); // 执行SQL语句: rs = pstmt.executeQuery();

如何快速入侵一个网站

╄→гoц情女王★ 提交于 2020-01-19 02:17:29
首先,观察指定网站。 入侵指定网站是需要条件的: 要先观察这个网站是动态还是静态的。 首先介绍下什么样站点可以入侵:我认为必须是动态的网站 如ASP、 PHP 、 JSP等代码编写的站点 如果是静态的(.htm或html),一般是不会成功的。 如果要入侵的目标网站是动态的,就可以利用动态网站的漏洞进行入侵。 Quote: 以下是入侵网站常用方法: 1.上传漏洞 如果看到:选择你要上传的文件 [重新上传]或者出现“请登陆后使用”,80%就有漏洞了! 有时上传不一定会成功,这是因为Cookies不一样.我们就要用WSockExpert取得Cookies.再用DOMAIN上传.  2.注入漏洞 字符过滤不严造成的 3.暴库:把二级目录中间的/换成%5c      4.’or’=’or’这是一个可以连接SQL的语名句.可以直接进入后台。我收集了一下。类似的还有:  ’or’’=’ \" or \"a\"=\"a   ’) or (’a’=’a   \") or (\"a\"=\"a  or 1=1--  ’ or ’a’=’a 5.社会工程学。这个我们都知道吧。就是猜解。   6.写入ASP格式 数据库 。就是一句话木马〈%execute request(\"value\")%〉 (数据库必需得是ASP或ASA的后缀)    7.源码利用:一些网站用的都是网上下载的源码.有的站长很懒

web安全测试排查

拟墨画扇 提交于 2020-01-19 01:44:26
漏洞排查思路: 1.上传漏洞 如果看到:选择你要上传的文件 [重新上传]或者出现“请登陆后使用”,80%就有漏洞了! 有时上传不一定会成功,这是因为Cookies不一样.我们就要用WSockExpert取得Cookies.再用DOMAIN、中国菜刀上传.  2.注入漏洞 字符过滤不严造成的 3.暴库:把二级目录中间的/换成%5c    4.'or'='or'这是一个可以连接SQL的语名句.可以直接进入后台。 我收集了一下。类似的还有:  'or''='  " or "a"="a   ') or ('a'='a   ") or ("a"="a   or 1=1--  ' or 'a'='a 5.社会工程学。这个我们都知道吧。就是猜解。   6.写入ASP格式数据库。就是一句话木马〈%execute request("value")%〉 (数据库必需得是ASP或ASA的后缀)    7.源码利用:一些网站用的都是网上下载的源码.有的站长很懒.什么也不改. 比如:默认数据库,默认后台地址,默认管理员帐号密码等 8.默认数据库/webshell路径利用:这样的网站很多/利人别人的WEBSHELL. /Databackup/dvbbs7.MDB /bbs/Databackup/dvbbs7.MDB /bbs/Data/dvbbs7.MDB /data/dvbbs7.mdb /bbs/diy

[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

【安全】SQL注入(未完)

六眼飞鱼酱① 提交于 2020-01-14 11:23:20
1 SQL注入原理 用户名使用“ 'or 1=1–”登录,密码随意填写或不填 正常执行 select count(*) from admin where username='admin' and password='password' 输入特殊用户 select count(*) from admin where username=' ' or 1=1--'and password=' ' 此时password被注释,而前面永远为真,也就可以顺利完成登录。 同样可以利用这种方式执行其他命令 ' or 1=1 ; drop table admin --’ 因为SQLServer支持多语句执行,所以这里可以直接删除admin表 SQL注入漏洞的形成原因: 用户输入的数据被SQL解释器执行 2 注入漏洞分类 2.1 数字型注入 当参数为整型时,如id、年龄、页码等,如果存在注入漏洞,则可以认为是数字型注入。 假设有URL HTTP://www.xxx.com/test.php?id=8 可以猜测SQL语句为: select * from table where id = 8 测试步骤如下: 1. URL: HTTP://www.xxx.com/test.php?id=8' SQL: select * from table where id = 8' 这样的语句肯定出错

入门:SQL手工注入漏洞测试(Sql Server数据库)

邮差的信 提交于 2020-01-10 16:50:02
入门:SQL手工注入漏洞测试(Sql Server数据库) 题目 背景介绍 实训目标 解题方向 解题步骤 题目 背景介绍 安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境IIS+ASP+Sql Server,Aspx代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。 实训目标 1.掌握SQL注入原理; 2.了解手工注入的方法; 3.了解Sql Server的数据结构; 4.了解字符串的MD5加解密; 解题方向 手工进行SQL注入测试,获取管理密码登录。 解题步骤 启动靶场环境,得到测试地址 http://219.153.49.228:45445/ 访问页面,寻找sql注入点,访问注入页面。 http://219.153.49.228:45445/new_list.asp?id = 2 使用sql注入工具,如sqlmap或穿山甲,进行注入测试。 本次使用穿山甲进行注入。 对密码密文进行MD5解码,得到密码明文,解码网址如下 cmd5.com 使用得到的用户名和密码登录后台,发现key。 提交key即可。 来源: CSDN 作者: CN_wanku 链接: https://blog.csdn.net/qq_43233085/article/details/103924954

SQL注入学习(一)

有些话、适合烂在心里 提交于 2019-12-18 12:41:22
SQL注入(SQL Injection)是一种常见的Web安全漏洞,攻击者利用这个漏洞,可以访问或修改数据,或者利用潜在的数据库漏洞进行攻击。 SQL注入基础 漏洞原理 针对SQL注入的攻击行为可描述为通过用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。其成因可以归结外以下两个原因叠加造成的: 1、程序编写者在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句。 2、未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL语句中。 注入点可能存在的位置 根据SQL 注入漏洞的原理,在用户“可控参数”中注入SQL 语法,也就是说Web 应用在获取用户数据的地方,只要带入数据库查询,都有存在SQL 注入的可能,这些地方通常包括: @ GET 数据 @ POST 数据 @ HTTP 头部(HTTP 请求报文其他字段) @ Cookie 数据 … 漏洞危害 攻击者利用SQL注入漏洞,可以获取数据库中的多种信息(例如:管理员后台密码),从而脱取数据库中内容(脱库)。在特别情况下还可以修改数据库内容或者插入内容到数据库,如果数据库权限分配存在问题,或者数据库本身存在缺陷,那么攻击者可以通过SQL注入漏洞直接获取webshell或者服务器系统权限。 注入分类 SQL 注入漏洞根据不同的标准,有不同的分类。但是从数据类型分类来看,SQL