'darkelf'에 해당되는 글 2건

  1. 2019.04.26 [LOB] 7. darkelf -> orge
  2. 2019.04.26 6. wolfman -> darkelf
System/LOB2019. 4. 26. 18:36

 

▲ LOB 7번 문제. darkelf -> orge로 넘어가는 문제이다.

힌트를 보면 egg&buffer&length&argv 이다. 더 자세히 알아보자.

▲ 기존의 방어기법 이외에 argv[0]의 길이가 77인지 아닌지 체크해준다.

argv[0]은 실행주소와 파일이름 까지가 들어간다. 근데 이게 어떻게 77이 될까?

▲ 우선 페이로드는 이전과 같다.

▲ 이전 문제와 다른 점은 argv[0]의 길이를 체크해주는 것이다.

gcc가 아니고 gdb

▲ argv[0]의 해결 방법은 바로 /를 이용하는 것이다.

./orge 랑 .//////////////////////////////orge 는 같은 명령이기 때문이다.

▲ 따라서 적절히 argv[0]을 계산하여 / 개수를 맞춰주면 공격이 성공한다.

 

'System > LOB' 카테고리의 다른 글

[LOB] 9. troll -> vampire  (0) 2019.04.26
[LOB] 8. orge -> troll  (0) 2019.04.26
6. wolfman -> darkelf  (0) 2019.04.26
[LOB] 5. orc -> wolfman  (0) 2019.04.26
[LOB] 4. goblin -> orc  (0) 2019.04.26
Posted by BadSchool
System/LOB2019. 4. 26. 18:31

▲ LOB 6번 문제. darkelf.c와 darkelf 파일이 존재한다. 

해당 힌트는  egg&buffer&length이다. 자세히 알아보자.

▲ 코드에서는 egg, buffer 이외에 인자값의 길이를 체크해준다. 

▲ 일단 우리는 buffer안에 값을 못 쓰니까 buffer밖에 shellcode를 입력해 주어야 한다. 근데 buffer에 길이 입력 제한이 존재한다. 이러면 어떻게 해야할까??

▲ 답은 argv[2] 즉, 두번째 인자값을 이용하면 된다.

gcc가 아니고 gdb임

▲ 일단 아무렇게나 입력해 보고 두번째 인자값의 주소를 찾아준다.

▲ 이후 우리가 알아낸 해당 주소를 ret에 덮어씌우면 된다.

'System > LOB' 카테고리의 다른 글

[LOB] 8. orge -> troll  (0) 2019.04.26
[LOB] 7. darkelf -> orge  (0) 2019.04.26
[LOB] 5. orc -> wolfman  (0) 2019.04.26
[LOB] 4. goblin -> orc  (0) 2019.04.26
[LOB] 3. cobolt -> goblin  (0) 2019.04.26
Posted by BadSchool