攻防世界-web writeup(xctf)

本文围绕CTF基础题展开,介绍了多种题型的解题方法。包括查看网页源码、利用GET和POST请求、分析robots协议、处理备份文件、操作cookie、修改前端代码、转换十六进制字符、伪造请求头、连接webshell、执行命令、利用PHP变量特性以及暴力破解等,还给出了各题对应的flag。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x01 view source

flag放在源码之中,但是网页的脚本限制了鼠标作用,无法点击和选中,直接F12或者浏览器快捷键查看网页源码即可得到flag
在这里插入图片描述

flag:cyberpeace{e07dcafaeeb31df23b4d661dd4da56f9}

 
 
 
 

0x02 get_post

GET和POST是http协议的两种主要请求方式

GET请求直接把参数包含在url中

在这里插入图片描述

POST请求在网页没有输入的情况下,利用工具提交,如hackerbar

在这里插入图片描述

flag:cyberpeace{c4e43c9c9d0f729358dd9417219a9da0}

 
 
 
 

0x03 robots

robots协议会在网站主目录产生一个robots.txt文件,打开文件,看到flag所在位置,访问flag_is_h3re.php获取flag
在这里插入图片描述

flag:cyberpeace{1b59446bc8e566382e01b0c209b899bd}

 
 
 
 

0x04 backup

备份文件分三种
1.编辑器自动备份
2.版本控制系统备份
3.开发者主动备份
知道了主页的备份文件index.php.bak,访问得到文件,删除bak后缀再用浏览器打开php文件得到flag

flag: cyberpeace{4376485b1a095581d7fb57b8ab3bb924}

 
 
 
 

0x05 cookie

使用浏览器控制台找到cookie,按照其中信息访问cookie.php,得到flag
在这里插入图片描述
在这里插入图片描述

flag: cyberpeace{0816ff94f7edddb54f92f5c9d826a1a0}

 
 
 
 

0x06 disabled_button

修改前端代码,将按钮的disable属性去掉就可以点击了
在这里插入图片描述

flag: cyberpeace{de3c3c35166596311b23137ae6f3d33a}

 
 
 
 

0x07 simple_js

查看网页源代码
在这里插入图片描述
将fromCharCode中的16进制转为ascii字符,55,56,54,79,115,69,114,116,107,49,5055,56,54,79,115,69,114,116,107,49,5055,56,54,79,115,69,114,116,107,49,50,但是输入之后还是不对,再细看源码,发现循环没有用到tab,也就是说没有用到输入的数据,将源码copy下,把其中的tab2改成tab,得到flag。

<html>
<head>
    <title>JS</title>
    <script type="text/javascript">
    function dechiffre(pass_enc){
        var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
        var tab  = pass_enc.split(',');
                var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length;
                        k = j + (l) + (n=0);
                        n = tab2.length;
                        for(i = (o=0); i < (k = j = n); i++ ){
                        	o = tab[i-l];
                        	//tab2改为tab
                        	p += String.fromCharCode((o = tab[i]));
                            if(i == 5)break;
                            }
                        for(i = (o=0); i < (k = j = n); i++ ){
                        o = tab[i-l];
                                if(i > 5 && i < k-1)
                                		//tab2改为tab
                                        p += String.fromCharCode((o = tab[i]));
                        }
        p += String.fromCharCode(tab2[17]);
        pass = p;return pass;
    }
    //直接弹出答案
    var s = "\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30";

    //h = window.prompt('Enter password');
    alert( dechiffre(s) );
</script>
</head>

</html>

或者直接写脚本将字符串中的十六进制转为字符

flag:cyberpeace{786OsErtk12}

 
 
 
 

0x08 xff_referer

打开网页后第一个要求是IP地址必须为123.123.123.123,根据http协议,其头字段的X-Forwarded-For字段是用来判别最原始的来源ip,即用burpsuit抓取http请求包,在头字段添加X-Forwarded-For字段就可以伪造来源ip
在这里插入图片描述
提交之后反回一个页面,要求必须来自https//:www.google.com。
http请求头中Referer字段便是用来告诉服务器该网页是从哪个页面链接过来,即需要在请求头中再加入一个Referer字段
在这里插入图片描述
提交得到flag

flag: cyberpeace{17bb357d42b6151576a75f2ef3089cdb}

 
 
 
 

0x09 webshell


网页描述的是一个一句话木马的webshell,根据题意,需要连接这个webshell

利用菜刀连接在这里插入图片描述
找到flag在这里插入图片描述

flag:cyberpeace{8333cbdfb5aa36d1238a005b1241a6cb}

 
 
 
 

0x0A command_execution

在这里插入图片描述
一个web程序,调用系统的ping命令,限制参数数量为3,题目描述之中书名这个程序没有写waf,没有过滤参数,就可以考虑用linux管道执行命令寻找flag

& find / 列出系统中所有文件

在这里插入图片描述
在网页页面中找到flag所在的目录,用cat读取文件
在这里插入图片描述

