当前位置: 首页 > 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; 文章图文…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...