slide-image

LOB

[Load Of Buffer overflow]

#03 :cobolt->goblin

 

이번에도 예전에 썼던 것을 그대로 옮겨보았다.

 

이번에는 힌트에 표준입출력이라는 stdin이 추가되었다. 전의 strcpy함수가 아닌 gets함수인데, 일단 인자를 받아서 카피하는 것이 아니라 그냥 buffer만큼 가져오므로 파이프를 통해서 입출력을 전달하려고 한다.

ftz의 level12와 같이 페이로드를 (python -c ‘print “기본적인 페이로드”’;cat) | ./프로그램 형식으로 짜려고 한다.

왜냐면, 파이썬으로 문자를 전달할 시에 끝에 EOF를 넣어서 전달하므로 종료되는 것을 방지할 도구가 필요하기 때문이다.

이렇게 뒤에 cat을 안하면 bash등이 실행되어도 바로 종료된다.

...더보기

일단 버퍼 크기를 알기 위해서 디버깅을 하였다.

gets함수 전의 버퍼크기가 16바이트이니까 SFP까지 20바이트를 채워주고, 그다음에 쉘코드를 가지는 환경변수의 주소를 그다음에 넣어주려고 한다.

EGG라는 환경변수에 미리 쉘코드를 넣었고, 그 환경변수의 주소를 구하였다.

성공

 

'Wargame > LOB(Redhat)' 카테고리의 다른 글

[LOB] orc->wolfman  (0) 2019.03.28
[LOB] goblin->orc  (0) 2019.03.28
[LOB] gremlin->cobolt  (0) 2019.03.28
[LOB] gate->gremlin  (0) 2019.03.28
[LOB] golem->darkknight  (0) 2019.03.22