随笔 - 94  文章 - 0  评论 - 2  阅读 - 12万

SQL注入测试

简介

SQL 注入是一种专门针对SQL语句的攻击方式。通过把SQL命令插入到web表单提交、输入域名或者页面请求的查询字符串中,利用现有的程序,来非法获取后台的数据库中的信息。在web的测试中涉及到的会比较多些。

注入原理

存在注入的原因是后台在编写程序时,没有对用户输入的数据做过滤。 例:


1、用户在某个输入框提交的参数是123。

 浏览器提交的URL为: http://www.xxx.com/index.php?id=123   

服务器后台执行SQL语句:select * from table1 where id = 123  

此时是没有任何影响的。

 

2、 如果用户提交的参数是 123;drop table   

服务器后台执行SQL语句: select * from table1 where id =123 ; drop table  

相当于后台执行了两条SQL语句,查表,并且把table删除, 从而导致了SQL注入

 

检测注入的方法

目前主要有两种检测方式:

一、手工注入检测流程:

1.  判断是否存在注入点 

www.abc.com/index.php?id=2

www.abc.com/index.php?id=2 and 1=1

www.abc.com/index.php?id=2 and 1=2

第2条返回正常,

第1,3条返回不正常说明id参数存在注入漏洞

2.  判定是否存在admin表

www.abc.com/index.php?id=2 and exists(select * from admin) 

返回正常,存在admin表

 

3.  猜admin表中的字段名

www.abc.com/index.php?id=2 and exists(select username from admin)

返回正常 表示admin表存在username字段

 

 4.  检测其他sql操作

 

二、工具检测:

sqlmap:  sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限。

 

1. 下载地址

https://github.com/sqlmapproject/sqlmap.git 

 

2. 常用命令

 

 

 

测试

以一个sqlmap检测URL为例:

 

1. 检测过程:     

 

 2. 检测结果:

 

可知该次注入检测没有成功。

 

防止sql注入代码:(1)修改php.ini magic_quotes_gpc=Off,打开开关,不常用;

                             (2)获取到参数后,调用$username = addslashes($username);

                                     说明:string addslashes ( string $str ) 返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号(')、双引号(")、反斜线(\)与 NUL( NULL 字符)。 举例:用户在name中输入' or 1=1#,其中#是sql中的注释,#会过滤sql中的where校验等,而or 1=1恒真,就会造成返回所有用户列表。

                             (3)mysql_escape_string();原理和(2)差不多;

总结:

登录防sql注入的方法: 1、修改php.ini配置文件中magic_quotes_gpc=On (用单引号引用用户输入的数据)(不实用)

                                     2、使用函数addSlashes() (在预定义字符之前添加反斜杠)

                                     3、使用mysql_escape_string() (在SQL语句特殊字符前添加反斜杠)

拓展:

https://www.oschina.net/translate/sql-injection-walkthrought

posted on   卡哇伊的蜗牛  阅读(5695)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示