其实,代码执行是一个很广阔的概念。
如,SQL注入(SQL代码执行),eval/assert执行(脚本代码执行),xss脚本攻击(js代码执行/html代码执行),而system/exec/shell_ exec/ passthru执行,则应属于命令执行的范畴了。
1、 SQL代码执行
执行SQL语句:select host,user,password from mysql.user where user=‘root‘;
MySQL返回结果如下:
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 127.0.0.1 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+-----------+------+-------------------------------------------+
2 rows in set (0.00 sec)
这就是SQL代码执行,只是,在实际环境中,SQL代码与脚本代码混在了一起。
2、 eval/assert执行
<?php
$a = $_GET[‘a‘];
eval ($a);
//assert ($a);
?>
开启Firefox,输入:http://localhost:81/code_exec.php?a=phpinfo();
Webserver返回如下信息:
这就是脚本代码执行,在此,eval/assert函数,执行效果一致。
3、Js/html代码执行
<script>alert(document.cookie)</script> //js代码执行
<img src=1 onerror=alert(document.cookie) /> <!--html代码执行
执行效果分别如下:
//js代码执行
<!--html代码执行
因为此时,我本地并没有任何cookie,所以,弹出来的对话框cookie为空
这即是js/html代码执行,这是xss脚本攻击的基础,也是web前端安全的基础,建议阅读余弦的书籍:《web前端黑客技术揭秘》。