일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java.lang.IllegalStateException
- pwnable.kr
- python
- cmd1
- 블록체인
- 6566
- UNIQUE constraint failed
- 코틀린
- Make sure the Cursor is initialized correctly before accessing data for it.
- 쏘큩
- kotlin
- 애너그램 그룹
- 클라우드란?
- 10814
- 포너블
- 나이순 정렬
- col -1 from CursorWindow
- tlqkf
- Couldn't read row 0
- Drive-By-Download
- 클라우드가 뭐야
- Docker
- 페니빙
- pwnable
- 액션바 필요없숴
- 백준
- cmd2
- SQLiteConstraintException
- 파이썬
- pwable.kr
- Today
- Total
푸르미르
pwnable.kr 1. fd 본문
포너블이란 운영 체제나 소프트웨어, 하드웨어에 내재된 보안 취약점을 해킹하는 것. 흔히 리트에서 따온 pwn을 써서 포너블(Pwnable)이라고도 부른다.
오늘은 pwnable.kr의 1번 문제 fd를 풀어보자.
문제이름이 fd 인데 file descriptor을 연상케한다. 이게 힌트일까?
문제 내용을 살펴보자.
beginner이면 해당 유튜브 링크로 들어가서 보라는거고,
그 아래 ssh fd@pwnable.kr -p2222로 가라는 것같다.
결국 알아야 하는 것은 flag인 것이다.
리눅스 창에서 들어가보자.
fd유저로 ssh로 pwnable.kr애 접속하라는 것인데, - p옵션을 보면 default ssh port 대신 2222포트로 하라는 것이다.(passwd: guest)
내 리눅스에는 ssh가 설치가 되어있지 않기때문에 먼저 openssh-server을 설치해보자
ssh fd@pwnable.kr -p2222하면
프롬프트를 보면 fd유저로 pwnalble에 들어간 것을 확인 할 수 있다.
ls -al로 파일들이 뭐가 있는지 확인해보자.
flag 파일이 있는데 권한을 살펴보면 fd유저인 내가 읽을 권한은 없다.
일단 fd.c 파일을 보면,
argc가 2개 이상일 때,
atoi(argv[1])로 char to int로 하여 0x1234로 빼준 후 fd변수에 넣는다.
fd를 파일 지정 번호로 하여 read함수로 파일을 읽어 buf에 32바이트를 저장한다. 이때 파일 읽기를 성공하였으면 0보다 큰수를 반환하고 읽을 데이터가 없을 때 (EOF) 0을 반환한다. 그래서 len을 결성하고, "LETMEWIN\n"과 buf를 비교하여 동일하면 flag value를 출력해준다는 것이다.
이것을 알고 fd file을 실행시키면, 따라서 0x1234는 10진수로 4660이기 때문에
'SECURITY > pwnable' 카테고리의 다른 글
pwnable.kr 6.random (0) | 2021.04.06 |
---|---|
pwnable.kr 5.passcode (문제 파악) (0) | 2021.03.31 |
pwnable.kr 4.flag (0) | 2021.03.31 |
pwnable.kr 3.bof (2) | 2021.03.24 |
pwnable.kr 2.collision (0) | 2021.03.24 |