当前位置: 首页 > news >正文

CTF----Web真零基础入门

目录

前置知识导图:

​TCP/IP体系结构(IP和端口):

IP是什么:是计算机在互联网上的唯一标识(坐标,代号),用于在互联网中寻找计算机。

内网(局域网)IP和公网(互联网)IP:

内网IP:路由以内的网络,可以连接互联网,但是互联网无法直接连接内网(需要端口映射)

如何判断自己的电脑是内网还是公网:

公网IP:互联网IP地址。

端口是什么:是应用程序(服务)在计算机中的唯一标识。

HTTP协议--网站访问的基础:

BS架构:浏览器Browser---发送请求--->服务器Server---响应--->浏览器Browser

HTTP协议是什么:超文本传输协议

特点:

请求消息: ​

HTTP常见有八种请求方式,常用get,post:

请求头解析:

 响应消息:

 响应状态码:

常见Web漏洞:

SQL注入:泄露破坏数据库,数据库中可能有账号密码等敏感信息

文件上传:上传后门病毒木马到网站中,破坏网站甚至系统

命令执行:获取目标机器命令权限,执行非法命令,破坏或控制受害机

命令连接符:

常见cmd命令:

cmd防御low:

cmd防御medium: 

渗透尝试解决方法:

cmd防御high:

cmd防御impossible:

SQL注入:

SQL注入是什么:是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

SQL是什么:用于操控数据库的语言(结构化查询语言)

数据库如何查询数据:

 如何攻击:

 如何判断有无SQL漏洞:​

 如何注入:

利用SQL-map实现攻击自动化:

如何防御:

webshell的分类:

典型一句话木马: 

使用工具:

蚁剑的操作:

如何防御:


前置知识导图:

TCP/IP体系结构(IP和端口):

IP是什么:是计算机在互联网上的唯一标识(坐标,代号),用于在互联网中寻找计算机。

访问网站时:域名会通过DNS(解析服务)解析成IP。

所以,互通的前提条件就是双方都能找到对方的IP地址。

内网(局域网)IP和公网(互联网)IP:

内网IP:路由以内的网络,可以连接互联网,但是互联网无法直接连接内网(需要端口映射)

如何判断自己的电脑是内网还是公网:

--在本地电脑命令行输入jipconfig,ifconfig(Linux,macos)查看IP地址

--如果使用了路由器,则在路由器管理界面查看外网IP

--百度搜索IP,查看百度显示的IP和本地电脑(或路由器)获取的IP是否一致

--不一致,则判断为内网IP

 不一致,当前连接的是内网。

公网IP:互联网IP地址。

可以直接和互联网资源互通,不需要端口映射,日常应用如摄像头远程监控、电脑远程开机、主机游戏互联、NAS等等。

IP地址就像家庭地址一样,公网IP是小区地址,小区中又有很多住户,内网IP就是你家具体的门牌号,你可以从小区里出去(内网连接互联网),但是外人进入你家需要通过门岗验证(公网无法直接连接内网)。

端口是什么:是应用程序(服务)在计算机中的唯一标识。

端口是英文port的意译,可以认为是设备与外界通讯交流的出口。

端口可以分为虚拟端口和物理端口,其中虚拟端口指计算机内部或者交换机路由器内的端口,不可见。

端口一般使用数字编号进行排序。(网站一般是80端口)

源端口(客户机)端口随机,目标端口(服务器)端口固定开启监听。端口范围为0~65535

HTTP协议--网站访问的基础:

BS架构:浏览器Browser---发送请求--->服务器Server---响应--->浏览器Browser

HTTP协议是什么:超文本传输协议

传输协议定义了浏览器和客户端传输数据的格式(统一标准规范)

过程:浏览器请求服务器request请求消息---->服务器响应请求response响应消息

特点:

--基于tcp/ip协议

--默认端口号为80(可改)

--请求和响应一一对应

--每次请求相互独立,是无状态协议(“无状态“保证了网站传输的安全性)

请求消息: 

uri是什么:”统一资源定位符“ 

请求头:用于标识说明请求方的情况

请求空行:必须得有,这是个固定格式

请求体:空

HTTP常见有八种请求方式,常用get,post:

