0x00 命令注入

payload:

127.0.0.1 | ipconfig

13||ipconfig

127.0.0.1&ipconfig

127.0.0.1&&ipconfig


上面的方式主要是通过管道符让系统执行了命令。‘

以下是常用的管道符:

0x01 windows系列支持的管道符

| 直接执行后面的语句

|| 如果前面执行的语句出错,则执行后面的语句,前面的语句只能为假

& 如果前面的语句为假则直接执行后面的语句,前面的语句可假可真

&& 如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句只能为真

0x02 linux支持的管道符:

; 执行完前面的语句再执行后面的语句

| 显示后面语句执行的结果

|| 当前面的语句执行出错时,执行后面的语句

& 如果前面的语句为假则直接执行后面的语句,前面的语句可假可真

&& 如果前面的语句为假则直接出错,也不执行后面的,前面的语句只能为真

0x01php代码注入

0x01 挑战1

由下图可以看出,页面直接输出了url中的参数data的值,

检测是否会造成代码执行,

http://127.0.0.1/btslab/vulnerability/phpinjection/challenge1.php?data=phpinfo(),

可以看到,这里存在命令注入漏洞

0x02 挑战2

页面将data参数的值转换为大写输出到了页面

再次测试,是否存在命令执行

payload:http://127.0.0.1/btslab/vulnerability/phpinjection/challenge2.php?data=phpinfo()

可以看到,服务器并没有解析执行,

再次尝试:http://127.0.0.1/btslab/vulnerability/phpinjection/challenge2.php?data=<?php phpinfo();?>,发现页面没有输出,说明服务器存在过滤

payload:http://127.0.0.1/btslab/vulnerability/phpinjection/challenge2.php?data=${phpinfo()}

代码注入成功执行。

我们看看源码

其中最关键的就是preg_replace()函数。

其实最关键的还是正则表达式中的/e参数,正是由于该参数,preg_replace函数中的第二个参数replacement会被解析为php代码来执行,下面是官方文档说明

其实就是一句话,当正则表达式中存在/e参数时,preg_replace函数中的第二个参数replacement就会被当做是eval函数的参数来执行,这就是造成代码执行的原因所在。正是由于这个原因,所以在php版本的更新中可以看到,这个函数已经用 preg_replace_callback() 代替。

但是这里还有一个问题,如果有留意就会发现:

http://127.0.0.1/btslab/vulnerability/phpinjection/challenge2.php?data=phpinfo()没有代码执行;

http://127.0.0.1/btslab/vulnerability/phpinjection/challenge2.php?data=${phpinfo()}则会造成代码执行。

why???

两个请求的差别就在于${},还是不明,why???

我们先看看,去掉e,正则匹配到的结果是啥,我们将之打印出来

可以从上图清楚的看到,正则匹配的结果是strtoupper("${phpinfo()}"),即在e匹配模式下,传递到eval()函数中的参数是strtoupper("${phpinfo()}"),所以最终的结果就是eval(strtoupper("${phpinfo()}"))这条语句执行的结果,

所以,这就是preg_replace函数会造成代码执行的根本原因。

为了对比,我们看看http://127.0.0.1/btslab/vulnerability/phpinjection/challenge2.php?data=phpinfo()

正则匹配结果:strtoupper("phpinfo()")

执行结果eval(strtoupper("phpinfo()")),函数phpinfo()并没有并解析执行

