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

news2024/11/19 23:14:07

目录

前置知识导图:

​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+“+”放大字体。

使用法则:

 实例:永恒之蓝漏洞:

设置:

 

攻击完成之后:

 

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

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

相关文章

JSONP解决跨域问题

一、什么是同源 概念:如果两个页面的协议、域名和端口都相同,则这两个页面具有相同的源。 二、什么是同源策略 概念:是浏览器提供的一个安全功能。 三、什么是跨域 概念:同源指的是两个URL的协议、域名、端口号一致&#xff0c…

前端开发调式必备技能F12开发者工具之Elements(元素)面板,详细图解带流程【第一部分】

目录 一、进入浏览器开发工具的几种方式 二、Elements(元素)面板 左侧区域 右侧区域 计算样式 事件监听器 大家好!我是爷爷的茶七里香,这个名字有没有让你想起周董的歌捏?好了,废话不多说,开始今…

项目实训记录(十二)——el-table-column根据条件修改字体颜色

目录 一、干了什么? 二、问题和解决方法 1. el-table-column根据条件修改字体颜色 2.问题 总结 一、干了什么? 本周要完成数据去重工作和前端的完善。 清理工作 主要是来删除用户插入的重复数据。由管理员决定表是否允许重复数据。如果用户上传的表不允…

vue3 自定义全局loading组件 (PC和移动端都非常适用)

前言 在开发的过程中,点击提交按钮,或者是一些其它场景总会遇到loading加载框,PC的一些ui库也没有这样的加载框,无法满足业务需求,因此可以自己自定义一个,实现过程如下。 效果图(loading样式…

个人博客小程序

文章目录1.前言2.首页博客数据展示3.用data中的数据渲染博客展示4.使用云数据库创建集合blogs5.读取数据库中的数据6.创建添加博客页面1.前言 这篇文章详细的介绍了个人博客小程序的云开发流程,包括博客展示页面,添加博客页面的创建,以及云函…

pm2基本使用

1.pm2的基本介绍 pm2是node的进程管理器,利用它可以简化node任务的管理,且内置了许多功能,常用于后台脚本管理。 pm2特性 自带热部署 - - - 当源文件更新 线上项目也会自动重启后台运行 - - - 不会占用实时窗口 会在后台运行服务信息查看 - - - 查看运行中程序的…

Vue权限控制

此文章根据视频教程进行整理前端面试官必问系列-后台系统的权限控制与管理,建议搭配视频教程一起食用效果更佳 目录 1、权限相关概念 1.1、权限的分类 后端权限 前端权限 1.2 、前端权限的意义 降低非法操作的可能性 尽量减少不必要请求,减轻服务…

VUE跨域、常用解决跨域的方法

当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时,那说明跨域了。 跨域是因为浏览器的同源策略所导致,同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,同源是指&…

〖大前端 - 基础入门三大核心之CSS篇⑱〗- CSS中的背景

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费开放,购买任意白宝书体系化专栏可加入TFS-CLUB 私域社区。福利:除了通过订阅"白宝书系列专栏"加入社区获取所有付费专栏的内容之外,还可以通过加入星荐…

【React Router v6】路由组件传参params/search/state(router v6)

欢迎来到我的博客 📔博主是一名大学在读本科生,主要学习方向是前端。 🍭目前已经更新了【Vue】、【React–从基础到实战】、【TypeScript】等等系列专栏 🛠目前正在学习的是🔥 R e a c t 框架 React框架 Reac

react-router v6 如何实现动态路由?

前言 最近在肝一个后台管理项目,用的是react18 ts 路由用的是v6,当需要实现根据权限动态加载路由表时,遇到了不少问题。 v6相比于v5做了一系列改动,通过路由表进行映射就是一个很好的改变(个人认为)&…

Docker利用Nginx部署前端项目

今天给大家分享的是Docker利用Nginx部署Vue等前端页面项目;其实是我工作刚好用到,顺便分享给大家O(∩_∩)O,那么话不多说直接开始。 一:准备文件 我们先将前端项目打包好,放到此文件夹下,例如我这样&#…

ts基本类型 typeof 和keyof

安装编译ts的工具 安装命令:npm i -g typescript 或者 yarn global add typescript。 验证是否安装成功:tsc –v(查看 TypeScript 的版本)。 编译并运行 TS 代码 创建 hello.ts 文件(注意:TS 文件的后缀名…

vue3中ref和reactive的区别

ref 接受一个内部值并返回一个响应式且可变的 ref 对象,有一个 .value 属性,可以通过其读取/修改对象的值。 const active ref(false)console.log(active.value) // falseactive.value trueconsole.log(active.value) // true 为ref值指定泛型参数覆盖…

Vue中的$set

项目场景: 例如:在我写前端项目的时候,后端给我们的一个json对象,并且我已经渲染在页面上了。但是由于我自己的需求,想往返回的对象里面添加一个字段,后来才意识到不是响应式的。如果我们要让这个新字段是…

【博主推荐】html好看的个人主页(附源码)

个人主页介绍【博主推荐】html好看的个人主页1.背景个人主页效果2.背景个人主页代码3.简洁个人主页效果4.简洁个人主页代码5.卡片个人主页效果6.卡片个人主页代码7.星空个人主页效果8.星空个人主页代码源码下载【博主推荐】html好看的个人主页 附带四种风格个人主页 背景个人主…

牛客前端刷题(五)—— CSS相关概念

还在担心面试不通过吗?给大家推荐一个超级好用的刷面试题神器:牛客网,里面涵盖了各个领域的面试题库,还有大厂真题哦! 赶快悄悄的努力起来吧,不苒在这里衷心祝愿各位大佬都能顺利通过面试。 面试专栏分享,感觉有用的小伙伴可以点个订阅,不定时更新相关面试题:面试专栏…

解决vue3+vite+TS 中使用element-plus按需引入 ElLoading、ElMessage 样式失效

ElMessage 样式失效 其实他不是失效了,只是加载到我们的 可以看到下面使用的方式和效果图,vue3的element-plus遇到的问题,因为要测试一下,所以点的频率比较大,但可以明显的看到ElMessage样式显示在你浏览器的下面 i…

echarts之markPoint(在途中任意位置增加标注及自动获取最大最小值处理)

echarts之markPoint(在途中任意位置增加标注及自动获取最大最小值处理) 前言 记录自己工作中的一点小心得,希望可以帮助有同样需求的朋友。 1.使用场景 之前我工作中有需要在图标中添加特殊标识的,我是费劲用散点图进行添加,十分麻烦。又比…

利用Vite或者webpack创建Vue项目,并启动Vue项目

文章目录背景环境准备准备Node.js和npm即可Vite打包webpack打包总结背景 大家好,我是杜晓帅~,一名Java开发程序员;最近想总结一下前端开发的一些东西,包括项目的打包和如何将后端处理的数据在前端进行一个展示,相信大家…