BUUCTF 10

知识点

.urer.ini文件:在该文件中加 auto_prepend_file=1.jpg  那么,所有的php文件执行前都会将1.jpg当做php类型的文件先包含执行一遍。可以用来解析图片马

字符串:ffifdyop
md5后,276f722736c95d99e921722cf9ed621c
转成字符串后: 'or’6

10-1

做题思路

首先发现是文件上传尝试上传一句话木马 文件名为 w.jpg,内容为

GIF89a

然后利用 burpsuite 抓包修改后缀为phtml发现  非法的后缀。

然后不明白该怎么做,提示中有个源码去看看发现过滤了许多东西    // php语言需要尽早学习一下

然后就不知道该怎么做,看看WP

发现 .urer.ini文件中内容:auto_prepend_file=1.jpg 那么,所有的php文件执行前都会将1.jpg当做php类型的文件先包含执行一遍。 以此

然后写一个文档,内容为  auto_prepend_file=w.jpg ,后缀为 .user.ini  以此来解析图片马

最后用蚁剑连接 http://d3dfac36-b0d2-46c7-857e-4826519b2b3b.node3.buuoj.cn/uploads/852aff287f54bca0ed7757a702913e50/index.php

即可得到flag

10-2 

做题思路

首先尝试注入,输入 1

没有回显,然后没什么思路,找WP

没回显就抓包   //不知道为啥,按这个思路走

细心点可以发现Hint: select * from 'admin' where password=md5($pass,true)

md5后的pass变量,咋知道密码是什么???

这里的思路是如何让sql语句返回为真,而不是知道密码。所以这是一个知识点。

md5(string, raw) raw 可选,默认为false
true:返回16字符2进制格式
false:返回32字符16进制格式
简单来说就是 true将16进制的md5转化为字符了,如果某一字符串的md5恰好能够产生如’or ’之类的注入语句,就可以进行注入了.
提供一个字符串:ffifdyop
md5后,276f722736c95d99e921722cf9ed621c
转成字符串后: 'or’6

输入ffifdyop查询后,跳转到了另一个PHP页面。f12发现源码。

BUUCTF 10_第1张图片

看到md5()==一看就很简单了,直接传入ab为数组就行,这是因为 md5 函数不能处理数组。或者传入两个md5开头为0e的字符串。

输入 ?a[]=1a&b[]=2,得到

BUUCTF 10_第2张图片

这里看到md5用的是===,并且运用POST传输

抓包后运用POST输入 param1[]=1¶m2[]=2 ,需要有头协议content-type: application/x-www-form-urlencoded

10-3

做题思路

​​​​​看到一段源码,思路应该就是分析代码,求助WP

第一个if

可以用data伪协议来写入   //没有搞懂这里的意思

?text=data:text/plain,welcome to the zjctf

接着是文件包含    //依然不懂

?text=data:text/plain,welcome to the zjctf&file=php://filter/read=convert.base64-encode/resource=useless.php

然后得到一段字符串 像是base64,解密得 BUUCTF 10_第3张图片

分析为一个简单的反序列化,根据代码的意思,给file赋值flag.php,进行序列化即可 可借助在线工具

BUUCTF 10_第4张图片

最终构造payload

text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

最后还要查看源码,成功得到flag

你可能感兴趣的:(BUUCTF 10)