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可以绕过检测上传,但是<?php ?>被过滤了,于是换成<?=@eval($_POST['pass']);,然而菜刀却连不上,于是从网页访问
访问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
网友评论