flag: cyberpeace{25b31692838e8403383f9916e03e0705}

 
 
 
 

0x0B simple_php

在这里插入图片描述
根据网页代码,需要通过url接受两个参数,代码中的判断条件比较有意思,第一个是要求参数a为0的同时又不能为0,第二个条件则是要求b不能为数字,但又得大于1234。
利用php变量的特性,可以利用数字后面添加字符满足条件获取flag。
在这里插入图片描述

flag: Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}

0x0C weak_auth

根据提示,利用admin登录,burpsuit暴力破解,得到密码登录。
在这里插入图片描述

<think>嗯,用户需要关于攻防世界Web部分的Upload1挑战的解思路或writeup。首先,我应该回忆一下常见的Upload类目的常见漏洞点,比如文件上传绕过、黑名单过滤、MIME类型检查、.htaccess利用、内容检测绕过等。 根据提供的引用,其他Upload目如upload3可能涉及Git泄露、远程命令执行漏洞(如ThinkPHP的RCE)或者数据库中的敏感表字段。可能需要扫描目录,利用工具如GitHack获取源码,或者通过上传webshell获取flag。例如引用[2]提到通过Git泄露获取源码,引用[4]使用了ThinkPHP的RCE漏洞执行命令。 对于Upload1,可能类似的思路适用。首先需要检查是否有前端验证,比如文件类型、扩展名的检查,是否可以被绕过,比如修改Content-Type、使用双扩展名(如.php.jpg)、或者大小写绕过(如.PhP)。此外,服务器可能配置了黑名单,需要尝试上传.htaccess文件来允许执行特定扩展名,或者利用解析漏洞,比如Apache的解析顺序问。 另外,可能需要结合其他漏洞,比如文件包含,通过上传图片马,然后利用文件包含漏洞执行其中的代码。或者检查是否有二次渲染,使用绕过技巧。也有可能上传后文件名被重命名,需要找到上传路径和文件名规律。 查看用户提供的引用,特别是引用[3]中提到secret_table和fl4g字段,可能提示需要数据库注入或读取文件,比如通过上传PHP文件执行系统命令读取flag。引用[4]中的RCE payload可能相关,如果存在框架漏洞的话。 综上,解步骤可能包括:检查前端验证,尝试绕过文件类型检查;上传webshell或恶意文件;利用解析漏洞或.htaccess;结合其他漏洞如文件包含或RCE执行命令获取flag。需要分步骤测试,并参考已有的writeup中的常见方法。</think>### 攻防世界 Web Upload1 解思路 #### 1. **目初步分析** - **目标场景**:文件上传类挑战,通常需要绕过上传限制,上传恶意文件(如Webshell)或触发漏洞获取服务器权限。 - **常见限制**:扩展名黑名单、MIME类型检查、文件内容检测、路径重命名等[^1][^3]。 #### 2. **关键步骤与绕过方法** 1. **检查前端验证**: - 通过浏览器开发者工具查看前端代码,确认是否有扩展名过滤逻辑。若存在,可手动修改请求绕过(如Burp Suite拦截修改`filename`)[^2]。 - 示例Payload:上传`.php`文件,修改为`.php5`或`.phtml`(若服务器解析此类扩展名)。 2. **绕过MIME类型检测**: - 若服务器校验`Content-Type`,需伪造类型(如`image/jpeg`),但文件内容仍保留PHP代码。 - 示例上传请求头修改: ```http Content-Disposition: form-data; name="file"; filename="shell.php" Content-Type: image/jpeg ``` 3. **利用.htaccess文件覆盖**(适用于Apache服务器): - 上传`.htaccess`文件,配置特定扩展名解析为PHP: ```apache AddType application/x-httpd-php .abc ``` - 后续上传扩展名为`.abc`的Webshell即可执行。 4. **文件内容绕过**: - 若服务器检测文件内容关键字(如`<?php`),可替换为短标签`<?=`或使用编码/混淆技术。 - 示例代码: ```php <?= system($_GET['cmd']); ?> ``` 5. **结合其他漏洞**: - 若存在文件包含漏洞,可上传图片马(如包含PHP代码的JPEG文件),通过包含触发代码执行[^4]。 - 若服务器存在已知框架漏洞(如ThinkPHP RCE),直接构造Payload读取Flag。 #### 3. **实战示例** 假设目限制上传`.php`但未过滤`.phar`: 1. 上传Webshell文件`shell.phar`,内容为: ```php <?php system("cat /flag"); ?> ``` 2. 访问上传路径`/uploads/shell.phar?cmd=ls`,触发命令执行。 #### 4. **扩展技巧** - **双写扩展名绕过**:如`shell.pphphp`,若过滤逻辑为删除`php`字符串。 - **大小写混淆**:如`shell.PhP`(Windows服务器不区分大小写)。 - **利用解析漏洞**:如`shell.php.jpg`被Apache解析为PHP(需特定配置)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值