0x00 配置过程
1  | pecl install xdebug  | 
着重注意2点:
php --ini找到php.ini的位置,复制xdebug的配置到文件。- 配置xdebug端口
 

0x01 OrderBy注入
结论:
- dir使用了白名单,只允许asc、desc
 - sort转义了反引号(`)为2个
 
valet start启动,直接打断点:
1  | http://backpack-demo.test/sharp/api/list/voucher?dir=desc&filter_status=1%20%23%20&search=&sort=user_idd%5C%60ss  | 
返回数据,看似是SQL注入:
1  | {"message":"SQLSTATE[42S22]: Column not found: 1054 Unknown column 'user_idd\\`ss' in 'order clause' (SQL: select * from `vouchers` where `status` = 1 # order by `user_idd\\``ss` desc limit 10 offset 0)"}  | 
会报错,但是反引号被转义了一层。实际的SQL语句不是真的数据库执行语句。 
 Illuminate\Database Connection.php的644行,打断点:
1  | select * from `vouchers` where `status` = ? order by `user_idd\``ss` desc limit 10 offset 0  | 
0x02 防御原理
排列方式使用了白名单过滤: 
 SQL查询使用PDO进行,在预编译阶段执行OrderBy时,会发现列名不存在而报错。
 转义的原理是这个:
1  | function wrapValue($value)  | 
 