Web刷题之polarctf靶场(1)
PolarCTF
1.XFF

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

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.爆破

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

flag{8277e0910d750195b448797616e091ad}
此题也可以通过使用工具dirsearch来爆破出目录

对此题的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

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

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


flag{dlcg}
4.iphone

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

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

flag{ba4c2f175f0dba2f2974e676c6dfbbab}
5.$$

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

flag{9f8a2133f0cad361ff6d22a445c2531a}
对于超全局变量GLOBALS和PHP相关的知识进行补充
PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
$GLOBALS — 引用全局作用域中可用的全部变量,与其他超全局变量不同的是$GLOBALS在PHP代码中任何地方总是可用的
**$GLOBALS与关键字global的区别**
$GLOBALS: 用于访问所有全局变量(来自全局范围的变量), 即可以从PHP脚本中的任何范围访问的变量。
global关键字: 用于在函数内部声明全局变量。但是这个全局变量不是应用于整个网站,而是应用于当前页面,包括include或require的所有文件。
****总结:
用 global 时,需要在每个函数内部声明想要使用的全局变量。
用 $GLOBALS 时,可以直接访问和修改全局变量,不需要在函数内部声明。
6.rce1

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

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

flag{a3949821f7627a7fd30ab0722ff9b318}
对于此题的知识点进行补充(拼接符命令)
| 只执行第二个命令
|| 先执行第一个命令, 若第一个命令执行成功才可继续执行第二个命令
& 无论第一个命令是否执行成功都将继续执行第二个命令
&& 必须要两个命令都能成功才能执行
; 与&的用法类似(此题目也可以直接;ls)
7.GET-POST

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

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

flag{a52b7cac3af0b081349001c92d79cc0a}
8.被黑掉的站

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

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

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

flag{8e539a7a46fea05dea18b9b9f9ff6a63}
9.swp
用工具dirsearch扫一下目录, 发现存在/.index.php.swp
**
**
访问该目录会发现得到下面代码
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
打开靶场发现是代码审计, 大概了解过滤掉了命令执行函数、输出函数以及空格

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

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

#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刷题之polarctf靶场(1)的更多相关文章
- 攻防世界Web刷题记录(进阶区)
攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...
- 攻防世界Web刷题记录(新手区)
攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...
- web刷题记录 极客大挑战2019Knife upload buy a flag
极客2019Knife webshell就是以asp.php.jsp或者cgi等网页文件形式存在的一种代码执行环境,主要用于网站管理.服务器管理.权限管理等操作.使用方法简单,只需上传一个代码文件,通 ...
- [BUUCTF]Web刷题记录
为提升观感体验,本篇博文长期更新,新题目以二次编辑形式附在最后 [ACTF2020 新生赛]Exec 打开后发现网页是关于执行一个ping指令,经过测试是直接执行的,所以就直接命令执行了 127.0. ...
- BUGKU web刷题记录
web1 直接F12查看源码,得到flag. web2 直接输入验证码答案,长度被限制,修改可输入长度,提交后得到flag. web3 $what=$_GET['what']; echo $what; ...
- CTF学习路线指南(附刷题练习网址)
PWN,Reverse:偏重对汇编,逆向的理解: Gypto:偏重对数学,算法的深入学习: Web:偏重对技巧沉淀,快速搜索能力的挑战: Mic:则更为复杂,所有与计算机安全挑战有关的都算在其中 常规 ...
- 湾区求职分享:三个月刷题拿到 Google offer,欢迎踊跃提问
本文仅以个人经历和个人观点作为参考.如能受益,不胜荣幸. 本文会不断的修正,更新.希望通过大家的互动最后能写出一份阅者受益的文章. 本文纯手打,会有错别字,欢迎指出,虚心接受及时更改. 小马过河,大牛 ...
- 牛客网刷题(纯java题型 1~30题)
牛客网刷题(纯java题型 1~30题) 应该是先extend,然后implement class test extends A implements B { public static void m ...
- 刷题记录:[De1CTF 2019]Giftbox && Comment
目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...
- 刷题记录:[强网杯 2019]Upload
目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...
随机推荐
- 用hive或mr清洗app数据
1.项目背景 从大量源数据中清洗出有效数据供后续程序使用. 源数据参照log.txt文件 2.项目源数据说明 9841EF7BDBDF0AC9AF42AEBB4E4F8D4F Id 12 状态1 22 ...
- 利用SpringBoot+rabbitmq 实现邮件异步发送,保证100%投递成功
在之前的文章中,我们详细介绍了 SpringBoot 整合 mail 实现各类邮件的自动推送服务. 但是这类服务通常不稳定,当出现网络异常的时候,会导致邮件推送失败. 本篇文章将介绍另一种高可靠的服务 ...
- Python爬取小说+Servlet+C3P0+MVC构建小说api
一.摘要: 使用python爬取网络小说数据存入数据库,利用C3P0数据库连接池获取数据库数据,采用MVC三层架构对数据库数据进行操作,输出JSON格式数据到前端页面 二.内容: 1.gitee外链消 ...
- 类、事件与对象---Dad&Mom简单练习
目的: 模拟一个家庭日常发生的场景:妈妈做好饭,说:"开饭了!",这是爸爸听到了妈妈的喊话就立马动身开始饭吃.而儿子此时正在打游戏,于是他就说:"等我打完这把游戏再吃!& ...
- 写了一个json小工具,希望大家体验(Mac平台)
用rust写了一个json小工具"JSON PICKER",欢迎大家试用: https://github.com/davelet/json-picker/releases/tag/ ...
- nginx负载均衡session共享解决方案
解决方案: 1.使用客户端的cookie作为存放登录信息的媒介 cookie是将用户登录信息存储在用户终端的数据载体,与session的最大区别就是,session是存储在服务器端的:所以这就很容易解 ...
- 产品探秘:智影AI——你的创意视频制作神器!
只需3步,把小说变成视频.免费试用,首次注册赠送600积分. https://icomicai.com/ 在这个快节奏的时代,创意与效率并重成为了我们追求的新风尚.今天,就让我带你一起揭秘一款颠覆传统 ...
- Bootstrip HTML 查询搜索常用格式模版
Bootstrip HTML 查询搜索常用格式模版 <form class="form-inline my-3 d-flex align-items-center justify-co ...
- C# Winform与JS交互
一.C#调用JS函数 1.JS代码 < script language = "javascript" > function Hello(msg) { alert('我是 ...
- CF 1927
G link 定义\({{dp_i}_j}_k\)为考虑完第i个点,最左边没有染色的点为\(j\),最右边没有染色的点为\(k\)的最小数量. 考虑转移(用自己更新别人) 如果不用\(i\),直接转移 ...