BTS测试实验室 --- 注入关攻略相关推荐

  1. BTS测试实验室 --- SQL注入关攻略

    一. Sql注入1 判断注入点:http://127.0.0.1/btslab/vulnerability/ForumPosts.php?id=1' 如下图,报错,存在sql注入 手工注入, (1)爆 ...

  2. 《光棍节程序员闯关秀》闯关攻略

              https://1111.segmentfault.com<光棍节程序员闯关秀>        程序员们,欢迎来攻!!! 在之前的基础上,重新整理了一遍,之前才闯到第8 ...

  3. 保卫萝卜迅玩版53关php,2018微信保卫萝卜迅玩版第50关攻略

    第50关的地图如下图所示,可以使用到便便.冰锥.船锚和章鱼四种炮塔.下面小编就来给大家分享两种过关方法. 方法一 1.现在图示右侧中间位置建造1个章鱼塔,用这个章鱼塔对周边的道具进行攻击,第一波小怪物 ...

  4. 计算机 游戏第14关,《帕拉世界》第十四关至第十六关攻略秘籍

    <帕拉世界>第十四关至第十六关攻略秘籍 2016-11-21 16:37:41来源:游戏下载编辑:评论(0) 第十四关:一开始没必要强攻监狱,部队沿着山道向上,在左上角的出海口那里建立基地 ...

  5. 计算机:游戏58关攻略,保卫萝卜3单机版游乐场第58关攻略 开局飞机打怪

    小伙伴们大家好,今天带给大家的是保卫萝卜3的全新单机版本游乐场关卡的第58关,它不仅保留了些经典的元素,诸如各种炮塔,还加入了独一无二的剧情模式,更有一大波创新玩法等玩家前来体验.下面就和小编一起来体 ...

  6. 计算机游戏攻略32关,保卫萝卜3单机版集市第32关攻略 有很多隐藏炮塔

    小伙伴们大家好,今天带给大家的是保卫萝卜3的全新单机版本集市关卡的第32关,它不仅保留了些经典的元素,诸如各种炮塔,还加入了独一无二的剧情模式,更有一大波创新玩法等玩家前来体验.下面就和小编一起来体验 ...

  7. Python Challenge 第 2 关攻略:ocr

    Python Challenge 第 2 关攻略:ocr 题目地址 http://www.pythonchallenge.com/pc/def/ocr.html 题目内容 recognize the ...

  8. 计算机 游戏第15关,锈湖根源第十五关攻略 Rusty Lake:Roots第15关图文攻略

    故事越来越精彩了,不妨赶紧到锈湖根源第十五关攻略中来理解吧.如果你对Rusty Lake:Roots第15关怎么过有疑问的话,就不要错过这里的图文攻略哦. 1.先点击场景的左下角,将下图中的道具带走, ...

  9. 计算机游戏50关,YELLOW游戏全50关攻略

    yellow游戏是一款比较休闲的游戏作品,这款游戏中需要通过变换将屏幕全部调整成黄色,虽然操作不难,但比较考验思维能力,下面是全50关通关攻略,大家可以参考参考. [注:以下为攻略,不想看的不用点开] ...

最新文章

  1. 发挥主观能动性,才可以能常人之所不能 - 阿里云MVP 杨洋专访
  2. WinDbg的cmdtree命令
  3. 安卓学习 之 多媒体技术(八)
  4. T-sql检测文件夹是否存在
  5. 视觉研究的前世今生(上)王天珍(武汉理工大学)
  6. NTLDR is missing 的解决方法
  7. RHEL6.3 ftp服务器参数的戏说——不看白不看,看了不白看
  8. python修改python unittest的运行顺序
  9. 反编译那些事儿(三)—那些看似没用到的全局变量和那些使用了动态参数的方法
  10. android checkbox 选中事件_智慧树知到Android移动应用开发基础章节测试答案
  11. 再说“两本交换机图书内容完全不一样”
  12. office各种格式文件对应的MIME Type/http:Content-Type
  13. Flipped 阅读笔记
  14. 再现隐私之争_反谷歌FLoC联盟: selenium谷歌浏览器报错: Error with Permissions-Policy header
  15. 【多线程与高并发】从一则招聘信息进入多线程的世界
  16. 海报与Banner的区别
  17. win10 以太网消失了
  18. jsp依据id元素值获取值及相关赋值
  19. es数据库查询API
  20. 美通企业日报 | 万豪将在全球取消一次性小瓶洗漱用品;保乐力加在中国建首家麦芽威士忌酒厂...

热门文章

  1. 5GC中网络切片NSSAI详解
  2. 素食认证EVE VEGAN怎么申请?
  3. 中国有哪几位Android GDE?
  4. [绍棠] iOS文件目录和文件操作 及NSFileManager的读写操作
  5. 海洋cms简洁模板免费下载
  6. win8打开计算机快捷键,控制面板快捷键,教您win8控制面板怎么打开
  7. 数据双向绑定Two-way binding does not support complex data paths currently. This two-way binding is ignored
  8. Google 遭遇 21世纪最大反垄断案,互联网将走向何处?
  9. C# 复制Excel工作表(同一个工作簿内进行复制,跨工作簿复制)
  10. 不懂技术不要对懂技术的人说这很容易实现