sql注入相关考题

1.SQL注入的原理

		用户 可控参数中注入SQL语法,破坏原有SQL结构,
		达到编写程序时意料之外结果的攻击行为
		某成因可以归结为以下两个原因叠加造成的:
		1.程序编写者在处理应用程序和数据库交互时,
		使用字符串拼接的方式构造SQL语句。
		2.未对用户可控参数进行足够的过滤便将参数内容拼接进入到SQL查询语句中。

2.sql注入产生原因

			sql注入攻击是利用是指利用设计上的漏洞,
			在目标服务器上运行Sql语句以及进行其他方式的攻击,
			动态生成Sql语句时没有对用户输入的数据进行验证是Sql注入攻击得逞的主要原因。
			对于java数据库连接JDBC而言,
			SQL注入攻击只对Statement有效,对PreparedStatement是无效的,
			这是因为PreparedStatement不允许在不同的插入时间改变查询的逻辑结构。
	    如验证用户是否存在的SQL语句为:
	    用户名'and pswd='密码
	如果在用户名字段中输入: 'or 1=1或是在密码字段中输入:'or 1=1
	
	将绕过验证,但这种手段只对只对Statement有效,
	对PreparedStatement无效。相对Statement有以下优点:
	    1.防注入攻击
	    2.多次运行速度快
	    3.防止数据库缓冲区溢出
	    4.代码的可读性可维护性好
	    这四点使得PreparedStatement成为访问数据库的语句对象的首选,
	    缺点是灵活性不够好,有些场合还是必须使用Statement。 

3.请简单说下sql注入的原理

			通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,
			最终达到欺骗服务器执行恶意的SQL命令。
			通常未经检查或者未经充分检查的用户输入数据或代码编写问题,意外变成了代码被执行。
			注入攻击属于服务端,他与操作系统 数据库类型 脚本类型 无关

4.注入漏洞的手工检测方法

		1.“单引号”法
			第一种检测SQL注入漏洞是否存在的方法是“单引号”法。
			方法很简单,直接在浏览器地址栏中的网址链接后加上一个单引号,
			如果页面不能正常显示,浏览器返回一些异常信息,则说明该链接可能存在注入漏洞。
		2. 1=1和1=2法
			很多时候检测提交包含引号的链接时,会提示非法字符,
			或者直接不返回任何信息,但这并不等于不存在SQL注入漏洞。
			此时可使用经典的“1=1和1=2”法进行检测。
			方法很简单,就是直接在链接地址后分别加上and 1=1和and 1=2进行提交,
			如果返回不同的页面,那么说明存在SQL注入漏洞。
		3. 现在有很多防注入程序屏蔽了 and、1=1、1=2 类似这样的关键字
			在URL地址参数后面加上-1  
			如果返回的页面和前面不同,是另一则新闻,则表示有注入漏洞   是数字型的注入漏洞
			在 URL地址参数后面加上 -0
			返回的页面和前面的页面相同,加上-1,返回错误页面,则也表示存在注入漏洞,是数字型的。
		4.在URL的地址后面加上url编码'%2B',URL地址变为:http://192.168.109.139/news.asp?id=123'%2B',返回的页面和1同;
		加上'%2B'asdf,,返回的页面和1不同,
		或者说未发现该条记录,或者错误,则表示存在注入点,是文本型的。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值