Webhacking.kr old-50
Challenge
Use the encoding boundary to reach a UNION result with level 3.
利用编码边界注入 UNION 结果,使 level 变成 3。
1 | https://webhacking.kr/challenge/web-25/ |
Analysis
old-50 的 id 会先经过 addslashes,之后再从
EUC-KR 转换为 UTF-8。%aa
是多字节字符的前导字节;在该转换边界下,它可以吞掉
addslashes 插入的反斜杠,使后面的单引号重新成为 SQL
语法的一部分。
pw 从注释结束处开始注入
UNION SELECT 3。Tab(%09)代替空格,#(%23)注释掉后续
SQL。这个链依赖原始请求中的字节顺序,浏览器或 HTTP
客户端不能把已经编码的
%aa、%27、%2f、%2a
再编码成字面量百分号序列。
Solution
候选请求的完整原始 query 为:
1 | https://webhacking.kr/challenge/web-25/?id=%aa%27%2f%2a&pw=%2a%2funion%09select%093%23 |
解码后两个参数分别是:
1 | id=\xaa'/* |
其中 \xaa 表示原始字节
0xaa,不是六个普通字符。需要使用 Burp Repeater 或能保留
query 原始字节的客户端重放请求,不要先把整个 URL
当作普通参数再次编码。