首页 > 其他分享 >Web刷题之polarctf靶场

Web刷题之polarctf靶场

时间:2024-09-01 22:14:17浏览次数:3  
标签:Web 127.0 polarctf 0.1 IP flag 靶场 xdmtql 刷题

PolarCTF

1.XFF

image

打开靶场发现需要ip为1.1.1.1的用户才行, 打开BurpSuite进行抓包并对数据包进行修改,根据题目XFF提示

image

flag{847ac5dd4057b1ece411cc42a8dca4b7}

对此题所考察的知识进行一个扩展(对于构造本地用户语句)

X-Forwarded-For:127.0.0.1
 
X-Forwarded:127.0.0.1
 
Forwarded-For:127.0.0.1
 
Forwarded:127.0.0.1
 
X-Forwarded-Host:127.0.0.1
 
X-remote-IP:127.0.0.1
 
X-remote-addr:127.0.0.1
 
True-Client-IP:127.0.0.1
 
X-Client-IP:127.0.0.1
 
Client-IP:127.0.0.1
 
X-Real-IP:127.0.0.1
 
Ali-CDN-Real-IP:127.0.0.1
 
Cdn-Src-Ip:127.0.0.1
 
Cdn-Real-Ip:127.0.0.1
 
CF-Connecting-IP:127.0.0.1
 
X-Cluster-Client-IP:127.0.0.1
 
WL-Proxy-Client-IP:127.0.0.1
 
Proxy-Client-IP:127.0.0.1
 
Fastly-Client-Ip:127.0.0.1
 
True-Client-Ip:127.0.0.1

Host: 127.0.0.1

2.爆破

image

打开靶场发现是PHP代码,大概就是在目录/flag.php中藏着flag

image

flag{8277e0910d750195b448797616e091ad}

此题也可以通过使用工具dirsearch来爆破出目录
image

对此题的php源码进行一个扩展

1. substr()函数返回字符串中的一部分
substr(string, start, length)其中string和start是必需参数而length是可选参数
注释: 如果start参数是负数且length小于或等于start, 则默认length为0

对于start参数的详细解释:
(1) 若为正数, 即在字符串的指定位置开始
(2) 若为负数, 即在从字符出结尾开始的指定位置开始
(3) 若为0, 即在字符串中的第一个字符处开始

对于length参数的详细解释:
(1) 若为正数, 即从start参数所在的位置返回的长度
(2) 若为负数, 即从字符串末端返回的长度

返回值: 返回字符串的提取部分, 若失败则返回FALSE, 否则返回一个字符串

2. intval() 函数用于获取变量的整数值。
intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

3.login

image

打开靶场, 先F12查看页面源码, 发现存在两串数字, 猜测为学号和密码

image

回显发现成功登录, 根据猜测修改学号最后两位,分别尝试了02-05发现爆出来flag的头, 那就打开BurpSuite进行爆破

image
image

flag{dlcg}

4.iphone

image

点开靶场映入眼帘的就是hate windows, 不妨点击Enter键试试

image

说明需要从iphone或ipad访问才行, 我们打开BurpSuite进行抓包修改

image

flag{ba4c2f175f0dba2f2974e676c6dfbbab}

5.$$

image

打开靶场发现要求GET传参, 但是把能过滤的基本上都过滤了, 我遇事不决就先dirsearch梭哈一下无果, 就去网上搜索有没有什么办法, 发现可以用超全局变量GLOBALS

image

flag{9f8a2133f0cad361ff6d22a445c2531a}

对于超全局变量GLOBALS和PHP相关的知识进行补充

PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。

$GLOBALS — 引用全局作用域中可用的全部变量,与其他超全局变量不同的是$GLOBALS在PHP代码中任何地方总是可用的

**$GLOBALS与关键字global的区别**
$GLOBALS: 用于访问所有全局变量(来自全局范围的变量), 即可以从PHP脚本中的任何范围访问的变量。
global关键字: 用于在函数内部声明全局变量。但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。

