Dragon Knight CTF 2024WP
呃呃呃,第一次正式打的比赛吧,被虐爆了,web方向只有三道题,但是由于各种原因,只写出来了一道,后面就没太多时间去写了,这是我对本次比赛的复现,希望能给各位师傅一点帮助
穿梭隐藏的密钥首先打开来的生态环境长这样
老样子,F12看看有没有好东西
访问c3s4f.php,看看有什么
继续看源码,有一个提示
这很明显是要让我们fuzz出参数名,在这里给各位师傅推荐一个好工具Arjun,在kali中pip install Arjun就可以安装了
很快啊,就fuzz出了一个参数shell,我们用GET方式提交,随便输入一个参数,得到如下页面
很经典的xxf,但是无论怎么修改为127.0.0.1,都没有新的提示出来,所以我们扫一扫目录下有什么
很好,有一个secret.php,显然,这里面指的秘密肯定就是这个secret.php,所以我们试着用ssrf进行攻击
payload如下:c3s4f.php?shell=http://spoofed.burpcollaborator.net/secret.php,具体参考这篇文章:SSRF | Lazzaro (lazzzaro.github ...
WEB攻防-PHP特性
PHP缺陷函数强等于与弱等于在PHP中,=代表赋值,==代表弱等于,===代表强等于,强等于和弱等于区别就在于是否比较类型
===:比较的不仅仅是值相等,而且类型也必须相等,只有当值和类型都相等的时候,才会返回ture例如 var_dump(1==="1");返回的是false
==:弱比较只要求比较两个值在转化类型之后相等即可,如果两个值的类型不同,会尝试将其中一个值转化为另一个值的类型例如 var_dump(1=="1");返回的是true
综上,php比较运算符===在进行比较时,会先比较两种字符串的类型是否相等,再比较值是否相等,一般md5弱等于比较常考
具体例子可以参考这一篇:PHP强相等&弱相等(附带科学计数法)_php 科学计数法-CSDN博客
intval函数intval()函数可以获取变量的整数值,常用于强制类型转换,常见语法int intval($var,$base),其中$var为需要转化的变量,$base为转换所需要的进制,当base为空时,默认值为0,会根据$var的格式来调整转化进制,如果$var以0开头, ...
文件上传src漏洞
构造数据包首先讲请求改成POST,请求体中一定要有参数,例如upfile=123456
右击选择改成表单模式:change body encoding
就会变成下面的格式
然后再添加文件参数名,在upfile后加入文件名:;filename="微信图片_20240220223517.png",此时就构造好了一个数据包
文件上传导致XSS的POCxss.svg和xss.xml<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg version="1.1" baseProfile="full" xmlns="http://www.w3.org/2000/svg"> ...
WEB攻防-.NET项目
.NET项目.NET是一个开源(MIT License)、免费、跨平台的开发平台框架,用于生成多种类型的应用程序。.NET 可以运行使用多种语言(C#、Visual Basic、F#)编写的程序,其中C#是最常用的语言。C#和JAVA很类似,是为了防止JAVA的垄断局面而孕育而生的
DLL文件反编译DLL为动态连接库,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件,在Windows上,一个软件中出现最多的就是DLL文件
DLL文件可以类比为JAVA的jar包,存放各类函数的实现过程,当程序需要调用函数时先载入DLL,然后取得函数地址,最后进行调用,使用DLL的好处是不需要在运行之初加载所有代码,只需要在某个函数的时候从DLL中取出即可
DLL的文件格式与视窗EXE文件一样——也就是说,等同于32位视窗的可移 ...
WEB攻防-ASP安全
ASP简介ASP文件可包含文本、HTML标签和脚本。ASP文件中的脚本可以在服务器上执行。ASP即(Active Server Pages),动态服务器页面,相对于PHP和JAVA,ASP搭建在Windows2003上,目前已经较为过时,使用ASP的网站也已经越来越少,所以这部分漏洞利用价值也不高,但是仍然需要有一定的了解
ASP环境搭建组合Windows操作系统IIS中间件Access数据库
IIS全称是Internet Information Services(互联网信息服务),是微软提供的运行在Windows系统下的中间件,主要用来解析.asp,.asa,.cer三种格式的文件,实际环境中.asp一般都是被过滤的,所以有时候尝试一下asa和cer两种格式上传即可
什么是文件解析?当服务器接收到一个HTTP请求时,IIS(中间件)首先要决定如何去处理这个请求(一般都是根据文件后缀名,如果是PHP就丢给PHP程序去处理,如果是ASP就丢给IIS去处理),服务器获取所有请求页面的后缀名后,会在服务器端寻找可以处理这类后缀名的应用程序,如果找不到就直接把这个文件返回给客户端
版本对应Wi ...
PHP开发-ThinkPHP框架及历史漏洞
框架概述其实框架,就是别人写好的包装起来的一套工具,把你原来必须要写的,必须要做的东西写好了放在那里,你只需要调用他给定的方法来实现相应的功能,很方便开发者进行相关的开发
WEB开发的MVC模式,其中M是模型,V是视图(表现层),C是控制层,框架就是M层,把一个不涉及业务相关的东西都写好了包装起来,我们使用就可以了,框架其实就是把很多复杂的东西都弄好了,我们只需要在里面加上具有我们独有的东西就可以了
框架的设计出来的目的是为了省略掉一些基本的相同底层代码的反复书写,只需调用框架的方法就可以实现我们想要的功能
我们常见的框架就是TP框架,下面都拿TP框架进行举例学习
基于TP框架的CMSAdminLTE后台管理系统layui后台管理系统thinkcmfH-ui.admin后台管理系统tpshopFsatAdmineyoucmsLarryCMS后台管理系统tpadmin后台管理系统snake后台管理系统ThinkSNSDolphinPHP后台管理系统WeMall商城系统CLTPHP齐博CMSDSMALLYFCMFHisiPHP后台管理系统Tplay后台管理系统lyadmin后台管理系统ha ...
PHP开发-JS前端逻辑登录、Ajax数据传输
JS前端认证文件上传首先依旧是确定表单html代码,如下所示
<form class="upload" method="post" enctype="multipart/form-data" action=""> <input class="uploadfile" type="file" name="upload" onchange="checkFileExt(this.value)"/><br /> <input class="sub" type="submit" name="submit" value="开始上传" /></form>
然后引入js代码。这个js代码相当于别人封装好的一系列代码,我们通过script进行文件包含,然后我们就可以直接使用script中js声明 ...
PHP开发-登录验证之Cookie、Session、验证码
当看到一个登录界面的时候,我们首先要思考一下整个登录逻辑是什么样的
1.客户端发送登录请求 账号 密码2.服务器接受账号密码3.判断账号密码的正确性正确 成功登录--->跳转成功登录页面错误 登录失败--->重新登录因为后台有很多不同的界面,所以为了方便用户,不可能每一次都进行登录,为了方便,一般会使用cookie或者session进行验证身份cookie:存储在客户端浏览器中,可进行cookie伪造,盗取session:存储在服务器中,可进行会话劫持
Cookie验证验证及跳转代码
<form action="" method="POST"> 帐号:<input type="text" name="user"> 密码:<input type="password" name="pass"> <input type="submit" value="提交"&g ...
PHP开发-输入输出以及UA头伪造
输入输出输入输出即用户通过我们设置的搜索框对我们设置的数据库进行模糊查询,但是如果设置不当或者未做好过滤处理,就容易造成sql注入和XSS攻击
搜索框代码
<br><br><hr><form id="form1" action="" method="post"> <label for="search">内容搜索:</label> <input type="search" name="search" id="search"> <input type="submit" name="submit" id="submit" value="提交"></form>
后端进行模糊查询php代码
<?phpinclude('config/conn.php ...
PHP开发-文件上传下载删除
通过实现PHP代码开发实现相关的功能,我们可以更好的了解漏洞产生的原理,以及那种方式会产生漏洞,哪种方式不会产生漏洞,以方便我们更好的选择相关的攻击方式
文件上传类文件上传类总共包括两种方式,一种是代码自主写,另一种是引用相关的富文本编辑器
代码自主写相关实现代码
@$file_name = $_FILES['upload']['name'];@$file_type = $_FILES['upload']['type'];@$file_size = $_FILES['upload']['size'];@$file_tmpname = $_FILES['upload']['tmp_name'];@$file_error = $_FILES['upload']['error'];//执行检测上传文件类型if ($file_type=='image/png'){ i ...
PHP开发-数据库操作
PHP开发常用工具Navicat:可视化操作数据库,更方便进行数据库操作Dreamweaver:前端页面设计,可以实现实时展现相关代码样式phpStudy:PHP搭建环境,可以以localhost访问,是php学习的必备工具phpStorm:php开发IDE,进行PHP代码审计的时候,可以作为调试的很好的工具
PHP入门语法(mysql连接)PHP代码必须包含在<?php ?>中PHP使用mysql_connect()来连接数据库,有三个参数,分别是servername,username,password,比如$con = mysql_connect(servername, username,password)mysql_query()用来向数据库发送数据查询命令,例如mysql_query(select * from mysql, $con)
关于mysql数据库的几种基本php语法
1.增:a.创建库 CREATE DATABASES database_nameb.创建表 CREATE TABLE table_name(column_name1 data_type,c ...
信息打点-红队工具篇
网络空间四大引擎Fofa对应网址:网络空间测绘,网络空间安全搜索引擎,网络空间搜索引擎,安全态势感知 - FOFA网络空间测绘系统
可以进行一些资产搜索,比如域名,中间件的查找
Quake类似于Fofa,360网络空间测绘 — 因为看见,所以安全
当然类似的还有Shodan和Zoomeye,这两个用的比较少,下面是相关网址
https://www.shodan.iohttps://www.zoomeye.org
自动化收集工具ARL灯塔ARL项目地址:https://github.com/Aabyss-Team/ARL
官方的ARL现在已经停用,准备改成商用了,上方的项目是一个老哥保存的
ARL灯塔的功能
1
任务名称
任务名称
2
任务目标
任务目标,支持IP,IP段和域名。可一次性下发多个目标
3
域名爆破类型
对域名爆破字典大小, 大字典:常用2万字典大小。测试:少数几个字典,常用于测试功能是否正常
4
端口扫描类型
ALL:全部端口,TOP1000:常用top 1000端口,TOP100:常用top 100端口,测试:少数几个端口
5
域名爆破
...
信息打点-APP&小程序的抓包、反编译、资产提取
APP内在提取-AppInfoScannerAppInfoScanner是一种很好的提取app内部信息的集成化测试工具,可以很方便的提取出相应的信息,以满足我们的安全测试需求
安装说明下载地址:https://github.com/kelvinBen/AppInfoScanner
在kali中输入如下命令
进入APPInfoScanner的主文件夹,安装我们所需要的环境依赖
pip install -r requirements.txt
在安装相关依赖环境的时候,可能会出现frida无法安装成功,这个时候只需要打开我们的梯子,科学上网,重新pip就可以了
至此我们就搭建好了AppInfoScanner工具,我们接着就可以使用这个工具进行相关测试
使用演示相关测试命令:1.python app.py android -i xxx.apk2.针对其他应用,可以选择查看readme文件
如下我们针对某瑟瑟软件进行资产提取
很不幸,这个apk被加壳了,接下来我们介绍什么叫加壳
壳(shell)是什么?开发者为了防止逆向(反编译)和破解和抓包对app加的保护层(壳),一般大型项目的app会加 ...
信息打点-几种常见的CDN绕过方式
CDN前置知识工作原理及阻碍CDN:Content Delivery Network,内容分发网络,其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输得更快、更稳定,通俗来说,就是在自己主机和服务器之间找一个就近点,这个就近点存储着服务器的访问资源,相当于缓存,在访问服务器时会定向到临近主机,以加快访问速度
CDN阻碍:在进行渗透测试的时候可能测试的是一个CDN节点服务器,无法获取真实服务器的数据
CDN配置加速域名:当某IP地址下的某个域名被加速,那么当用户访问该域名时,它就是被加速访问的,对于其他子域名,就不是加速访问的
业务类型:服务器中被加速的资源。分为页面加速、大文件下载加速,视频点播加速和全站加速;当选择特定的加速服务时,我们可以通过访问其他未被加速的资源,来找到真实的IP地址
加速区域:指定区域进行加速,加速效果只在区域内有效,阿里云有中国境内加速,全球加速,全球加速(除中国境内)三种加速区域
CDN类型1.传统访问:用户访问域名—->解析服务器IP—->访问目标主机
2.普通CDN:用户访问域名—->CDN节点—-&g ...
信息打点-端口扫描&WAF扫描&负载均衡&CDN服务
获取网络信息-服务厂商&网络架构1.每个厂商的防护策略不同,获取到厂商信息可以第一时间知道目标服务器的防护情况
2.搞清楚是外网还是内网
下面是一个简单的例子,说明为什么搞清楚内外网很重要外网出口IP:196.128.1.1内网:125.136.7.6内外125.136.7.6可以直接访问外网,在交换机处做端口映射,流量给到192.168.1.1外网是探测不到内网的对于安全测试来说,如果进行端口扫描,只能扫描到外网流量出口,对于部署在内网的网站,会扫不到或者误报
3.收集同一网段下其他资源信息
比如目标:171.40.78.83网段:171.40.78.1-255可以收集该网段下WEB应用、FTP、SSH、redis等各种服务的信息如果已经拿到171.40.78.99的服务器信息,与目标靶机处于同一网段,就可以进行内网攻击安全测试手段
服务信息获取-协议应用&内网资产协议应用(端口扫描)渗透测试常见开放端口及利用:渗透测试常见开放端口及利用 - 我超怕的 - 博客园 (cnblogs.com)
端口扫描工具:Nmap、Masscan
示例:nmap www.xiaodi ...
SQL注入
什么是SQL注入?SQL(Structured Query Language),结构化查询语言,例如
SELECT * FROM tbl_name WHERE a=xxx AND...UPDATE tbl_name set col_1 = 'xx' where ...INSERT INTO tbl_name ...
当web应用向后台数据库传递SQL语句进行数据库操作时,如果对用户输入的参数没有经过严格的过滤处理,那么攻击者就可以构造特殊的SQL语句,直接输入数据库引擎执行,获取或修改数据库中的数据。
本质是把用户输入的数据当作代码来执行,违背了“数据与代码分离”的原则
SQL注入类型按照注入方式的不同,我们可以将注入分为:
联合查询:可以明确判断回显位置的时候使用(union select)报错注入:无回显位置,但是有报错输出的情况可以使用布尔盲注:关闭错误回显和数据回显,但是页面会根据我们的输入对错变化,可以使用布尔盲注时间盲注:无任何形式的回显,但是对睡眠函数sleep()有响应,可以使用时间盲注堆叠注入:堆叠注入在mysql上不常见,必须要用到mysql ...
计算机网络-TCP&IP&MAC
可靠传输——TCPHTTP是基于TCP协议传输的,TCP协议是一种可靠的传输,HTTP之所以要用到TCP协议而不使用UDP协议,也很简单,设想一下如果你在上网的时候页面发生缺失,或者图片缺失,很难受对不对,所以要使用可靠传输来保证我们上网的体验感,所以我们先来了解一下TCP协议
TCP包头格式TCP报文首部格式如下图所示
首先源端口号和目的端口号是必不可少的,有了这两个端口号,数据包才知道从哪里来,要到哪里去
接下来序号也是必不可少的,序号是包的序号,这个是为了解决包乱序的问题,给包编上序号,就不会弄混啦😁😁😁
然后就是确认号,目的是为了确认发出去的对方是否有收到,如果没有收到就应该重新发送,直到送达,这个是为了解决丢包问题
接下来就是一些状态位,SYN是发起一个连接,ACK是回复,RST是重新连接,FIN是结束连接等等。因为TCP是面向连接的,因而双方需要维护连接的状态,这些状态位的发送,会引起双方状态的变更
紧接着就是窗口大小,因为TCP承担着流量控制的责任,所以在通信的过程中,通信双方各声明一个窗口(缓存大小),标识自己当前能够处理的能力,别发送的太多太快,也别发送的太少 ...
计算机网络-TCP/IP模型&HTTP
TCP/IP网络模型概述应用层我们能直接接触到的就是应用层,我们手机和电脑使用的应用软件都是在应用层实现的
应用层只需要专注于为用户提供应用功能,如HTTP、FTP、Telnet、DNS、SMTP等等
应⽤层是⼯作在操作系统中的⽤户态,传输层及以下则⼯作在内核态
传输层传输层有两个协议,分别是TCP和UDP
TCP 的全称叫传输控制协议(Transmission Control Protocol),⼤部分应⽤使⽤的正是 TCP传输层协议,⽐如 HTTP 应⽤层协议。TCP 相⽐ UDP 多了很多特性,⽐如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对⽅
UDP相对来讲就很简单,只负责发送数据包,不保证数据包是否能抵达对方,但是实时性更好,传输效率也更高。当然UDP也可以实现可靠传输,把TCP的特性在应用层上实现就可以
应用需要传输的数据可能会非常大,直接全部传输不是很好控制,因此当传输层的数据包大小超过MSS(TCP最大报文段长度),就要将数据包分块,这样即使在传输的过程中发生丢包,也只需要重新传输这一个分块,而不需要重新发送整个数据包,每个分块被称为一个TC ...
信息打点-资产架构&源码泄露
资产架构WEB单个源码安全单个源码的目录指向单个站点域名
WEB多个目录源码安全一个网站,两套程序,任何一个程序出现问题都可以进行渗透测试,选择不同的目录
例如:
www.borgeous.com 论坛www.borgeous.com/blog wordpress程序
WEB多个端口源码安全用端口区分不同的程序,当某一端口出现漏洞时,即可进行渗透测试
www.borgeous.com 论坛www.borgeous.com:8081 wordpress程序
服务器架设多个站点安全同一个ip下的子域名,例如
bbs.borgeous.com 47.178.156.32 dz论坛edu.borgeous.com 47.178.156.32 edu程序子域名,同一个IP
给到目标bbs.borgeous.com,可以尝试对edu.borgeous.com进行测试
架设第三方插件接口安全wordpress插件
web应用插件(phpmyadmin) ——>数据库管理插件
有些数据库不支持外联,为了方便数据库管理,会安装插件,但也 ...
Docker内部详解
上一篇文章已经讲述了为什么会有Docker容器的出现,其实本质上来说,Docker是代码和操作系统之间的中间层,为了解决程序员“这个程序在我的电脑上明明能跑,为什么到你那就不行了呢”的问题。科学家们选择将程序和环境(依赖库和配置)一起打包给到对方运行,而这个打包并运行的工具软件,就是Docker,接下来我们看看它具体是怎么实现的
基础镜像 既然环境不同会导致运行结果不同,那么我们首先要做的事情就是统一环境。而环境中最重要的就是操作系统。我们得让所有程序都跑在同一个操作系统上,但是如果打包整个操作系统,那空间未免需要占用的太多,但是我们又知道,操作系统分为用户空间和内核空间,并且应用程序都是运行在用户空间的,这不就解决了,我们完全可以阉割操作系统,只要操作系统的用户空间部分,就能构建我们想要的环境。
其次我们需要统一语言,即程序语言依赖,我们要跑python,好歹得装个python解释器吧;要跑JAVA应用,得装个JVM吧。所以,程序语言依赖也是必不可少的一项
我们选中一个基础的操作系统和程序语言后,我们将它们对应的文件系统,依赖库,配置等放在一起打包成压缩包似的文件,这就是所谓的基础镜 ...