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

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

Mac电脑如何通过 IntelliJ IDEA 远程连接 MySQL

《Mac电脑如何通过IntelliJIDEA远程连接MySQL》本文详解Mac通过IntelliJIDEA远程连接MySQL的步骤,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟... 目录MAC电脑通过 IntelliJ IDEA 远程连接 mysql 的详细教程一、前缀条件确认二、打开 ID