HackThisSite - ExtBasic Mission 05
Challenge
ExtBasic Mission 05 — fix the broken line in a shell script that is supposed to patch a PHP page. 修正 Sam 用来修补 PHP 页面的 shell 脚本里被写错的那一行。
关卡给出一个 PHP 页面:本该调用 safeeval()
包装函数的地方,写成了裸的 eval()。
1 |
|
Sam 写了个 shell 脚本,用 sed 把 eval
批量改写成 safeeval:
1 |
|
页面说明 Sam 的系统是
freeBSD 6.9,顶部横幅另外提醒:不要写
sed -r,BSD 上要用 sed -E。
任务是修正 shell 脚本里写错的那一行。
Solution
横幅专门提醒 -r 与 -E
的区别,说明出题人预期玩家会先怀疑 sed 标志。脚本里已经是
sed -E,在 FreeBSD
上语法合法。这一行的问题不在方言,而在替换命令本身。
s/eval/safeeval/ 没有写全局标志
g:
- 不带
g:sed 对每一行只替换第一个匹配; - 带
g:替换行内所有匹配。