Bugku web wp(2)

welcome to bugkuctf

查看源代码发现

解读源码:传递三个参数,如果存在$user并且其内容===”welcome to the bugkuctf”,就会加载$file,首先我们需要想办法让$user等于welcome to the bugkuctf,我们可以利用php://input为txt赋值,然后读取hint.php的内容

Base64解码得到

该Flag中定义了一个__tostring魔术方法,即当这个类被当作字符串执行时,自动执行的一个函数

同样的方法读取index.php的内容

可以看到后台对传入的file进行了检查,因此用此方法读取flag.php行不通,在这里我们还可以看到password进行反序列化后再输出,由echo我们又联想到了刚刚在hint.php发现的__tostring()魔术方法,我们可以通过构造password为Flag类型,那么我们传入的password将被当成字符串执行从而触发魔术方法使其读出flag.php,由于其反序列化后才执行,因此我们需要先对其进行序列化

查看源代码得到flag

过狗一句话

从这里可以得到assert($_GET[‘s’]),于是我们利用此列出目录下的所有文件http://120.24.86.145:8010/?s=print_r(scandir('./'))

可以直接访问,也可以将f94lag.txt打印出来

http://120.24.86.145:8010/?s=print_r(file_get_contents('f94lag.txt'))

字符?正则?

正则不好的菜鸡看到这个正则表达式流下了没有技术的泪水,研究了许久才看懂它的规则,意思是这个id必须符合“key+任意多个字符+key+4-7个任意字符+key:/+一个任意字符+/+任意多个字符+key+任意一个字母+任意一个标点符号”

payload:http://120.24.86.145:8002/web10/?id=keyakeya1111key:/a/akeya!

前女友

存在三个参数v1 v2 v3,并且要求v1的值不等于v2但是它们的md5值相等,这里存在弱类型可以绕过,并且下面还使用了strcmp用于比较,这里我们可以通过构造数组进行绕过,payload:http://118.89.219.210:49162/?v1=QNKCDZO&v2=s878926199a&v3[]=1

你从哪里来

抓包修改得到flag

md5 collision

题目要求我们输入参数a,尝试传入数字或字母都显示false,而且也没有什么别的提示了,于是尝试传入md5值开头为0e的字符串,得到了flag,

payload:120.24.86.145:9009/md5.php?a=s878926199a

程序员本地网站

提示请从本地访问,于是抓包修改拿flag

各种绕过

解读源码发现需要传入三个参数:id、uname、passwd

1、id值为margin,但是读取id时经过了url解码,因此我们传进去的margin需要经过url编码,不过编码前后都是一样的

2、uname的值不能等于passwd

3、uname和passwd的sha1值要相等

因此我们可以利用sha1函数漏洞,通过构造数组绕过

Web8

解读源码,只有$ac和$fn的值一样才能得到flag,而此处还有file_get_contents()函数,我们可以通过php://input输入$fn得值,让其跟$ac相等

细心

打开看到一个吓唬人的404页面

将try again、kangle/3.5.5都点了一遍没有什么发现,于是尝试访问robots.txt发现

访问resusl.php

看到有一个get参数,又联想到题目想办法变成admin,于是尝试传入?x=admin得到flag

求getshell

打开看到一个上传功能,那大概就是上传一个马了,但是他只能上传图片不能上传php,然后尝试一下截断、加后缀改后缀、大小写绕过、双写绕过都不行,然后就不知道怎么搞了,看了一下别人的wp,这里需要修改Content-Type后的字母的大小写来绕过waf的严格匹配,然后再尝试一下改后缀,改成php5就可以上传并且的得到flag了

文件包含2

上传一句话木马,xxx.php.jpg可以绕过检测上传,但是被过滤了,于是换成

访问this_is_th3_F14g_154f65sd4g35f4d6f43.txt得到flag

Flag.php

访问是登录界面,随便登录没什么反应,看到提示hint,又拿去试了试登录,没有反应,然后尝试访问,失败了,然后考虑传参?hint,看到源代码,发现其从cookie中的ISecer拿值,如果其反序列化的值等于$KEY,就能拿到flag,看到下面给$KEY赋值了很开心,直接拿去序列化构造cookie发包,结果什么都没有,然后仔细想了想,在一开始时,$KEY还没有被赋值,它是相当于空的

login2

抓包发现tip,base64解码得到一段php

看到判断条件是取出来的password===我们传进去的passowrd的md5,因此我们构造取出来的password为md5(1),传进去的password为1就能成功绕过登录

文件上传2

这题很想吐槽一下,修改content-type上传之后并没有出现什么其他东西

真正的操作居然是文件包含

?op=php://filter/read=convert.base64-encode/resource=flag

Base64解码得到flag


作者水平有限,若有错误请指出Orz

你可能感兴趣的:(Bugku web wp(2))