鹏城杯部分WP

vFREE
2022-07-27 / 0 评论 / 11 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年07月27日,已超过60天没有更新,若内容或图片失效,请留言反馈。

题目

  • 文件包含
  • what_is_log
  • 简单的php
  • Easygo

    文件包含

    nginx配置错误+user-agent文件头写入命令+读取access.log日志 考察任意文件读取,但是过滤了绝大部分的伪协议和flag,留下来的http和zip没过滤,但是没什么用,查看服务器的中间件是nginx,然后题目没有采用动态的靶场,所以尝试一下读取服务器的日志文件access.log,看一下能不能找到有用的payload或者flag,发现也被过滤了,而且,waf使用正则进行过滤的,可是到这里还是没什么思路,于是百度了一下路径绕过,发现有一个绕过的方法,就是利用nginx的配置错误,来进行路径拼接,整体是这样子的,直接访问/var/log/nginx/access.log时会被过滤,但是如果服务器配置错误的话,/var/vfree/../log/nginx/access.log的话,nginx默认会处理成/var/log/nginx/access.log,把vfree/../当成跳转上一层目录,也就是跳到了/var目录,于是就log后面的路径拼接到了/var后面,造成了目录穿越的漏洞,访问发现可以成功返回,如果环境没有被清空的话,通过全局搜索”PCL{“就可以翻到别人的flag,不好运就要自己写一个,整个access.log的组成是由IP -  - 日期 - ”访问方法 访问路径 HTTP版本“ 状态码 字节 - USER-AGENT - - 这几部分组成,所以可以尝试通过请求头写入一段读取flag的php代码,然后flag再写入到日志文件中!!!所以直接get写入的话,访问access.log发现是可以写进去的,虽然会被防火墙拦截,但是所有访问都会先通过php处理任何在写入访问日志,所以flag就会被读取出来!!!
PCL{bc58644f-f757-11ec-9edf-5224002d2b29}

1

what_is_log

下载文件,打开后,根据文件后缀scap进行查找是可以通过什么工具打开,发现scap的数据包产生的工具是sysdig,所以使用Linux安装一个sysdig (yum install -y sysdig),安装完成后,根据题目提示 ”某机器的mysql中存在一些秘密,通过log文件你能找到它输入的密码或者这个秘密吗(添加PCL格式提交)“ ,大概就可以知道要把数据包中抓取到密码作为flag提交,所以这里可以用 "sysdig -r flag2.scap proc.name=mysql > mysqllog.txt " 将和mysql相关的数据输出到mysqllog.txt中,然后下载到本地打开文本编辑软件进行审计,众所周知,在连接数据库的时候,我们要输入mysql -uroot -p,然后就会返回一个Enter password:,然后就输入密码,既然是进行查密码,那就有可能会输入mysql -uroot -p,然后出现Enter password,根据这一个特征,我们用ctrl+f进行查找相关的字眼,经过过滤后的文件,大概就会出现6个password相关的字眼,一个个去观察,结合上下产生的数据,最后在序号为61673的行找到了最终的flag,是一个md5值,但是提交不需要解密,最终flag就是
PCL{1555a651a13ec074ce725383214fd7cc}

1

简单的php

打开题目,发现基本上把能用的字符都过滤掉了,同时code传入的字符不能超过80,否则输出Hello,由于是无参数RCE,不是很熟,所以这里百度了一下,发现了一些题目有点像,于是大概学习了一些,基本上就是异或或者取反,这里找到了一个现在的自动编码取反的脚本,由于是无参数回显,所以要结束print_r、scandir和pos(localeconv())输出当前目录,在此之前要进行编码 > print_r(scandir(pos(localeconv()))) ---> [~%8F%8D%96%91%8B%A0%8D]!%FF))); 将这段payload放到get中,就会输出当前目录的文件内容,但是发现flag不在当前目录,所以可能是在根目录上,有一个问题就是不能直接查看根目录,因为/使用了就不符合规则了

1

所以此时可以利用通过获取getallheaders()的user-agent进行取反命令执行,也就是说说,在code输入执行函数,然后修改bp的user-agent的内容,使得传入的code执行函数去执行user-agent头,
构造payload: > system(next(getallheaders())) ---> [~%8C%86%8C%8B%9A%92]!%FF)); > > user-agent: ls / 2 发现了flag名字,接下来直接改user-agent头进行读取flag,最终flag为:
PCL{b35a314f-ff57-13a2-9ad1-002d22deeb2a} >

Easygo

查看main.go发现/juice/:id网站路径, 然后开始利用,http://192.168.1.115:8080/juice/1 网页有输出,源码中id是要输入到sql语句中,所以id这里存在sql注入 payload: http://192.168.1.115:8080/juice/1’ and 1=1 http://192.168.1.115:8080/juice/1’ and 1=2 最后确定漏洞后,利用sqlmap一把嗦,跑出flag

PCL{Postgresql_1njection_1s_3asY}
0

评论 (0)

取消