****总结:
用 global 时,需要在每个函数内部声明想要使用的全局变量。
用 $GLOBALS 时,可以直接访问和修改全局变量,不需要在函数内部声明。

6.rce1

image

打开靶场知道这是一道命令执行的题目, 提示过滤了空格, 先将藏有flag的文件名回显出来, 此处我们用&ls来获取文件名

image

有了文件名就直接cat就好了, 题目提示说过滤了空格, 我们用${IFS}即可, 没想到还把flag藏在源代码中

image

flag{a3949821f7627a7fd30ab0722ff9b318}

对于此题的知识点进行补充(拼接符命令)

|	只执行第二个命令
||	先执行第一个命令, 若第一个命令执行成功才可继续执行第二个命令
&	无论第一个命令是否执行成功都将继续执行第二个命令
&&	必须要两个命令都能成功才能执行
;	与&的用法类似(此题目也可以直接;ls)

7.GET-POST

image

打开靶场, 发现需要进行GET传参, 我们这边直接用HackBar来进行传参

image

再根据提示, 进行POST传参即可

image

flag{a52b7cac3af0b081349001c92d79cc0a}

8.被黑掉的站

image

打开靶场发现并没有什么异样的地方但提示该网站还存在马, 用工具dirsearch扫目录, 发现存在/index.php.bak和/shell.php, 分别对其进行访问

image

猜测该为字典, 再对/shell.php进行访问

image

打开BurpSuite用刚刚得到的字典进行爆破

image

flag{8e539a7a46fea05dea18b9b9f9ff6a63}

9.swp

用工具dirsearch扫一下目录, 发现存在/.index.php.swp

**image
**

访问该目录会发现得到下面代码
function jiuzhe($xdmtql){ //传入xdmtql变量
	return preg_match('/sys.*nb/is',$xdmtql); //匹配变量
} 
$xdmtql=@$_POST['xdmtql']; 
//判断变量是否为数组
if(!is_array($xdmtql)){
	//利用函数jiuzhe来判断
	if(!jiuzhe($xdmtql)){
		//绕过preg_match函数后匹配变量,匹配到的话输出flag
		if(strpos($xdmtql,'sys nb')!==false){
			echo 'flag{*******}'; 
		}else{ 
			echo 'true .swp file?'; 
			}
	}else{ 
		echo 'nijilenijile'; //匹配到/sys.*nb/is的话输出
	}
}

思考preg_match()绕过:
我们都知道preg_match()的回溯次数默认是1000000次(中英文次数不同, 实测回溯为100w次), 但也是可以设定的, 具体可以在php.ini中查到
exp:
import requests

result = requests.post("http://77e3de24-d309-4b3c-84dc-b78d45c38ed3.www.polarctf.com:8090/", data={"xdmtql":"sys nb"+"aa"*1000000})
print(result.text)

#flag{4560b3bfea9683b050c730cd72b3a099}

10.简单rce

打开靶场发现是代码审计, 大概了解过滤掉了命令执行函数、输出函数以及空格

image

我们通过执行函数passthru()来替换system(), 空格就用${IFS}替代即可

image

ls命令找到flag文件, 用sort来代替cat来读取flag文件

image

#flag{j6856fd063f0a04874311187da1191h6}

对绕过做一个总结:

1. 命令执行函数
system() 	//输出并且返回最后一行shell的结果
exec()	    //不会输出结果, 返回最后一行shell的结果, 而且所有结果可以保存到数组中返回
passthru()	//只调用写进去的命令, 并把命令的与逆行结果直接输出到设备上(可以替换system)

2. 输出函数
cat 从第一行开始将所有内容输出
tac 从最后一行倒序将所有内容输出
nl 显示时输出行号(与cat -n类似)
more 根据窗口大小, 一页一页显示文件内容
less 和more类似, 优点在于可以往前翻页, 还能搜索字符
head 只显示头几行
tail 只显示最后几行
sort 文本内容排列