get请求:请求参数在url地址中,url有长度限制

post请求:请求参数在请求体中,无大小限制

区别:

--get的参数”wk=111“放在了网址的后面并加上了”?“

--post的参数则放在了请求体的位置

--post的请求头的最后多了一个Content-Type

请求头解析:

 响应消息:

 响应状态码:

 

常见Web漏洞:

---SQL注入          ---XSS        ---文件上传        ---反序列化        ---文件包含        ---CSRF

---命令执行        ---信息泄露        ---XXE        ---SSRF        ---未授权访问

SQL注入:泄露破坏数据库,数据库中可能有账号密码等敏感信息

文件上传:上传后门病毒木马到网站中,破坏网站甚至系统

命令执行:获取目标机器命令权限,执行非法命令,破坏或控制受害机

命令执行:一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口,比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上,一般会给用户提供一个ping操作的web界面,用户从web界面输入目标ip,提交后后台会对该IP地址进行一次ping测试并返回测试结果。而如果设计者在完成该功能时,没有做严格的安全控制,则可能会导致攻击者通过该接口提交恶意命令,让后台进行执行,从而获得后台服务器权限。

命令连接符:

cmd1|cmd2:无论cmd1是否执行成功,cmd2将被执行

cmd1;cmd2:无论cmd1是否执行成功,cmd2将被执行

cmd1&cmd2:无论cmd1是否执行成功,cmd2将被执行

cmd1||cmd2:仅在cmd1执行失败时才执行cmd2

cmd1&&cmd2:仅在cmd1执行成功后时才执行

常见cmd命令:

whoami(查看当前用户名}

ipconfig(查看网卡信息)

shutdown -s -t  0(关机)

net user [username] [password] /add(增加一个用户名为username密码为password的新用户)

type [file_name](查看filename文件内容)

cmd防御low:

 

cmd防御medium: 

最高效方法:过滤命令连接符---将这些符号替换成空,或者判断用户输入这些符号就终止执行

 

缺陷:过滤命令连接符时并没有把五个写全,所以用没有写上的连接符仍可以执行

渗透尝试解决方法:

白盒测试:可以看到源代码,查看源代码过滤机制

黑盒测试:看不到源代码,依次尝试常见命令连接符

cmd防御high:

注意:仔细观察开发者是否有失误,比如有时不时敲一下空格的习惯,导致过滤的不是连接符

 这个过滤的就不是“|”,而是“| ”(多了一个空格)

cmd防御impossible:

源码:

 分析:

典型算法解析:(整理-->拆分-->验证-->复原)

SQL注入:

SQL注入是什么:是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

SQL是什么:用于操控数据库的语言(结构化查询语言)

数据库如何查询数据:

 如何攻击:

 目的在于改变网站开发者写的原有SQL语句

源码如下:

 如何判断有无SQL漏洞:

 

 如何注入:

通过更改后面的数据,根据真假就可以试出来列/字段数

联合查询表:各个数据表的名称的花名册

 union意思是联合查询,一次查询多个表

利用SQL-map实现攻击自动化:

即键入:python sqlmap.py -u "需要检测的网址" --复制到的cookie

如何获取cookie

F12--->网络--->重新载入--->选择第一行--->消息头--->请求头

 发现数据库注入漏洞:名字是“mysql”

 获取数据库名称python sqlmap.py -u "需要检测的网址" --复制到的cookie --dbs

 得到:

 获取指定数据库表:python sqlmap.py -u "需要检测的网址" --复制到的cookie -D 想要获取的数据表名 --tables

释义:

-D:Database指定想要获取的数据库名

--tables:列出数据库表

得到:

 显示有两个表:guestbook和users

获取指定数据库列/表项:

得到:

 获取目标数据:

即加入:“--dump”

得到:

 由于密码通常是加密的:

 给了我们三个选项:密码爆破/不爆破直接呈现/退出

选择不爆破后得到:

如何防御:

最高效方法:过滤用户输入内容,不让输入sql语句,将特殊符号替换成空,或者判断用户输入SQL语句就终止执行

给我们输入的sql语句前加了“\”,让我们的sql语句语法错误

 仍是过滤:

 

 

webshell的分类:

典型一句话木马: 

