'orge'에 해당되는 글 2건

  1. 2019.04.26 [LOB] 8. orge -> troll
  2. 2019.04.26 [LOB] 7. darkelf -> orge
System/LOB2019. 4. 26. 18:43

 

▲ LOB 8번 문제. orge -> troll 문제이다. troll.c와 troll파일이 존재한다.

▲ 이번에는 이전 문제와 달리 argc가 2인지 체크한다. 그리고 memset으로 argv[1]를 비워준다.

▲ 따라서 우리는 argv[2]를 사용할 수 없다. argv[2]를 사용하게 될 시 argc의 값이 3이 되기 때문이다. 우리는 다른 방법을 찾아보아야 한다.

gcc 말고 gdb 임

▲ 답은 심볼릭 링크를 이용해 argv[0]을 내가 원하는 쉘코드로 바꾸어 주는 것이다. 이 작업을 하면 argv[0]에 우리의  쉘 코드가 존재하게 된다. 이를 이용해 공격을 할 수 있다.

▲ 위에서 알아낸 주소로 공격을 성공한다.

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

[LOB] 10. vampire -> skeleton  (0) 2019.04.26
[LOB] 9. troll -> vampire  (0) 2019.04.26
[LOB] 7. darkelf -> orge  (0) 2019.04.26
6. wolfman -> darkelf  (0) 2019.04.26
[LOB] 5. orc -> wolfman  (0) 2019.04.26
Posted by BadSchool
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