level 8

2020. 9. 6. 01:53

이번에는 argv[1]까지 못쓰네요.

argv[0]을 이용해 풀어야겠습니다.

 

이 문제는 두 가지 방법이 저는 떠올랐습니다.

하나는 심볼릭 링크를 통해 파일 이름에 쉘코드를 삽입시키는 것.

다른 하나는 execl 함수를 사용해 argv[0] 인자에 파일이름이 아닌 쉘코드를 삽입시키는 것.

 

"""

심볼릭 링크를 이용하기 위해서는 쉘코드에 '\x2f'가 존재해서는 안되는데, 아직까지 깊게 생각하지 않아서인지 그 방법이 도무지 떠오르지 않는다.

또한 왜 하드 링크는 안되는지에 대한 궁금증이 생겼지만 이 역시 해결하려 노력하지 않아서인지 떠오르지 않는다.

이 두 가지 의문에 대해 답이 나온다면 추후에 수정하도록 하겠다.

"""

 

execl 함수가 있는 소스코드를 먼저 작성해보겠습니다.

저는 이렇게 작성했습니다.

NOP 바이트를 많이 주면 그 만큼 문제도 관대해지거든요 ㅎㅎ

 

execl 함수는 함수 자체에서 파일을 실행시키기 때문에 argv[0]에 파일 이름이 들어가지 않습니다.

ShellCode가 들어가죠 ㅎㅎ

 

그래서 이제 argv[0]의 주소를 알아낼 것입니다.

복사하고

이 부분을 이렇게 수정합니다.

컴파일하고,

0xbffffbad가 argv[0]의 주소라네요!

 

payload를 작성하겠습니다.

./test ./troll `python -c 'print "A"*40 + "B"*4 + "\xad\xfd\xff\xbf"'`

흠 뭔가 원본 프로그램하고는 약간의 차이가 있는 듯 해보입니다.

이러려고 NOP 바이트를 껴놨죠!

 

성공!

'[▒] 보안 > LOB' 카테고리의 다른 글

level 10  (0) 2020.09.07
level 9  (0) 2020.09.06
level 7  (0) 2020.09.05
level 6  (0) 2020.09.05
level 5  (0) 2020.09.05

BELATED ARTICLES

more