作者st1009 (前端攻城师)
看板NetSecurity
标题Fw: [教学] 小风的资安科普-SQL injection
时间Sat May 11 21:07:18 2019
※ [本文转录自 CyberSecure 看板 #1SrZoqyB ]
作者: st1009 (前端攻城师) 看板: CyberSecure
标题: [教学] 小风的资安科普-SQL injection
时间: Sat May 11 11:08:32 2019
一.前言
SQL injection 是一种在网路上经典常见的攻击手法,不论是在CTF中,还是真实的
网路攻防战中都可以见到其身影。
故本文将介绍这种古老又实用的攻击手法给想要学习资讯安全的板友了解其原理以及
运作方式。
期待可以为一些没有资安经验的板友们开启一扇通往资讯安全领域的大门。
二.概述
1.甚麽是 SQL injection ?
SQL injection 是一种将恶意的程式码注入资料库搜寻语法的资安技术。
2.SQL injection 的危害是甚麽?
藉由 SQL injection 黑客可以修改资料库中的内容,非法越权或者之後进行更
进一步的攻击手法。
3.如何进行 SQL injection?
找到存在漏洞的SQL注入点注入,例如:网址列的get使用处,帐号密码输入处,
以及其他各种会将资料送到资料库的位置。
三.原理
在资料库中,我们会使用搜寻语法进行搜寻。
例如:"SELECT * FROM user_data WHERE account ='$account' AND pwd = '$pwd' "
上例中存在两个来自使用者的变数,分别是帐号($account)以及密码($pwd),
在程式正常运行的时候,我们会寻找对应帐号密码皆相符的资料,将其输出。
但假设有恶意使用者输入了一些非法字元就会破坏这段搜寻语法。
例如:
$account = "' OR 1=1 -- ";
$pwd = "QAQ";
此时我们的搜寻语法会变成
"SELECT * FROM user_data WHERE account ='' OR 1=1 -- ' AND pwd = 'QAQ' "
因为account遭到两个单引号闭合,并且 -- 在SQL中是注解的意思,因此在进入资料
库後,该程式码会转成以下:
"SELECT * FROM user_data WHERE account ='' OR 1=1 "
也就是说关於密码确认的栏位消失了!此时恶意使用者将可以非法登入!
四.范例
https://imgur.com/dQ3CYRm.jpg
如上图我们在登入栏位输入了帐号admin,并且於其後插入恶意代码。
https://imgur.com/FzZJ3Vn.jpg
此时我们可以看到我们成功的登入了admin的帐号!
五.案例
建中苏柏榕曾经使用SQL injection 骇入我国大考中心。
(资讯来源:
http://www.epochtimes.com/b5/5/7/26/n997634.htm)
六.防御方式
要防御SQL injection 首先要注意一个基本原则,所有来自使用者的资讯皆不可信!
我们可以藉由以下几种方式防御SQL injection :
1.过滤使用者输入,将非法字元过滤掉。
但此方法因为黑客们有着各种创意,所以存在着风险。
2.建立白名单,只有符合的资料可以使用。
此法最安全,但是可以适用的范围最小,不利於大量使用。
3.预处理(prepare)
PHP中的PDO套件可以针对参数进行绑定,以此避免SQL injection,此方法是目
前最主流的方法。
(PDO官方说明:
https://www.php.net/manual/en/book.pdo.php)
七.後话
SQL injection随着时间的演进,不断的进化着,除了最基础的这些外,还有其他应
用,譬如基於时间的盲注(time based blind)
此外也可能被当成更进一步攻击,譬如远程代码执行(RCE)的跳板。
因此值得各位学习资安的人一再研究学习。
发表此文,希望可以与各位旧雨新知们一同学习,一同进步,为台湾的资讯安全贡献
一份心力。
共勉之。
By st1009
--
半壁河山半攻守
半争成败半悟道
许银川
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.164.88.106
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/CyberSecure/M.1557544116.A.F0B.html
1F:推 Apache: 推 05/11 19:34
2F:推 applechichi: 推推厉害 05/11 19:57
3F:推 chinese30910: 推 05/11 20:21
※ 发信站: 批踢踢实业坊(ptt.cc)
※ 转录者: st1009 (1.164.88.106), 05/11/2019 21:07:18
4F:→ st1009: 转过来看看这里水温如何... 05/11 21:07
5F:推 CMJ0121: 欢迎创新坑 我也蛮好奇板上比较想要哪种类型的文章 05/12 00:23
6F:推 hsu50302: 推 05/12 01:19
7F:→ asdfghjklasd: 二个版功能有重复到了? 这文章不错啊 05/12 01:24
8F:推 asimon: 啧啧~! 又要多跟一个版了 0_0a 05/12 04:09
9F:推 hpyhacking: 哇有新版欸赞啦 05/12 05:42
10F:推 Debian: 推荐文章。 05/12 10:05
11F:推 Peruheru: 有看有推 05/13 15:50
※ 编辑: st1009 (1.163.139.75), 05/14/2019 23:31:37