[WEB安全]代码/命令执行总结
0x01 代码执行 1.1 概念 远程代码执行实际上是调用服务器网站代码进行执行。 1.2 常见执行方法 eval eval():将字符串当做函数进行执行(需要传入一个完整的语句) demo: <?php eval('echo "hello";'); ?> assert assert():判断是否为字符串,是则当成代码执行 demo: 低版本: <?php assert($_POST['a']);?> php官方在php7中更改了assert函数。在php7.0.29之后的版本不支持动态调用。 7.0之后的demo: <?php $a = 'assert'; $a(phpinfo()); ?> call_user_func call_user_func():回调函数,可以使用is_callable查看是否可以进行调用 demo: <?php highlight_file(__FILE__); $a = 'system'; $b = 'pwd'; call_user_func($a,$b); call_user_func('eval','phpinfo()'); ?> 其中基本可以传递任何内置的和用户自定义的函数, 除了语言结构:array、echo、empty、eval... call_user_fuc_array call_user_fuc_array():回调函数,参数为数组