当前位置:首页 >> 网络通讯 >> 网络安全 >> 内容

sql注入解析(一)基本语法

时间:2013/4/19 12:09:00 作者:平凡之路 来源:xuhantao.com 浏览:

sql注入是代码注入的一种,也是最流行、破坏性较高的一种。前几年sql注入很流行,现在的网站一般都是直接基于框架搭建,参数传递,sql注入一般很隐蔽了,不容易找;但是一些学校、政府和小型网站sql注入漏洞还是很常见的。

sql是一种解释性语言,即它在运行时由另外一个运行的组件解释其语言并执行其中的代码。现在的web网站都使用数据库来保存各种信息。数据库中的信息通过sql语句来访问,执行查询、插入、删除、更新等操作。

如果服务器端处理sql语句不安全,涛涛电脑知识网,应用程序很容易受到sql注入攻击,读取甚至修改数据库数据,严重时可能会控制运行数据库的主机。现在最常见的三种数据库是oracle、ms-sql、mysql,其对应的sql语法也大同小异。

1、 最简单的sql注入的例子,select * from user wherer username= ‘youthflies’ ,这条sql语句是从user表里查询youthflies这个用户的所有信息,通常这个youthflies字符串是由用户输入的,如果我们输入youth’flies呢,那么服务器接收到用户的查询后,拼装sql,成为select * from user where username= ‘youth’flies’, 这条语句会产生语法错误,如果服务器端没有对错误页面进行处理,我们就可以直接看到后台爆出的异常。

修改我们的输入,输入youthflies’ or ’1′=’1 , 这样服务器端的sql就会变成 select * from user where username=’youthflies’ or ’1′=’1′, 正好产生有效的sql语句,这样服务器端就会给我们返回数据库中所有的用户信息。另外也可以这样输入 youthflies’ or 1=1–,“–”是数据库的注释字符,其后面的字符串会被当成注释处理,服务器端变成 select * from user where username=’youthflies’ or 1=1–’, 效果一样。 PS: mysql中–之后要有一个空格, 或者用#制定后面的字符时注释。

2、  前面的例子只是查询时sql注入,如果用户登录时候产生sql注入,涛涛电脑知识网,那就可以绕够密码验证了。假如用户登录时,服务器端的sql语句为 select * from user where username=’youthflies’ and password=’passwd’, 我们用户名填写 admin’ or 1=1– ,这样服务器端的sql拼装为select * from user where username=’admin’ or 1=1 –’ and password =’passwd’, 这样如果管理员的用户名是admin,那我们就可以直接以管理员身份登录了。但是如果猜不出管理员的用户名,用户名可以这样 ‘ or 1=1– ,管理员一般是数据库中的第一个用户,这样就很有可能返回管理员的权限。

相关文章
  • 没有相关文章
  • 徐汉涛(www.xuhantao.com) © 2024 版权所有 All Rights Reserved.
  • 部分内容来自网络,如有侵权请联系站长尽快处理 站长QQ:965898558(广告及站内业务受理) 网站备案号:蒙ICP备15000590号-1