DC9 Debian和sql注入

2024-04-07 07:28
文章标签 sql 注入 database debian dc9

本文主要是介绍DC9 Debian和sql注入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

信息收集

sudo arp-scan -l 列出局域网主机

arp-scan向局域网中所有可能的ip地址发出arp请求包,如果得到arp回应,就证明局域网中某台主机使用了该ip

dc9的ip : 192.168.146.133 

访问网页 cms为Debian

端口扫描

22端口是filtered

隐藏目录扫描

dirb http:// -X.php

访问logout.php 或者session.php 都会提示已经以admin身份登录

下面还有一句File does not exist  

没法点击添加记录,我猜应该是像flask那样用了session 

但是有文件包含漏洞

把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件

程序开发人员一般希望代码更灵活,将被包含的文件设置为变量,用来进行动态调用

文件包含漏洞:用户对这个变量可控而且服务端又没有做合理的校检或者校检被绕过

现在要找到这个变量  把变量值设为敏感文件路径或者包含函数的文件(这个需要上传)

变量通常为file 

就是把函数写进文件里方便调用,设置变量,

?file=../../../../etc/passwd

ssh是被filtered,需要绕过防火墙进行探测

Debian的配置文件是 /etc/network/interfaces 刚好搜到了网络配置文件

翻译

环回接口,是虚拟的网络接口,不与任何物理硬件设备关联,ip地址为127.0.0.1 或::1 可以用来测试

主网络接口,连接到物理网络硬件,如以太网接口,无线网卡的接口,有1个或多个ip地址

没有查看到 etc/network/interfaces.d内容

看到了knockd敲门服务

其中的/etc/knockd.conf里的配置会导致ssh连接被拒绝,它通过动态的添加iptables规则来隐藏系统开启的服务

获得ssh开门密码 7649 8475 9842

使用自定义的一系列序列号来“敲门”,使系统开启需要访问的服务端口,才能对外访问

nmap -p 7469 196.168.146.133 通过nmap发送ARP包完成敲门服务

nmap -p 8475 196.168.146.133

nmap -p 9842 196.168.146.133

然后就可以ssh登录了,但是没有用户名和密码,那就暴力破解

刚刚的/etc/passwd有用户名,写入用户名字典 

 还有sql注入漏洞,不过用不着,因为访问隐藏目录logout.php或session.php就登录了网站管理员用户

sql注入

sql注入是:因为前端输入控制不严格造成的漏洞,使得攻击者可以输入对后端数据库有危害的字符串或符号,使得后端数据库产生回显或执行命令

从注入参数类型分:数字型注入、字符型注入

从注入效果分:报错注入、无显盲注(布尔盲注、延时盲注)、联合注入、堆叠注入、宽字节注入、二次注入

从提交方式分:GET注入、POST注入、HTTP头注入(UA注入、XFF注入)、COOKIE注入

注入的常见位置:

URL参数

表单输入:应用程序中的表单输入框,如用户名、密码、搜索框等

Cookie:应用程序使用 Cookie 来存储用户信息或会话状态,攻击者可以修改 Cookie 中的值来进行 注入

HTTP头部

数据库查询语句:在应用程序中直接拼接 SQL 查询语句

盲注并不会返回错误信息,使得sql注入的难度提高

报错型注入则是利用了MySQL的第8652号bug :Bug #8652 group by part of rand() returns duplicate key error来进行的盲注,使得MySQL由于函数的特性返回错误信息,进而我们可以显示我们想要的信息

有1个搜索框 可以输入“姓”或者“名” 搜多 Display Allm Records中的记录

但是url中没有参数,推测表单提交方式是post ,也可以抓包,看到数据在消息体里

一个登录框 可以编辑这些记录

对搜索框和登陆界面测试是否存在sql注入,是在输入框输入,并非url ,因为这两url都没有参数

输入sql注入语句

1' and 1=1#
1' and 1=2#
都不会报错

# 是注释符号,后面的部分都是注释

'  单引号用于表示字符串的开始和结束

单引号闭合 ,假设sql查询中,某个字段是由单引号'括起来的,通过一个额外的单引号闭合这个字段, 然后可以插入攻击者自己的sql命令

比如

SELECT * FROM users WHERE id = '[user input]'
然后用户输入1' and 1=1#

SELECT * FROM users WHERE id = '1' AND 1=1#'

1=1总是为真,不会改变原有查询结果

1=2总是为假,如果返回不同的结果,比如错误,那么就有sql注入漏洞

并不代表着不存在sql注入漏洞,可能是web服务器屏蔽了回显报错信,这个时候我们就无法判断闭合形式是否为单引号等,只能盲猜一手,而且因为不能报错,也就无法使用order by去判断查询字段长度,但还可以使用union select来判断

union是联合查询,合并两个或多个select语句的结果集,每个select必须选择相同数量的列,列必须拥有相似的数据类型(就是数据类型可以转化,比如数字字符串和数字)

比如两张表

执行union

select 1会原封不动的回显出来,字段名为1,数据为1

首先盲猜为单引号闭合:

1' union select 1#
1' union select 1,2#
1' union select 1,2,3#
1' union select 1,2,3,4#
1' union select 1,2,3,4,5#
当输入1' union select 1,2,3,4,5,6#

sqlmap爆破

进入web开发者模式,点击network,然后在目标网页的搜索栏中输入1搜索,开发者工具中出现结果,翻阅查看信息,发现result.php的Request中出现信息

爆数据库名,由于是POST请求发送数据,所以这里指定–date参数为search

这篇关于DC9 Debian和sql注入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL 多列 IN 查询之语法、性能与实战技巧(最新整理)

《MySQL多列IN查询之语法、性能与实战技巧(最新整理)》本文详解MySQL多列IN查询,对比传统OR写法,强调其简洁高效,适合批量匹配复合键,通过联合索引、分批次优化提升性能,兼容多种数据库... 目录一、基础语法:多列 IN 的两种写法1. 直接值列表2. 子查询二、对比传统 OR 的写法三、性能分析

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

浅谈mysql的not exists走不走索引

《浅谈mysql的notexists走不走索引》在MySQL中,​NOTEXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引,下面就来介绍一下mysql的notexists走不走索... 在mysql中,​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys