BUUCTF做题Upload-Labs记录pass-11~pass-20

——
上一篇:BUUCTF做题Upload-Labs记录pass-01~pass-10
——

pass-11

白名单上传:'jpg','png','gif'
上传抓包可以看到url中的结构。

应该是用get 型 %00 截断
但是要求需要php的版本号低于5.3.29, 且magic_quotes_gpc为关闭状态。
这里不满足条件,所以用不了。

如果满足条件,可以这样构造:

——

pass-12

post 型 %00 截断

通过get方式是在url的参数中添加%00。这是因为%00通过get方式传递到服务器会被自动解码,所以就变成了ascii码中数值0对应的那个字符(null),这才能达到截断的目的。

但是如果是通过post的话,加入%00不会别服务器解码,只会原样被参数变量接收。所以这里要通过修改post数据的十六进制来达到截断的目的。

所以抓包之后要转换成hex格式查看

先填好post 的路径,php后面加上a为了等下十六进制格式方便找到这个位置

然后查看hex格式,

把上面61的位置改成 00 后,可以看到原来数据包中 php后面变成了一个框框。

——

pass-13

有个页面/include.php

上传jpg一句话,加上 GIF89a

利用:
配合包含页面

/include.php?file=upload/3420220725120812.gif

-——

pass-14

getimagesize()函数, 对目标文件的16进制去进行一个读取,去读取头几个字符串是不是符合图片的要求
和前一题一样做法

/include.php?file=upload/7220220417095836.gif

——

pass-15

exif_imagetype() 函数读取一个图像的第一个字节并检查其签名。
条件:需要打开配置文件中的 php_exif

做法和前面一样:

/include.php?file=upload/7920220417134706.gif

——

pass-16

白名单:.jpg|.png|.gif

源码中有imagecreatefromjpeg()函数:成功则返回一图像标识符/图像资源,失败则返回false,导致图片马的数据丢失。

做法:图片的二次渲染

1、先把图片马进行上传,然后再把上传的图片马下载下来。
2、下载下来的图片可以通过010eidtor 和原来的图片马进行数据的对比,看哪个部分没有被修改。
3、对原来的图片马进行修改,把php代码写到数据中没有被修改的地方。
4、修改后的图片马上传,其数据中的webshell数据未被修改,再配合前面提到的包含漏洞,得以执行图片马中的php代码。

——

pass-17

源码检验:先将文件上传到服务器,然后判断文件后缀是否在白名单里,如果在则重命名,否则删除。

这样就存在一个安全问题,那就是我同时上传多个相同文件,在它删除之前访问就可以了。
也就是条件竞争问题。

上传 .php 一句话木马
发到 intruder 模块,clear 清除,原包爆破

——

pass-18

后端检验过程为:检查后缀名是否在白名单中;检查文件大小以及文件是否已经存在,然后上传,然后在进行二次渲染,重命名。

和前面一题比也是条件竞争,但是是结合了上传图片马的条件竞争,再结合文件包含进行利用。

——

pass-19

与前面题目相比,这里可以控制上传并保存下来的文件名,即参数save_namemove_uploaded_file()函数中的img_path是由post参数save_name控制的。

——

方法一:

配合文件包含,上传一个图片马。利用:/include.php?file=upload/upload-19.jpg

——

方法二:

**move_uploaded_file()**有这么一个特性,会忽略掉文件末尾的 /.
名字改成 php.
利用:/upload/upload-19.php.

或:.php/.

利用:/upload/19.php/


%00截断 ,但是要php版本小于5.

——

pass-20

代码中

$file = explode('.', strtolower($file));

explode() 函数把字符串分割为数组。本函数返回由字符串组成的数组,其中的每个元素都是由 separator 作为边界点分割出来的子字符串。
比如xx.php以点为分隔符数组就是{xx,php}

$ext = end($file);

后缀取数组的最后一个,然后判断白名单

$file_name = reset($file) . '.' . $file[count($file) - 1];

reset()函数将内部指针重置为指向数组的第一个元素。就是取出第一个元素的值。然后再和数组的最后一个元素合起来组成文件名。

我们传参数的时候就
save_name[0]=xx.php save_name[2]=png
然后他就是数组类型了。就不会执行

数组绕过构造:

利用:/upload/20.php.

——

到这,upload-labs测试就结束了,主要还是学习了文件上传各种代码的检验方式以及各种绕过方法。
其中有几题也是没有测试成功,主要体现在16-18这三题的图片二次渲染以及条件竞争,测试过程有一定难度,目前还是在于概念的理解。

BUUCTF做题Upload-Labs记录pass-11~pass-20相关推荐

  1. buuctf做题记录

    Crypto 权限获得第一步1 还原大师1 [GKCTF2020]汉字的秘密 1 Unencode 密码学的心声1 权限获得第一步1 首先我们下载文档,然后看到一串字符串: 可以观察一下806EDC2 ...

  2. BuuCTF做题记录-[BJDCTF 2nd]假猪套天下第一

    夹竹桃天下第一!!! 尝试输入admin登入,登陆失败 随便输入一个账号登录,登陆成功 重新返回登录界面提交表单,使用Burp抓包 发现L0g1n.php,访问并提交返回以下信息 请求头Cookie里 ...

  3. BUUCTF做题小结

    大帝的密码武器 题目:公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一.他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名. 以下密文被解开后可以获得一个有意义的单 ...

  4. CTF-web做题记录(狼组/BUUCTF)【一】

    CTF-web做题记录(狼组/BUUCTF)[一] WEB 1.ctf.wgpsec 你可能需要一部iphone 题目如下 考察点:user-agent,burp改为iphone的user-agent ...

  5. BUUCTF刷题记录(2)

    文章目录 web [De1CTF 2019]SSRF Me(未完成) [极客大挑战 2019]PHP [极客大挑战 2019]Knife [极客大挑战 2019]LoveSQL [RoarCTF 20 ...

  6. web做题记录(buuoj,jarvis,攻防世界,bugku,hackme)

    web做题笔记 文章目录 web做题笔记 buuoj easy_tornado 随便注 warmup easysql 高明的黑客 jarvisoj re? flag在管理员手上 api调用 chopp ...

  7. i春秋做题记录 web(一)

    前言: 时间过的真快呀,一转眼半学期就过去了( ̄m ̄):攻防世界上的题差不多刷完了(剩下的都是不会的T_T),这周就来做做 i春秋的题,顺便记录下. 1.想怎么传就怎么传,就是这么任性. 题型: We ...

  8. Regional 做题记录 (50/50)

    写在前面 博主深感自己太弱了QAQ 于是有了一个刷水的想法,Regional的题目还是有很多考查思维的题目,所以这次是乱做50道思考题,可能会顺带做一些水题,这些题的简要题解会写到这篇博文里面,希望能 ...

  9. 【Week 11 作业】必做题

    Week 11 必做题 A 必做题 1 题目描述 输入格式 输出格式 输入样例 输出样例 思路 代码 B 必做题 2 题目描述 输入格式 输出格式 数据范围 样例输入 样例输出 思路 代码 C 必做题 ...

最新文章

  1. 在通知栏上玩游戏,Steve iOS 游戏实现思路
  2. 近邻取样插值和其速度优化
  3. 进程间通信(3) 剪贴板
  4. unreal world 皮革_UnRealWorld 进阶游戏教程
  5. 室内装修隐蔽工程验收知识拓展_装修之前先看知贤,『装修微课堂』室内装修隐蔽工程详解,装修小白防坑避雷手册!...
  6. php工程模式,factory - PHP工程模式如何传入参数
  7. 解决/usr/local/lib/libglog.so.0: error adding symbols: DSO missing from command line
  8. (转)script标签到底该放在哪里
  9. 【经典算法】希尔算法
  10. (转)MTK 消息分发及窗口管理
  11. table内容保存到Excel中
  12. DELL PERC-10和 PERC-9阵列卡支持的操作系统版本
  13. flash图形、影片剪辑、按钮区别
  14. python画圣诞帽_用Python给头像加上圣诞帽,新手必学
  15. C语言程序设计精髓(MOOC第12周 )题
  16. 这颗“洋葱”要上市了,低调盈利2亿元能跟上跨境电商队伍么?
  17. python中函数的学习
  18. SpringBoot整合Elasticsearch,应届毕业生java面试准备材料
  19. PyCharm 安装numpy包
  20. 第2章 关系数据库(数据库系统概论)

热门文章

  1. 服务端JAVA执行js_[Java][Js]利用Rhino在服务器端执行JavaScript
  2. jass——group的使用
  3. msys2编译php,MSYS2初体验
  4. 评测三款最流行的azw3阅读器
  5. Dubbo 与 Feign 的区别
  6. 基于python机器学习 Django的二手房交易预测及展示系统 完整代码+报告文档
  7. 区块链的商业价值 区块链技术开发公司哪家好
  8. 云计算初探2-使用云服务器快速搭建论坛
  9. 【2023美国大学生数学建模(美赛)资料及思路】
  10. 微信公众号网页苹果手机点击onclick无效