鹤城杯 2021EasyP
本文最后更新于521 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com

Pasted image 20241208091515.png

1.代码审计
Pasted image 20241208091451.png

2.前面的代码没有用,主要看后面的代码

  • $_SERVE[‘PHP_SELF’] 读取的是当前执行脚本的文件名,意思就是读取文件夹下的一个文件

  • $_SERVER[‘REQUEST_URI’]是取得当前URL的 路径地址

  • basename()函数返回路径中的文件名部分
    语法:basename(path,suffix)
    path 必须,路径
    suffix 可选,文件扩展名,如果文件有就不会显示扩展名
    Pasted image 20241208103741.png

3.解题

Pasted image 20241208103851.png

highlight_file可以起到文件读取的作用,而我们第一行代码就有个utils.php的文件包含,所以大胆猜测flag就在这个文件中。

所以接下来我们有两件事情要做,一件事绕过正则是使show_source不为空,另一件事是使basename(SERVER[PHPSELF])utils.php使_SERVER[‘PHP_SELF’]为******/utils.php,最后basename这个值就会为utils.php再然后就highlight_file读取到文件。

所以我们要想办法绕/utils.php/*$/i 以及/show_source/这个正则匹配,
只要在后面加个非ASCII码的东西就可以绕过。

所以我们用%88或者只要是可以造成乱码的url编码就可以绕过**/utils.php/*$/i** 正则匹配。

/show_source/用show[source或者show.source绕过,这个记住即可。

paload:

/index.php/utils.php/%88?show[source=1

Pasted image 20241208104308.png

总结

  • 文件包含

  • 正则绕过

  • $_SERVE[‘PHP_SELF’] 读取的是当前执行脚本的文件名,意思就是读取文件夹下的一个文件

  • $_SERVER[‘REQUEST_URI’]是取得当前URL的 路径地址

  • basename()函数返回路径中的文件名部分
    语法:basename(path,suffix)
    path 必须,路径
    suffix 可选,文件扩展名,如果文件有就不会显示扩展名

  • /show_source/用show[source或者show.source绕过

  • 我们用非ASCII码的东西如%88或者只要是可以造成乱码的url编码就可以绕过**/utils.php/*$/i** 正则匹配。

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