3. 空格绕过
${IFS}
$IFS$9
{IFS}$9
重定向符: <>(但是不支持后面跟通配符)
水平制表符%09
%0a	回车
%0d 换行

标签:Web,127.0,polarctf,0.1,IP,flag,靶场,xdmtql,刷题
From: https://www.cnblogs.com/tlomlyiyi/p/18313929

相关文章

  • Gradio.NET 8 简化 Web 应用开发
    Gradio.NET支持.NET8简化Web应用开发 合集-.NET开源工具(7) 1..NET开源快捷的数据库文档查询和生成工具07-312..NET结果与错误处理利器FluentResults08-013..NET+WPF桌面快速启动工具GeekDesk08-194.Gradio.NET支持.NET8简化Web应用开发08-265..N......
  • 代码随想录刷题day13丨二叉树理论基础,递归遍历,迭代遍历,统一迭代,层序遍历
    代码随想录刷题day13丨二叉树理论基础,递归遍历,迭代遍历,统一迭代,层序遍历1.二叉树理论基础1.1二叉树种类满二叉树概述:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。这棵二叉树为满二叉树,也可以说深度为k,有2^k-1个节......
  • webUtils
    importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;publicclassWebUtils{/***将字符串渲染到客户端**@paramresponse渲染对象*@paramstring待渲染的字符串*/publicstaticvoidre......
  • 大厂面试官:你真的了解WebSocket么?
    希望大家能关注点赞,创作不易且没收益,您的小小举动却能给予我大大的鼓励,会激励我继续创作出高质量文章......
  • Go - Web application
    WebapplicationbasicsThefirstthingweneedisahandler.Ifyou’vepreviouslybuiltwebapplicationsusinga MVCpattern,youcanthinkofhandlersasbeingabitlikecontrollers.They’reresponsible forexecutingyourapplicationlogicandforwrit......
  • [python][selenium][web自动化]元素定位方式
    8种方式:1、id2、class_name3、name4、link_text5、partial_link_text6、tag_name7、css_selector8、XPath1、2、3:元素属性,通常跟7、8去组合使用比较多。4、5:是用可点击的链接的文本去定位。6:是根据元素标签去定位。7、8:最常用的方式,能结合前面6种方式组合去定位,我个人觉得理解后......
  • CSS 中的图像、媒体和表单元素——WEB开发系列23
    Web开发中,图像、媒体和表单元素是构建用户界面的重要组成部分。正确地使用CSS来处理这些元素可以大幅提高用户体验,增强页面的美观性和功能性。一、什么是替换元素?图像和视频被描述为“替换元素”。这意味着CSS不能影响它们的内部布局——而仅影响它们在页面上相对于其他元素的......
  • 打卡信奥刷题(676)用Scratch图形化工具信奥B3867[普及组/提高组] [GESP202309 三级] 小
    [GESP202309三级]小杨的储蓄题目描述小杨共有NNN个储蓄罐,编号从00......
  • ctfhub-web-SSRF通关攻略
    一、内网访问1.打开ctfhub给的环境地址2.观察题目发现让我们访问127.0.0.1下的flag.php在地址栏后面有一个url参数 ?url=http://127.0.0.1/flag.php 提交即可二、伪协议读取文件1.打开ctfhub给的环境2.观察题目发现让我们读取flag.php文件读取文件用到的协议是......
  • 前端PWA(Progressive Web App)技术(二)
    三、PWA的优势相对于原生应用和传统Web应用,PWA具有以下显著优势:四、PWA的应用场景PWA技术因其独特的优势,在多个领域得到了广泛的应用,包括但不限于:五、结论PWA技术作为一种结合了Web应用和原生应用优点的新型应用开发模式,具有跨平台兼容性、可安装性、离线访问、快速加载......