写好木马之后上传到服务器 

 使用hackbar上传指令:pass=system('指令');即可实现想要的操作

使用工具:

工具获取:https://github.com/AntSwordProject/AntSword-Loader

蚁剑的操作:

右键空白区域添加数据

URL:处填写自己上传的木马的位置

密码:即上传文件中括号框起来的部分

测试成功后点击添加,双击打开即可看到对方磁盘下的文件;右键还有许多选项,甚至可以打开cmd执行进一步的命令

此时我们已经成功接管对方的系统 

如何防御:

中级:

 解决方法:

 高级:

由于源码中会对文件和图片分别检测大小,所以我们必须要有图片作为掩饰,我们把木马和图片做一个合并,唤出cmd:

 但是此时的图片并不是一个单纯的木马,无法简单的使用蚁剑进行连接和进行下一步的操作

解决方法1:

 接着再使用蚁剑,添加数据输入密码,URL就是上述地址,但是对于有些需要登陆的网站,还需要将cookie给蚁剑来进行登陆的操作。

点击请求信息,输入name(即cookie)和value(手动从浏览器F12获取cookie的具体内容)

 即可顺利连接。

 impossable:标准防御写法

 精髓:对图像进行压缩处理进行编码,所以我们写的任何木马在进行重编之后都不复存在

使用kali:

metasploit:

由于软件更新很多,怕麻烦的话可以关闭更新选项。

字体太小可以通过shift+ctrl+“+”放大字体。

使用法则:

 实例:永恒之蓝漏洞:

设置:

 

攻击完成之后:

 

相关文章:

CTF----Web真零基础入门

