IT 그리고 정보보안/Write-up

LOB Level 8 (orge)

plummmm 2021. 4. 12. 19:04
반응형

 

드디어 argv[2]에 넣는 방법이 막혔다.

memset함수를 이용하여 argv[1]값을 초기화 하는 알고리즘도 추가되었다.

아예 이제 함수 인자에 페이로드를 넣는 것이 원천봉쇄 되었다...

 

argv[2] 사용불가, 에그쉘 사용불가, 버퍼에 올리는 것도 불가, 페이로드는 스택영역에만

인자가 RET 주소 위로 침범 불가

요정도 조건이 있다.

argv[1]에도 넣을 수가 없으니.. argv[0]에다가 올리는 방법을 한번 생각해보자.ㅎ

 

argv[0]은 파일명을 나타내는 것이니.

파일명에다가 심볼릭 링크를 페이로드로 걸어 주면 되지 싶다..라고 생각했는데

 

\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80

이게 원래 사용하는 셸코드 인데, 이 셸코드로 심볼릭 링크가 걸어지지 않는다. \x2f 때문에

\x2f 는 ' / '를 나타내는 것인데.. 심볼릭 링크에 ' / ' 문자가 들어가면 안된단다. 경로를 표시하는 것이기때문에

그래서 셸코드를 사용 못한다. \x2f가 빠진 셸코드를 찾아서 해보자.

 

셸코드를 argv[0]에 심볼릭 링크 걸어서 공격해보자.

 

argv[0]은 파일 이름이 들어간다 했으니, argv[0]을 변조하려면 심볼릭링크를 쓰는게 좋겠다.

 

 

크기 조절이 안되노;;

여튼 심볼릭 링크가 걸렸다. 이제 위에 그림을 보면 대충 페이로드를 어떻게 구성해야 될지 감이 올것이다.

[nop] [ret -> argv[0]의 주소]

이렇게 하면 되겠지?

 

argv[0] 주소를 구해야 한다. 스택이 계속 유동적으로 변하니까 상당히 골아플 것이다.. 

심볼릭 링크 걸때 글자수 제한이 있으므로 (파일명이니)

NOP Sled를 집어넣을 수가 없다. 넣어도 상당히 작은 ...

 

일단 주소를 찾아보자.

 

어쩔수 없다..브루트 포스 때려야함

 

생각보다 몇번 안했는데 셸따짐..

캡쳐를 못했는데 패스워드는 aspirin

반응형

'IT 그리고 정보보안 > Write-up' 카테고리의 다른 글

LOB Level 10 (vampire)  (0) 2021.04.12
LOB Level 9 (troll)  (0) 2021.04.12
LOB Level 7 (Darkelf)  (0) 2021.04.12
LOB Level 6 (Wolfman)  (0) 2021.04.12
LOB Level 5 (Orc)  (0) 2021.04.12