Webhacking.kr old-11

Challenge

Match the server-side regular expression.

构造满足服务端正则表达式的输入。

1
https://webhacking.kr/challenge/code-2/

Analysis

服务端把 val 与下面的正则匹配:

1
$pat = "/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/";

因此输入需要依次包含:

  1. 1 到 3 中的一个数字;
  2. 五个 a 到 f 的字符;
  3. 下划线和服务端看到的 REMOTE_ADDR;
  4. 以 Tab 分隔的 p、a、s、s。

URL 中用 %09 表示 Tab。正则只要求匹配,不要求前缀或五个字母取特定值。

Solution

把 <REMOTE_ADDR> 替换成服务端在当前请求中看到的来源 IP,访问下面的完整路径:

1
https://webhacking.kr/challenge/code-2/?val=1aaaaa_<REMOTE_ADDR>%09p%09a%09s%09s

请求满足正则后即可进入题目完成分支。

IP 由请求连接决定;代理、NAT 或题目部署变化都可能使服务端看到不同的 REMOTE_ADDR,复现时应使用当前请求对应的值。