目录 前置知识导图: ​TCP/IP体系结构(IP和端口): IP是什么:是计算机在互联网上的唯一标识(坐标,代号),用于在互联网中寻找计算机。 内网(局域网&#xf…...

css实现元素四周阴影

前言 首先确定的是需要使用box-shadow这一属性 语法如下: box-shadow: h-shadow v-shadow blur spread color inset; h-shadow:表示水平方向上的阴影偏移量,必须指明,可以是正数、负数、0,如果为正数左方有阴影&…...

《QT从基础到进阶·二十五》界面假死处理

假如有这样一种情况,我们在主线程写了一个死循环,当程序运行到主线程的死循环代码后界面便卡死点了没有反应,这里提供几种方法处理界面假死的情况,保证比如主线程在执行死循环没有退出的时候点击界面不会卡死能继续执行其他功能。…...

卷积神经网络(1)

目录 卷积 1 自定义二维卷积算子 2 自定义带步长和零填充的二维卷积算子 3 实现图像边缘检测 4 自定义卷积层算子和汇聚层算子 4.1 卷积算子 4.2 汇聚层算子 5 学习torch.nn.Conv2d()、torch.nn.MaxPool2d();torch.nn.avg_pool2d(),简要介绍使用方…...

Mysql中名叫infomaiton_schema的数据库是什么东西?

在 MySQL 中,information_schema 是一个系统数据库,用于存储关于数据库服务器元数据的信息。它并不存储用户数据,而是包含有关数据库、表、列、索引、权限等方面的元数据信息。这些信息可以通过 SQL 查询来获取,用于了解和管理数据…...

Django(复习篇)

项目创建 1. 虚拟环境 python -m venv my_env ​ cd my_env activate/deactivate ​ pip install django ​2. 项目和app创建 cd mypros django-admin startproject Pro1 django-admin startapp app1 ​3. settings配置INSTALLED_APPS【app1"】TEMPLATES【 DIRS: [os.pat…...

MySQL里对时间的加减操作及常用语法

查询当前时间: select NOW(); //2023-11-14 11:36:03 select CURDATE(); //2023-11-14 SELECT CURTIME(); //11:36:03日期加日期: select date_add(NOW(), interval 1 year); //加1年 select date_add(NOW(), interval 1 month); …...

『MySQL快速上手』-⑨-复合查询

文章目录 1.基本查询回顾2.多表查询案例3.自链接案例4.子查询4.1 单行子查询4.2 多行子查询4.3 多列子查询4.4 在from子句中使用子查询5.合并查询5.1 union5.2 union all6.表的内连和外连6.1 内连接6.2 外连接6.2.1 左外连接6.2.2 右外连接...

高并发架构设计(三大利器:缓存、限流和降级)

引言 高并发背景 互联网行业迅速发展,用户量剧增,系统面临巨大的并发请求压力。 软件系统有三个追求:高性能、高并发、高可用,俗称三高。三者既有区别也有联系,门门道道很多,全面讨论需要三天三夜&#…...

ElasticSearch7.x - HTTP 操作 - 文档操作

创建文档(添加数据) 索引已经创建好了,接下来我们来创建文档,并添加数据。这里的文档可以类比为关系型数 据库中的表数据,添加的数据格式为 JSON 格式 向 ES 服务器发 POST 请求 :http://192.168.254.101:9200/shopping/_doc 请求体内容为: {"title":"小…...

[数据结构大作业]HBU 河北大学校园导航

校园导航实验报告 问题描述: 以我校为例,设计一个校园导航系统,主要为来访的客人提供信息查询。系统有两类登陆账号,一类是游客,使用该系统方便校内路线查询;一类是管理员,可以使用该系统查询…...

立体库堆垛机控制程序手动功能实现

手动操作功能模块 手动前后保护锁 *************提升手动程序段 手动上升,下降保护锁 **********货叉手动程序段...

git commit提交报错

git commit -m 名字’时报一下错误: [FAILED] npm run lint-staged:js [FAILED] [FAILED] npm run lint-staged:js [FAILED] [SUCCESS] Running tasks for staged files..npm ERR! code EPERM npm ERR! syscall open npm ERR! path C:\Program Files\nodejs\node_c…...

OpenSIPS自定义统计项目

有朋友问,怎么统计ops每日的呼叫量 这就是需要自定义统计项目 我第一感觉是dialog模块 后来又查了下资料,statistics模块更合适,Kamailio也有同名模块...

python数据结构与算法-02_数组和列表

线性结构 本节我们从最简单和常用的线性结构开始,并结合 Python 语言本身内置的数据结构和其底层实现方式来讲解。 虽然本质上数据结构的思想是语言无关的,但是了解 Python 的实现方式有助于你避免一些坑。 我们会在代码中注释出操作的时间复杂度。 数…...

计算机网络基础知识-网络协议

一:计算机网络层次划分 1. 网络层次划分 2. OSI七层网络模型 1)物理层(Physical Layer):及硬件设备,物理层确保原始的数据可在各种物理媒体上传输,常见的设备名称如中继器(Repeater,也叫放大器)和集线器; 2)数据链路层(Data Link Layer):数据链路层在物理层提…...

【Vue3】scoped 和样式穿透

我们使用很多 vue 的组件库&#xff08;element-plus、vant&#xff09;&#xff0c;在修改样式的时候需要进行其他操作才能成功更改样式&#xff0c;此时就用到了样式穿透。 而不能正常更改样式的原因就是 scoped 标记。 scoped 的渲染规则&#xff1a; <template>&l…...

Python 邮件发送(163为例)

代码 import smtplib import socket from email.mime.text import MIMEText from email.header import Headerdef send_mail():# 设置发件人、收件人、主题、内容from_address 18847097110163.comto_address 963268595qq.comsubject test emailbody hahahhahaha# SMTP邮件…...

BlendTree动画混合算法详解

【混合本质】 如果了解骨骼动画就知道&#xff0c;某一时刻角色的Pose是通过两个邻近关键帧依次对所有骨骼插值而来&#xff0c;换句话说就是由两个关键帧混合而来。 那么可不可以由多个关键帧混合而来呢&#xff1f;当然可以。 更多的关键帧可以来自不同的动画片段&#xf…...

2013年01月16日 Go生态洞察:并发不是并行

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

基于TurtleBot3在Gazebo地图实现机器人远程控制

1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...

【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)

前言&#xff1a; 双亲委派机制对于面试这块来说非常重要&#xff0c;在实际开发中也是经常遇见需要打破双亲委派的需求&#xff0c;今天我们一起来探索一下什么是双亲委派机制&#xff0c;在此之前我们先介绍一下类的加载器。 目录 ​编辑 前言&#xff1a; 类加载器 1. …...