Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 비동기배열처리방법
- graphql react native
- 화이트해커를 위한 웹 해킹의 기술
- graphql with reactnative
- 금별맥주
- 토라비
- graphql mutation error
- 고르드
- 잠실새내
- 운정 소바동
- promise메서드
- graphql
- typescript
- 홍대 예술
- graphql with RN
- 홍대 토라비
- 화이트 해커를 위한 웹 해킹의 기술
- 지보싶 신촌점
- 잠실새내 도그존
- graphql 400
- 도그존
- 예쁜술집 예술
- useMutation error
- 신촌 소문난집
- promise처리
- 앙버터마카롱
- 비동기배열
- apolloclient
- apollo react native
- 홍대 카페 장쌤
Archives
- Today
- Total
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
LOB 3번 풀이 (cobolt) 본문
id: cobolt
pw: hacking exposed
이전에는 strcpy에 BOF 취약점이 존재해 이를 이용했지만 이번에는 gets함수를 이용해 buffer에 값을 넣고 있다.
gets함수 역시 BOF 취약점이 존재하기 때문에 ret의 값을 바꿀 수 있다.
먼저 goblin의 스택구조를 파악하기 위해 디스어셈블해보면 다음과 같다
이를 통해 다음과 같은 스택구조를 그릴 수 있다.
이전 문제에서 사용했던 것과 같은 쉘코드를 사용할 것인데, 20바이트는 쉘코드가 들어가기에 부족해서 이번에도 쉘코드를 환경변수에 등록해 주소 값을 알아낼 것이다.
쉘코드를 알아내는 코드는 다음과 같고
//shell.c code
#include <stdio.h>
int main(){
printf("%p\n",getenv("SHELL2"));
return 0;
}
이를 컴파일 해주고 실행해주면 0xbffffc66이라는 환경변수 SHELL2의 주소가 나온다.
마찬가지로 20바이트를 의미 없는 값으로 채워주고 ret에 방금 알아낸 쉘코드의 시작주소를 넣어주면 된다!
다만 gets 함수는 표준 입출력을 이용하기 때문에 파이프 라인을 통해 값을 넘겨주어야한다.
payload: (python -c 'print "\x90"*20+"\x66\xfc\xff\xbf"';cat)|./goblin
goblin의 pw: "hackers proof"
'wargame 풀이 > LOB' 카테고리의 다른 글
LOB 6번 풀이 (wolfman) (0) | 2020.11.07 |
---|---|
LOB 5번 풀이 (orc) (0) | 2020.11.06 |
LOB 4번 풀이 (goblin) (0) | 2020.11.02 |
LOB 2번 풀이 (gremlin) (0) | 2020.10.29 |
LOB 1번 풀이 (0) | 2020.10.27 |
Comments