한땀한땀 정성들인 코딩

LOB 문제풀이 일기(5) 본문

보안/LOB

LOB 문제풀이 일기(5)

romance penguin 2021. 3. 27. 17:35
반응형

고블린 잡으러 가자!!

 

소스코드 확인

 

gets함수?

전 문제들은 argv로 받아서 strcpy 하는 형태 였는데 .. 

이번엔 프로그램 실행후 명령을 입력 받는다.

리눅스 환경에서는 파이프라인 | 명령어를 쓰면 손쉽게 해결 가능.!

프로세스1 번 | 프로세스 2번 

1번 프로세스의 출력이 2번 프로세스 입력으로 들어간다.

c언어의 경우 입력은 gets나 scanf, fgets 등등 , 출력은 printf

파이썬의 경우 input, print가 되겠다.!

 

버퍼가 작긴한데 작든 말든 그냥 ret 뒤에 넣어주고, nop적당히 넣어주고 전사공격 하는건 1,2 탄이랑 다를게 없다 . ....

print dummy+ret+nop+shellcode

해주고 | 명령어로 넘기면 된다. 



일단 ret주소를 파악하기 위해 

 gcc –o goblin2 goblin.c

 고블린 2생성



디버깅~

 

버퍼 들어가는 주소가

0xbffffb38

복귀 주소는

0xbffffb4c

정확히 20byte(dummy + sfp)차이가 나는 것을 확인 할수 있다.

 

공격하장!

 

실패…

처음에 nop를 한 24byte주고 했다가 ..

50으로 늘리고 100까지 늘려도 안되길래.

구글링좀 하다보니 특정 커널은 setbit가 설정되있어도 실행시에 euid를 현 uid로 봐꿔 버린단다.

그래서 setreuid해주는 쉘코드를 추가할라 했는데

그전에 200으로 늘리니깐 성공 ㅋㅋ ,,,… .ㅡ,ㅡ

 

팁을 좀 적자면 scanf나 gets 같은 분류의 함수에서 파이프라인을 출력을 넘길 때 꼭 cat도 같이 넘겨주자.

입출력 스트림을 켜놔야 shell이 종료안되고 유지된다.

 

정답 : hackers proof

 

반응형

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

LOB 문제풀이 일기(7)  (0) 2021.03.27
LOB 문제풀이 일기(6)  (0) 2021.03.27
LOB 문제풀이 일기(4)  (0) 2021.03.27
LOB 문제풀이 일기(3)  (0) 2021.03.27
LOB 문제풀이 일기(2)  (0) 2021.03.27