SQL注入详解-4

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>
进 阶 篇
在入门篇,我们学会了SQL注入的判断方法,但真正要拿到网站的保密内容,是远远不够的。接下来,我们就继续学习如何从数据库中获取想要获得的内容,首先,我们先看看SQL注入的一般步骤: 第一节、SQL注入的一般步骤 首先,判断环境,寻找注入点,判断数据库类型,这在入门篇已经讲过了。其次,根据注入参数类型,在脑海中重构SQL 语句的原貌,按参数类型主要分为下面三种:
(A) ID=49 类注入的参数是数字型,SQL语句原貌大致如下:
Select * from 表名 where 字段=49
注入的参数为ID=49 And [ 查询条件] ,即是生成语句:
Select * from 表名 where 字段=49 And [ 查询条件]
(B) Class= 连续剧 这类注入的参数是字符型,SQL 语句原貌大致概如下:
Select * from 表名 where 字段= ’连续剧’
注入的参数为Class= 连续剧’ and [ 查询条件] and ‘’= ’ ,
即是生成语句:
Select * from 表名 where 字段= ’连续剧’ and [ 查询条件] and ‘’= ’’
(C) 搜索时没过滤参数的,如keyword= 关键字,SQL 语句原貌大致如下:
Select * from 表名 where 字段like ’% 关键字% ’
注入的参数为
keyword= ’ and [ 查询条件] and ‘%25 ’= ’,
即是生成语句:
Select * from 表名 where 字段like ’% ’ and [ 查询条件] and ‘% ’= ’% ’
接着,将查询条件替换成SQL语句,猜解表名,
例如: ID=49 And (Select Count(*) from Admin)>=0 如果页面就与ID=49 的相同,说明附加条件成立,即表Admin 存在,反之,即不存在(请牢记这种方法)。如此循环,直至猜到表名为止。 表名猜出来后,将Count(*) 替换成Count( 字段名) ,用同样的原理猜解字段名。 有人会说:这里有一些偶然的成分,如果表名起得很复杂没规律的,那根本就没得玩下去了。说得很对,这世界根本就不存在100% 成功的黑客技术,苍蝇不叮无缝的蛋,无论多技术多高深的黑客,都是因为别人的程序写得不严密或使用者保密意识不够,才有得下手。 有点跑题了,话说回来,对于SQLServer 的库,还是有办法让程序告诉我们表名及字段名的,我们在高级篇中会做介绍。
最后,在表名和列名猜解成功后,再使用SQL 语句,得出字段的值,
下面介绍一种最常用的方法-Ascii 逐字解码法,虽然这种方法速度很慢,但肯定是可行的方法。 我们举个例子,已知表Admin 中存在username 字段,首先,我们取第一条记录,测试长度:  http://www.19cn.com/showdetail.asp?id=49 and (select top 1 len(username) from Admin)>0
先说明原理:如果top 1 的username 长度大于0 ,则条件成立;
接着就是>1 、>2 、>3 这样测试下去,一直到条件不成立为止,比如>7 成立,>8 不成立,就是len(username)=8 当然没人会笨得从0,1,2,3 一个个测试,怎么样才比较快就看各自发挥了。
在得到username的长度后,用mid(username,N,1)截取第N位字符,再asc(mid(username,N,1)) 得到ASCII 码,比如: id=49 and (select top 1 asc(mid(username,1,1)) from Admin)>0 同样也是用逐步缩小范围的方法得到第1 位字符的ASCII 码,注意的是英文和数字的ASCII 码在1-128 之间,可以用折半法加速猜解,如果写成程序测试,效率会有极大的提高。
第二节、SQL注入常用函数
有SQL 语言基础的人,在SQL 注入的时候成功率比不熟悉的人高很多。我们有必要提高一下自己的SQL 水平,特别是一些常用的函数及命令。 Access :asc( 字符) SQLServer :unicode( 字符) 作用:返回某字符的ASCII 码 Access :chr( 数字) SQLServer :nchar( 数字) 作用:与asc 相反,根据ASCII 码返回字符 Access :mid( 字符串,N,L) SQLServer :substring( 字符串,N,L) 作用:返回字符串从N 个字符起长度为L 的子字符串,即N 到N+L 之间的字符串 Access :abc( 数字) SQLServer :abc ( 数字) 作用:返回数字的绝对值(在猜解汉字的时候会用到) Access :A between B And C SQLServer :A between B And C 作用:判断A 是否界于B 与C 之间 第三节、中文处理方法 在注入中碰到中文字符是常有的事,有些人一碰到中文字符就想打退堂鼓了。其实只要对中文的编码有所了解,“中文恐惧症”很快可以克服。先说一点常识: Access 中,中文的ASCII 码可能会出现负数,取出该负数后用abs() 取绝对值,汉字字符不变。 SQLServer 中,中文的ASCII 为正数,但由于是UNICODE 的双位编码,不能用函数ascii() 取得ASCII 码,必须用函数unicode () 返回unicode 值,再用nchar 函数取得对应的中文字符。 了解了上面的两点后,是不是觉得中文猜解其实也跟英文差不多呢?除了使用的函数要注意、猜解范围大一点外,方法是没什么两样的。
本文转自 netcorner 博客园博客,原文链接: http://www.cnblogs.com/netcorner/archive/2006/11/09/2912525.html  ,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
1月前
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
58 2
|
3月前
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
142 5
|
3月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
86 5
|
3月前
|
SQL 安全 数据安全/隐私保护
Python Web安全大挑战:面对SQL注入、XSS、CSRF,你准备好了吗?
在构建Python Web应用时,安全性至关重要。本文通过三个真实案例,探讨了如何防范SQL注入、XSS和CSRF攻击。首先,通过参数化查询替代字符串拼接,防止SQL注入;其次,利用HTML转义机制,避免XSS攻击;最后,采用CSRF令牌验证,保护用户免受CSRF攻击。这些策略能显著增强应用的安全性,帮助开发者应对复杂的网络威胁。安全是一个持续的过程,需不断学习新知识以抵御不断变化的威胁。
128 1
|
3月前
|
SQL 安全 数据库
Python Web开发者必看!SQL注入、XSS、CSRF全面解析,守护你的网站安全!
在Python Web开发中,构建安全应用至关重要。本文通过问答形式,详细解析了三种常见Web安全威胁——SQL注入、XSS和CSRF,并提供了实用的防御策略及示例代码。针对SQL注入,建议使用参数化查询;对于XSS,需对输出进行HTML编码;而防范CSRF,则应利用CSRF令牌。通过这些措施,帮助开发者有效提升应用安全性,确保网站稳定运行。
62 1
|
3月前
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
58 3
|
3月前
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
96 6
|
3月前
|
SQL 安全 JavaScript
告别Web安全小白!Python实战指南:抵御SQL注入、XSS、CSRF的秘密武器!
【9月更文挑战第12天】在Web开发中,安全漏洞如同暗礁,尤其对初学者而言,SQL注入、跨站脚本(XSS)和跨站请求伪造(CSRF)是常见挑战。本文通过实战案例,展示如何利用Python应对这些威胁。首先,通过参数化查询防止SQL注入;其次,借助Jinja2模板引擎自动转义机制抵御XSS攻击;最后,使用Flask-WTF库生成和验证CSRF令牌,确保转账功能安全。掌握这些技巧,助你构建更安全的Web应用。
72 5
|
5月前
|
SQL 安全 数据库
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!
【7月更文挑战第26天】在 Python Web 开发中, 安全性至关重要。本文聚焦 SQL 注入、XSS 和 CSRF 这三大安全威胁,提供实战防御策略。SQL 注入可通过参数化查询和 ORM 框架来防范;XSS 则需 HTML 转义用户输入与实施 CSP;CSRF 防御依赖 CSRF 令牌和双重提交 Cookie。掌握这些技巧,能有效加固 Web 应用的安全防线。安全是持续的过程,需贯穿开发始终。
98 1
Python Web开发者必学:SQL注入、XSS、CSRF攻击与防御实战演练!