image-20250719153107984

1.[SWPUCTF 2021 新生赛]gift_F12、[ LitCTF 2023]我Flag呢?

查看源代码,找flag

2.[SWPUCTF 2021 新生赛]easy_md5

PHP代码基本信息:

  • 包含了flag2.php文件
  • 判断是否有用户通过GET方法传递了name参数,以及通过POST方法传递了password参数
    • 如果没有,就直接输出wrong!。
    • 如果有,它就将这两个参数分别赋值给name和password变量,并进行以下判断:
      • 如果name和password不相等,并且它们的MD5哈希值相等,就输出flag2.php文件中的内容。
      • 这是一个逻辑漏洞,因为MD5哈希函数是不可逆的,但是存在碰撞的可能性,也就是说,不同的输入可能产生相同的输出。所以,如果用户能够找到两个不同的字符串,但是它们的MD5值相同,就可以通过这个判断。
      • 否则,就输出wrong!。

关键漏洞点:MD5 弱比较

  • PHP 中的==是弱类型比较,不会严格校验数据类型。当比较两个字符串的 MD5 值时,如果 MD5 值以0e开头,PHP 会将其解释为科学计数法的 0,导致所有以0e开头的 MD5 值在弱比较下都相等。
  • ===会比较类型,这个时候可以用到PHP中md5()函数无法处理数组(会返回NULL)来实现绕过

方法:

1.0e碰撞:md5('QNKCDZO') 和 md5('240610708') 都以0e开头,尽管原值不同,但0e36276879和0e46209743在弱比较下都被视为 0,因此相等。

2.数组绕过:由于 $name 和 $password 是不同数组(内容不同或结构不同),$name != $password 条件成立。

  • name[]=1(数组 [1])
  • password[]=2(数组 [2])

这两个数组值不相等(!= 成立),但它们的 MD5 哈希均为 NULL(== 成立)。

3.[LitCTF 2023]导弹迷踪

fn12查看源代码,子啊game.js里找flag

4.[LitCTF 2023]Follow me and hack me

使用hackbar,按要求该参数

5.[NSSCTF 2022 Spring Recruit]ezgame

查看源代码,在.js文件里找flag

6.[LitCTF 2023]1zjs

1.查看源代码,发现:“/.dist/index.umd.js”

2.bp拦截,找有dist/index.umd.js的响应中,有提示:/f@k3flag.php

3.浏览器访问(在原URL后加/f@k3flag.php),得到一堆jsfuck编码,复制粘贴到控制台,即可出现flag

7.[MoeCTF 2021]Web安全入门指北—小饼干

1.打开链接,提示,查看源代码,啥也没有

2.bp拦截,提示Cookie

3.重放器,加Cookie:VIP=1,得flag

8.[MoeCTF 2022]ezhtml

查看源代码,在js文件里

9.[MoeCTF 2021]2048

1.bp抓包,根据玩完后提示,分数要查过50000

2.所以将分数改为大于50000的数,例如500000

10.[MoeCTF 2021]Web安全入门指北—GET

1.打开后得到PHP代码,意思是GET参数为moe=flag

2.hackbar加参数,得到flag