常规SQL注入检测

       在南昌网站建设中,SQL注入攻击可以根据bug的不同分为不同类别。通常来说,可以按照HTTP响应返回的数据种类来区分注入。如果返回的是类似下面这样的SQL错误,就可以实施基于错误的SQLi:

       You have an error in your SQL syntax; check the

       manual that corresponds to your MySQL server version

       for the right syntax to use near ''' at line 1

       某些情况下,即使SQL语句中包含错误,Web应用也根本不会返回错误。这种类型的SQLi

通常叫作Blind SQLi,因为从数据库或应用得不到任何错误。

此时,通过对比正常请求和恶意请求的HTTP响应之间的区别,也可以检测到SQLi是否会影

响某些资源。前述区

别可以分为两种。一种是内容长度不同,也就是返回的响应体的内容不同。

另一种是响应时间不同,比如常规响应时间是1秒,而恶意响应却需要5秒。下面来看一段Ruby

代码,这段代码是可以被SQL注入的:

       get "/" do

       @config = ConfigReader.instance.config

       # 从GET请求中取得book_id参数

       book_id = params[:book_id]

       # MySQL连接池

       pool = Mysql2::Client.new(

       :host => @config['db_host'],

       :username => @config['restricted_db_user'],

       :password => @config['restricted_db_userpasswd'],

       :database => @config['db_name']

       )

       begin

       if book_id == nil

       @rs = pool.query "SELECT * FROM books;"

       else

       # 若找到一个特定的book_id参数

       # 就执行以下未加密查询

       query = "SELECT * FROM books WHERE id=" + book_id + ";"

       @rs = pool.query query

       end

       erb :"sqlinjection"

       rescue Exception => e

       @rs = {}

       @error_message = e.message

       erb :"sqlinjection"

       end

       end

       如果将一个类似/page?book_id=1'的GET请求发送给这段代码中的处理程序,那么数据库

就会返回类似前面的错误信息。只要发送像下面这样检索MySQL数据库版本的查询,就可以利

用这种基于错误的SQLi:

       /page?book_id=1+UNION+ALL+SELECT+NULL%2C%40%40VERSION%2CNULL%23

       最终的SQL语句会被攻击者在SELECT * FROM books WHERE id=1后面追加上UNION ALL 

SELECT NULL, @@VERSION, NULL。Web应用的那个拼接的查询(query = "SELECT * FROM 

books WHERE id=" + book_id + ";")之所以不安全,是因为参数值book_id未经输入验

证就被用于字符串拼接。这种[没有预处理语句(Prepared Statements)18]的查询结果,会使应

用面临SQL注入的风险。

       再考虑一种情况。假设前面存在漏洞的代码除了把底部的一行(@error_message =

e.message)删除之外,其余都相同,那么此时仍然可以被SQL注入攻击,只不过变成了Blind。

       假设你事先并不知道这一点,而想要检测某个资源是否可以实施SQLi。可以发送下面这个

GET请求:

       /page?book_id=1+AND+SLEEP(5)

       然后,经过大约5秒钟,你才会收到HTTP响应。这么长的响应时间意味着该资源存在SQL注

入漏洞,因为SLEEP语句被成功执行了。

       以上只是比较浅显的SQL注入检测。如果你觉得这些内容不好理解,随时可以来电咨询易速网络,本公司专业从事南昌网站建设、微信开发、手机APP开发等服务,经验丰富,实力强,南昌做网站,就选易速网络!

提供全面的搜索引擎优化学习交流,专注网站优化和搜索引擎营销推广服务。用专业的SEO技术为企业网站提升关键词排名,让你的网站不仅满足用户体验还要适合搜索引擎优化规则。
易速网站优化公司 » 常规SQL注入检测
享更多特权,立即登录下载海量资源
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