HackCTF 내 버퍼가 흘러넘친다!!
이번 문제의 프로그램을 동작을 확인하기 위해 실행시켜보면 name과 input에서 입력을 받는 프로그램이다.
흠.. 일단 gdb로 까 보자
해당 프로그램을 대충 분석해보면 0x14(20byte)의 공간을 스택에 할당하고 read함수와 gets함수로 입력을 받는다
read함수로 입력받는 값은 name변수로 전역 변수임을 알 수 있다 그렇다는 건 스택이아닌 bss영역에 존재한다.
또한 gets에서 버퍼오버플로우를 일으킬 수 있다.
그렇다는건 name변수에 쉘 코드를 삽입하고 input입력값 0x14(20)+sfp(4)를 dummy값으로 채운 후 ret에 name변수의 주소를 삽입하면 될 거 같다.
그럼 이제 payload를 작성하자
이번에는 쉘 코드 대신 pwntools에서 지원하는 라이브러리를 사용하였다(신기신기)
저번째 입력에서 name(전역 변수)에 쉘 코드를 입력하고 두 번째 입력값에 더미 값으로 20+4(sfp)까지 버퍼오버플로우를 일으킨 후 전역 변수의 주소를 삽입하였다.
전역변수의 주소는 위의 read의 파라미터로 확인했듯 0x804a060이다 이것을 리틀애 디안 방식으로 만들어 넣었다.
그리고 확인해보면!
성공적으로 성공하여 쉘을 획득하고 플래그 또한 획득할 수 있다!!!
'WriteUP' 카테고리의 다른 글
[LOB] goblin (0) | 2021.05.18 |
---|---|
[LOB] cobolt (0) | 2021.05.18 |
Basic_BOF#2 (1) | 2021.05.17 |
Basic_BOF#1 (2) | 2021.05.17 |
[LOB] Gremlin 문제 (1) | 2021.05.17 |