rce
看到一个关于任意命令执行的视频后感觉很有意思,可以记录以下,以后可能会用到。
php中存在命令执行的常见函数
1.system
1 |
|
2.shell_exec
1 |
3.exec
1 | exec('ls', $output, $return_var); |
3.eval
eval执行命令的原理与上面几个不同,eval 会把字符串作为PHP代码执行
例如
1 | eval("phpinfo();"); |
4.create_function
用法如下
1 | $a = 'system'; |
5.call_user_func
1 | $a = create_function('$code','echo $code;'); |
限制字符长度的命令执行
实验环境为ubuntu nginx+php5.5
实验目的
通过命令执行想服务器写入一句话木马而达到控制服务器的目的
1 |
|
限制了参数1的字符长度为15
然后将传递的参数放到shell_exec中执行
突破点就是利用shell_exec函数将,我们的一句话木马写入到一个php文件中,获取shell。
所以想要够的payload的为
1 | ?1=echo shellcode >1.php |
将一句话木马写入到1.php中,我们知道一句话木马最短字符长度应该为21 ,这显然不能达到14个字符的限制要求
可以使用echo text >>tmp.txt
将字符串输出追加重定向,当前目录存在tmp.txt,则将tmp.txt的内容后面追加输出的字符串,会换行
例如下面
字符限制解决了,那么得知道换行后php代码还能正常执行吗,本地验证发现是没问题的
下面就可以做这个题目了
1 | //为了每次写入更多的字符可以利用无后缀名的文件,最后用mv将其改为php文件 |
之后访问1.php提交参数,获取想要的内容。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 一路走到黑!
评论