徐州做网站的,云南网站制作多少钱,htnl5 做的视频网站,国内自动化网站建设这里记录学习一下 perl的open缺陷
这里首先本地测试一下 发现这里使用open打开 的时候 如果通过管道符 就会实现命令执行
然后这里注意的是 perl 中的get 调用了 open的参数 所以其实我们可以通过管道符实现命令执行
然后这里如果file可控那么就继续可以实现命令执行
这里就…这里记录学习一下 perl的open缺陷
这里首先本地测试一下 发现这里使用open打开 的时候 如果通过管道符 就会实现命令执行
然后这里注意的是 perl 中的get 调用了 open的参数 所以其实我们可以通过管道符实现命令执行
然后这里如果file可控那么就继续可以实现命令执行
这里就是 open支持file协议
file协议加上| 可以将文件名 作为shell输出
touch id|GET file:id|
类似这种
然后我们可以开始做这个题目 $data shell_exec(GET . escapeshellarg($_GET[url]));$info pathinfo($_GET[filename]);$dir str_replace(., , basename($info[dirname]));
这里是内容 我们输入通过GET url 可以实现写入一个文件
这里考的其实就是
我们通过filename生成一个shell文件名字为shell
然后通过GET filename这种形式实现命令执行 然后再写入一个文件
这里可能比较抽象 我们来本地测试一下
这里我们首先可以通过 mkdir($dir);chdir($dir);file_put_contents(basename($info[basename]), $data);
这种确定是perl语言
然后
我们首先传入
url123filenamels| //目的创建一个shell名字的文件然后urlfile:ls|filename1.txt // 通过file协议和| 让ls不做为文件名 而变为shell 首先了命令执行
然后
这里可以发现是一个二进制文件 无法获取flag 我们通过 bash开启操作即可
?url123|filenamebash -c /readflag|/?urlfile:bash -c /readflag|filename1.txt
然后我们就获取到了flag 这里或者可以通过反弹shell实现 但是麻烦了