Webhacking.kr old-24
Challenge
Make the normalized client IP equal
127.0.0.1.让服务端规范化后的 client IP 等于
127.0.0.1。
1 | https://webhacking.kr/challenge/bonus-4/ |
Analysis
题目先把 $_SERVER 提取为变量,再把 $_COOKIE
提取为变量。后一次 extract() 允许名为
REMOTE_ADDR 的 Cookie 覆盖原始客户端地址,因此输入可以控制
$ip。
服务端随后按顺序执行以下替换:
1 | $ip = str_replace("..", ".", $ip); |
输入由 1122、77、三个
.、00、三个
.、00、三个 . 和 1
拼接得到。依次执行替换后,中间结果为
112277..00..00..1、1277..00..00..1、127.00..00..1,最后得到
127.0.0.1。
Solution
通过 Cookie 发送伪造的 REMOTE_ADDR;HTTP 示例中的
<FORGED_IP> 由下方脚本精确生成:
1 | GET /challenge/bonus-4/ |
完整 Python 请求:
1 | #!/usr/bin/env python3 |
响应中的 client IP 应为 127.0.0.1。
该题依赖 Cookie 请求通道和部署行为;若页面仍显示原始地址或
no hack,说明请求未满足条件。