- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- GPIO
- Shell script
- LEVIATHAN
- 안드로이드
- 그라파나
- 라즈베리파이
- Java
- Linux
- 네트워크
- ACL
- synology
- RaspberryPi
- docker
- 자바
- Python
- 메소드
- JSP
- GUI
- 쉘 스크립트
- 클라우드
- 프로젝트
- nginx
- centos docker
- 쉘 스크립트 기초
- 쉘 스크립트 if문
- Android
- System
- API
- 리눅스
- Tkinter
- Today
- Total
IT창고
[Toddler's Bottle] fd 본문
fd문제를 풀이하기 전 pwnable.kr에 대해 알아보겠습니다.
pwnable.kr은 한국인이 만든 워게임 사이트로 시스템쪽으로 배워볼수있습니다.
첫문제인 fd에 대해 알아보겠습니다.
링크된 동영상은 현재 사라진상태이기 때문에 확인해볼수는 없지만 1점 짜리 문제입니다. 동영상없이도 충분히 풀어볼수있습니다.
문제의 소스코드를 살펴봅니다.
전역변수로 버퍼[32]만큼 잡아주고 인자하나를 넣어야하네요.
system("/bin/cat flag"); 를 실행시켜 flag값을 알아내는것이 목표입니다.
int fd = atoi( argv[1] ) - 0x1234;
이 코드는 argv[1]에 값에서 - 0x1234를 뺀값이 fd이네요
len = read(fd, buf, 32);
read함수는 파일을 읽는 함수입니다.
fd가 파일디스크립터 라는걸 알수있습니다.
파일 디스크립터(File Descriptor)란 시스템이 할당한 파일이나 소켓을 대표하는 정수로서 이 정수를 이용해서 파일에 접근하거나 제어할 수 있습니다.
표준 입력 : 0
표준 출력 : 1
표준 에러 출력 : 2
표준입력이 되기위해 0을 넣어줘야합니다. 그렇다면 0x1234를 계산기로 10진수로 바꿔본다면 숫자는 4660이 나옵니다.
바로 printf("learn about Linux file IO\n"); 넘어가지 않고 표준입력상태로 전환됩니다.
이제 if(!strcmp("LETMEWIN\n", buf)) 코드를 확인하면 buf에 LETMEWIN가 있다면 아래의 코드가 작동되게됩니다.
if(!strcmp("LETMEWIN\n", buf)){
printf("good job :)\n");
system("/bin/cat flag");
exit(0);
}
system("/bin/cat flag"); 코드가 정상적으로 작동해서 flag파일의 내용을 확인해볼수있습니다!
저는 이문제를 먼저 풀어보고 답을 확인했기 때문에 You already authenticated this flag라고 뜨지만 flag답임을 확인할수있습니다.