web基础
签到题,查看源代码,发现,在原代码里有一个main.js文件
点进去,就有flag的base64编码
解码,得到flag
渗透的本质
这里给了一个robots.txt的附件,打开以后发现,好像大部分形式都是网页,因为一开始没有注意,打开环境也发现,说身份的问题,所以一开始的思路就错了,我一开始想的是用bp去改前端的那些数据,来让我获得权限。之后用御剑和dirsearch才发现,这里应该是目录遍历,这也是一开始给这个robots.txt文件的原因
这里使用bp抓包,发现是get传参的形式,那么就直接开始爆破,找有用的信息
爆破完毕,发现有一个长度不一样的,并且从里面获得了信息。接下来就是对代码进行分析了
通过这个代码可以知道,要给id这个变量赋值admin,但是如果直接赋值,而不对数据进行处理的话,就会在第一个条件卡住,也会直接结束。在看第二个if语句,它会对变量进行url解码,而当第一次传入admin时,浏览器会自动对admin这个内容进行一次默认的url解码,所以这里要对admin进行二次URL编码,当然,也可以直接对admin中的a进行二次URL编码,这两种实质上解出来是一样的
最后在页面里以get传参的方式给id这个变量传入二次编码以后的admin,成功获得了flag
好玩的PHP
这到题的话主要就是考代码审计的能力
然后代码的大概意思就是,要给四个变量赋值,而且必须四个变量都被赋值而且要进行两个绕过
一个是MD5的碰撞,应该是php的伪协议,这里的话,我确实承认,是自己对php伪协议的了解还不够,而且当时一下就是想不起来data和php://input。这里的话,实际上要说的话,排列组合以后,会有四种解法。md5碰撞的话,0e也行,数组也是可以的,一开始出现了警告,我还以为数组不行。
这里直接上payload的截图
这个是使用data的解法,直接在一个payload上就能解决
一开始我以为是错的,因为虽然字体颜色发生了变化,但是flag没有蹦出来,后面才发现,flag在源代码里面。。。。。。。。。
然后的话是,使用php://input,这里的话,使用bp以post的方式传了一个包上去,也可以得到flag
涉及知识点:
文件上传
先尝试传个图片马,发现,格式不对
一开始,可能对Content-Type:的格式也不是很了解,所以,一直修改错了,后面搜了一下、
成功修改了以后
就上传成功了,然后让我万万没想到的是,后面就不用改什么了,我还在哪里双写绕过,00截断,最后才发现,可以直接传.php的文件,可能这就是返璞归真吧
上传成功,直接连接蚁剑,查看,得到flag