首页
社区
课程
招聘
[注意]KCTF靶场WEB题交流帖:BypassWAF
发表于: 2024-4-19 22:37 3123

[注意]KCTF靶场WEB题交流帖:BypassWAF

2024-4-19 22:37
3123

题目链接:

https://kctf.kanxue.com/challenges#BypassWAF-243-8


难度:中等 


考核:文件泄露,绕过软waf


相关问题在此回帖交流。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2024-4-20 10:29 被kanxue编辑 ,原因:
收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 216
活跃值: (158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2

# 文件泄露 扫目录得到一个index.index.php.bak 

<?php
  require("conf/config.php");
  if (isset($_REQUEST['id'])) { 
        $id = $_REQUEST['id'];
      if (preg_match("/\d.+?\D.+/is",$id)){
          die("Attack detected");
        }
        $query = "SELECT text from UserInfo WHERE id = " . $id. ";"; 
        $results = $conn->query($query);
        echo "学号:" . $id . ",成绩为: ".$results->fetch_assoc()['text'];
   }
?>
解题关键点在于绕正则,preg_match("/\d.+?\D.+/is",$id) 

这个正则表达式 `/\d.+?\D.+/is` 是一个用于匹配字符串的模式,具体解释如下:


1. `/`: 正则表达式的起始标志,表示模式的开始。
2. `\d`: 匹配任意一个数字字符。
3. `.+?`: 匹配任意数量的字符(包括 0 个),`+` 表示匹配前面的字符 1 次或多次,`.` 表示匹配任意字符,`?` 表示进行非贪婪匹配,即尽可能少地匹配字符。
4. `\D`: 匹配任意一个非数字字符。
5. `.+`: 同样匹配任意数量的字符,不过这里没有非贪婪匹配的标志。
6. `/`: 正则表达式的结束标志,表示模式的结束。
7. `is`: 修饰符,其中 `i` 表示忽略大小写,`s` 表示让 `.` 匹配包括换行符在内的所有字符。
因此,这个正则表达式的作用是匹配包含数字字符的字符串,并且在数字字符后至少包含一个非数字字符。例如,它可以匹配像 `/123abc/` 这样的字符串。
值得注意的是,正则表达式的含义可能因不同的上下文而有所不同,具体匹配的结果还要看实际的字符串内容。

以上引用GPT,简而言之也就是数字后面不能跟其他字符,所以绕过payload如下


ord() 解题,接下来就是正常的查询库、表、列、数据了

2024-4-23 19:27
1
雪    币: 41
活跃值: (127)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问一下这个目录如何扫描的,为何我这边没有泄露代码php
2024-10-30 17:00
0
雪    币: 0
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
reiji 请问一下这个目录如何扫描的,为何我这边没有泄露代码php[em_46]
泄露的文件名是:/index.php.bak
2024-10-31 10:35
0
游客
登录 | 注册 方可回帖
返回
//