Webhacking.kr old-27
Challenge
Return the admin row while bypassing the SQL filters.
绕过 SQL 过滤器并返回 admin 记录。
1 | https://webhacking.kr/challenge/web-12/ |
Analysis
题目的查询形态为:
1 | SELECT id FROM chall27 WHERE id='guest' AND no=(INPUT) |
过滤器拒绝
#、空格、=、select、limit、0x
和括号中的部分形式。payload 先用 0) 闭合
no=(INPUT),再用 URL 编码的 Tab 作为 SQL 空白,用
LIKE 替代 =,最后用 --
注释掉服务端拼接的右括号。2 是 admin 行对应的
no 值,因此条件会返回目标记录。
Solution
完整请求脚本如下:
1 | #!/usr/bin/env python3 |
服务端收到并解码 Tab 后,拼接结果等价于:
1 | SELECT id FROM chall27 WHERE id='guest' AND no=(0) OR no LIKE 2 -- ) |
该 payload 让查询结果命中 no=2 的 admin 记录。