쉽게 푼 건 풀이를 쓰지 않습니다
cat gremlin.c
쉘코드를 포함한 환경변수를 등록해서 그 주소로 ret을 덮어쓰도록 익스플로잇했다.
(과정 생략)
가장 헷갈렸던 부분은 gdb로 까서 set disas intel하면 intel 어셈으로 바뀌어야 하는데 at&t의 '%'가 나오던 부분...
>> AT&T 어셈블리
assembly 에서 lea 명령어가 뭔가요..? | KLDP
0x804854d <main+77> mov 0x804971c,%eax 0x8048552 <main+82> push %eax 0x8048553 <main+83> push $0x3ff 0x8048558 <main+88> lea 0xfffffbf4(%ebp),%eax 0x804855e <main+94> push %eax 0x804855f <main+95> call 0x80483e4 0x8048564 <main+100> add $0xc,%esp <</main+100></main+95></main+94></main+88></main+83></main+82></main+77>
kldp.org
AT&T의 lea 부분을 보면 웬 0xffff....같은 큰 수가 나온 것을 볼 수 있는데 이것은 2의 보수를 이용한 것!
>> 2의 보수 이해
https://st-lab.tistory.com/189
2진수의 수와 음수 표현법 [1의 보수와 2의 보수]
안녕하세요. 오늘은 프로그래밍이 아닌 컴퓨터의 연산에 대해 이해해보고자 합니다. 우리가 흔히 프로그래밍을 할 때는 그나마 사람에 가까운 언어로 된 고급언어들로 작성을 하지만 실제 컴퓨
st-lab.tistory.com
2의 보수 구하기 = 2진수 값 0, 1 반전 -> +1 한 수에 - 붙이면 된다.
ex. 0xffff ff00 -> 0x0000 00ff -> 0x0000 0100 = -256(최상위 비트가 1이었으니까 음수... - 붙이기)
쨋든 익스 성공하면
gremlin / hello bof world
'워게임 > LOB' 카테고리의 다른 글
LOB - troll (환경변수) (0) | 2021.08.01 |
---|---|
LOB - darkelf (0) | 2021.07.31 |
LOB - wolfman (심볼릭 링크) (0) | 2021.07.31 |
LOB - orc (0) | 2021.07.31 |
LOB - goblin (0) | 2021.07.31 |
댓글