[SWPUCTF 2021 新生赛]gift_F12
题目提示:F12
下发环境,打开网址,进入网页后

点击F12查看源代码

直接查找flag

可以得到flag
[SWPUCTF 2021 新生赛]jicao
[SWPUCTF 2021 新生赛]jicao-CSDN博客

进入环境后,得到一段php代码

代码审计:
包含了flag.php文件,设定了一个POST请求的id和GET请求的json
语句会对GET请求的数据进行json解码
如果id和json变量的值都等于设定字符串,打印flag
题解:
GET传参?json={"x":"wllm"}
POST传参 id=wllmNB

得到flag
[SWPUCTF 2021 新生赛]easy_md5
[NSSCTF]-Web:[SWPUCTF 2021 新生赛]easy_md5解析(科学计数法,md5数组绕过)_easymd5怎么解-CSDN博客

打开环境,得到代码如下

代码审计
输入name和password的值,只要他俩的值不一样,然后经过md5函数之后一样就能出flag。
所以我们需要md5绕过
需要md5编码后完全相同,但理论上除开故意设计,不会有两个值md5编码完全一样。所以想要有两个值不同但md5编码相同的值几乎没可能。但当两个值不同但是md5编码后为0e开头就不一样了,或者说是当第二位为e的时候就不一样了。
此时他们就不是比较md5编码是不是一模一样了,而是比较他们的值了,或者说从始至终都是比较他们的值,不过是开头为0e的时候,因为形成了php科学计数法的形式,此时无论0e后面是什么数他的值都是0了。所以只需找到两个md5编码为0e的字符串就行。
MD5编码后0e开头的字符串:
QNKCDZO(0e830400451993494058024219903391)aabg7XSs(0e087386482136013740957780965295)
aaabEgHn(0e418636035810609803317995275027)
构造
GET传参:?name=QNKCDZO
POST传参:password=aabg7XSs

得到flag
[SWPUCTF 2021 新生赛]include
[SWPUCTF 2021 新生赛]include-CSDN博客

打开环境得到

根据提示,get传参 ?file=1

代码审计
看见allow_url_include 状态为on,想到了php伪协议,
用filter读取flag.php里面的信息构造
?file=php://filter/read=convert.base64-encode/resource=flag.php

1555

被折叠的 条评论
为什么被折叠?



