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 | 29 | 30 | 31 |
Tags
- promise메서드
- graphql with reactnative
- 비동기배열처리방법
- 신촌 소문난집
- 잠실새내 도그존
- 도그존
- useMutation error
- typescript
- 잠실새내
- apolloclient
- 앙버터마카롱
- graphql
- 고르드
- graphql 400
- 화이트해커를 위한 웹 해킹의 기술
- 비동기배열
- 예쁜술집 예술
- 지보싶 신촌점
- 홍대 예술
- 홍대 카페 장쌤
- graphql with RN
- 화이트 해커를 위한 웹 해킹의 기술
- apollo react native
- promise처리
- graphql react native
- 홍대 토라비
- graphql mutation error
- 토라비
- 운정 소바동
- 금별맥주
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