阿里巴巴建站多少钱,企业网站seo外包,唐山建设造价信息网的网站,网站建设运营预算明细提示 call_user_func()函数先通过php内置函数来进行代码审计绕过system#xff08;##不止一种方法#xff09; 拿到题目养成一个好的习惯先抓个包 从抓到的包以及它首页的报错来看#xff0c;这里死活会post传输两个参数func以及p func传输函数#xff0c;而p则是传输参数的… 提示 call_user_func()函数先通过php内置函数来进行代码审计绕过system##不止一种方法 拿到题目养成一个好的习惯先抓个包 从抓到的包以及它首页的报错来看这里死活会post传输两个参数func以及p func传输函数而p则是传输参数的内容 这里直接尝试system读取文件列表
从返回页面来看对func做了防护的测试一下哪些可以用 ####这里其实可以通过一个php的特性绕过直接执行命令但是还是先按着作者的想法来做 随便输了几个函数他这里就报出了call_user_func() call_user_func()这里似乎是利用的这个函数然后执行用户输入的然后去调用内部函数 #####本文最后做了简单的讲解 首先应该通过php内置函数来尝试读取index.php页面 这里可以使用highlight_file()高亮显示页面或者file_get_contents()来读取文件 ####这里注意此页面每五秒会刷新一次 这里过滤的还是很完整基本上所有的命令执行函数都过滤干净了了 这里我的思路是通过反序列化传入参数绕过网站对func的防护通过反序列化后执行system函数
先随便去找个在线php做一个序列化出来 首先我们知道了他接收参数的变量是func和p那么序列化也得一样类也得一样class Test 这里url编码了一下应为怕有些编码不识别
?php
class Test {var $p ls /;var $func system;
}echo urlencode(serialize(new Test()));
? 到这一步就可以进行的命令执行了 O%3A4%3A%22Test%22%3A2%3A%7Bs%3A1%3A%22p%22%3Bs%3A4%3A%22ls%2F%22%3Bs%3A4%3A%22func%22%3Bs%3A6%3A%22system%22%3B%7D 这里直接去找了根目录找flag但是没有 尝试使用find去找 找到flag位置直接去读取 /tmp/flagoefiu4r93 ####注意服务器运行的很慢使用find函数需要等待服务器查找一会儿 获得flag 现在来说第二种方法
在php里反斜杠\会被认定为特殊字符如果在system中加上反斜杠例如\system就会绕过验证
通过此方法也可以成功获得shell来获取flag 关于call_user_cunc()
call_user_func函数类似于一种特别的调用函数的方法它可以调用php内部函数也可以调用用户自定定义的函数
例如 ?php function barber($type) { echo You wanted a $type haircut, no problem\n; } call_user_func(barber, mushroom); call_user_func(barber, shave); ? 以上示例会输出 You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem 其余更详细内容可自行去参考php官方内容