pwnable.kr 2번문제 collision문제다.

우선 문제에 주어진

ssh col@pwnable.kr -p2222 로 들어갈 수 있다.



우선 ls -al로 안에 들어있는 파일들을 보니

이번에도 c파일인 col.c가 있다.


이것을 열어보면 hashcode와 입력값이 같으면 열리는 형식이다.

하지만 20byte여야 한다.



그래서 hashcode 값인 0x21DD09EC를 

파이썬을 열어서

5로나눈 값은 113626824이다.

하지만 정확히 5로 나누어 떨어지는지 다시 5를 곱해보면

4가 차이나는 것을 알 수 있다.


그렇기 때문에 우선 0xC8CEC506을 4개 넣고

나머지 0xCCCEC506값을 

넣어주면

flag가 출력된다.


'Pwnable > Pwnable.kr' 카테고리의 다른 글

pwnable.kr [asm]  (0) 2018.08.01
pwnable.kr 4번 [flag]  (0) 2018.04.14
pwnable.kr 3번 [bof]  (0) 2018.04.13
pwnable.kr 1번 [fd]  (0) 2018.04.10


웹문제만 풀다가 다른 부분의 지식도 알아야겠다는 생각에

시작한 pwnable.kr 이다


첫번째 문제인 fd이다



눌러보면 일단 ssh fd@pwnable.kr -p2222로 들어가라고 한다

리눅스창에서 치고

비밀번호는 guest를 치면


이 문제로 들어가 진다.


이때 ls -al로 들어가보면 우리가 찾아야 할 것 같은 flag가 있는 것을 볼 수 있다.

하지만 root권한이기 때문에 flag를 볼수는 없다.





이렇듯 퍼미션 디나인이 나온다/




그렇지만 우리의 문제는

fd문제이지 않은가

그렇기 때문에 fd를 실행 시켜보면 숫자를 입력하라고 나온다.

따라서 fd.c 파일을 보면


이런 소스를 볼 수 있다.

소스를 보면 우선 값을 입력해 주어야 하고

atoi함수가 나오는데 이것은 값을 입력할 때에 문자형을 인트형으로 변환 시켜주는 값이다.

그리고 들어온 값은 -0x1234로 빼준다.

이것이 이 문제의 핵심이라고도 볼 수 있는데

이 값이 read값의 인자로 들어간다는 것이다.

빼진 fd값이 read의 인자인데

이때 read 함수를 알아봐야 겠다.


명령어 man read를 치면

 

이렇게 설명이 나온다.

read함수에서

int fd는 open시스템 콜로 열린 파일을 가리키는 파일 지정번호 이고,

buf는 파일에서 읽은 데이터를 저장할 메모리 공간,

len은 읽을 데이터의 크기를 나타내 준다.

이때 항상 예약된 값이 있는데

fd가 0이면 표준 입력,

1이면 표준 출력,

2이면 표준 에러 출력을 나타낸다.

그리고 우리는 strcmp함수로 LETMEWIN값과 버퍼에 있는 값을 비교해

같으면 flag를 출력해주는 것 같다.

따라서 0x1234는 10진수로 4660이기 때문에




./fd 4660을 입력하면

다시 입력을 할 수 있게 되고

그곳에 LETMEWIN을 치면

FLAG를 얻을 수 있다.


'Pwnable > Pwnable.kr' 카테고리의 다른 글

pwnable.kr [asm]  (0) 2018.08.01
pwnable.kr 4번 [flag]  (0) 2018.04.14
pwnable.kr 3번 [bof]  (0) 2018.04.13
pwnable.kr 2번 [collision]  (0) 2018.04.12


코드게이트 2018에 참가하고 왔습니다.

다양한 체험 부스와 인기에 힘입어 굉장히 많은 사람들이 보러 와 주셨습니다.

다양한 기업홍보부스도 많았고 다양한 해킹부스도 많았는데요.

아쉽게도 3부스 정도를 제외하면 자신의 노트북을 들고와야 참여가 가능한 부스가 대부분이었다는 점이 참 아쉬웠습니다.

그 점을 제가 못본건지 공지가 안된 건지는 잘 모르겠지만 저는 안들고가서 참으로 아쉬웠습니다.


우선 오전에는 코드게이트 대회의 주니어, 대학부, 일반부의 시상식이 있었는데요.

제가 대학부 예선에서 탈락해서 무척이나 멋져 보였습니다.

그밖에도 어린이들이 만든 미니 자동차 대회도 같이 존재했습니다.




그리고 오후에는 다양한 교육이 진행되었는데요.

다들 이 교육을 들어보고자 온 경우가 많았을 것 입니다.

세션은 4개로 진행되었고

첫째는 BOB세션으로 처음은 BOB에 관한 설명과 BOB수료생들의 발표를 볼 수 있었습니다.




다음으로 세션2는 주니어를 위해서 다양한 학생들의 강의를 들을 수 있었습니다.



그리고 세션 3과 4는 기술파트로 다양한 공격이나 보안에 관한 내용으로 발표를 이루었는데요.

저는 세션3을 들었습니다.

이유는 외국 CTO분께서 오셔서 영어로 강의도 해주시고

또한 다양한 공격과 보안에 관한 미래의 내용을 발표해 주셨습니다.

또한 영어로 진행되는 발표같은 경우는 동시 통역을 해주는 장비를 개개인에게 대여해 주었기 때문에

무리없이 누구나 들을 수 있게 진행되었습니다.



끝으로 많은 기대를 안고 참여한 코드게이트에서 해킹에 관한 관심이 얼마나 많은지, 또한 많은 실무에서 근무하시는 보안관계자들과 대화를 

할 수 있었다는 점에서 굉장히 좋았지만,

해킹입문자, 또는 해킹을 구경하고 싶은 사람들이 참여할 수 있는 부스는 없었다는 점이 참 아쉬웠습니다.

만약 그런부분만 더 보완해 주신다면 더 유명해 질 것 같다는 생각을 하게 되는 컨퍼런스 였던것 같습니다.


끝으로 만약 가신다면 노트북은 들고 가시는게 좋을 것 같습니다.

이상 2018CODEGATE 였습니다.


'CTF > CTF 문제들' 카테고리의 다른 글

Defcon2019 Speedrun-001 write-up  (0) 2019.05.18
Codegate 2018 Simple_CMS[Web]  (0) 2018.02.06

import ftplib import os filename = "받아올 파일이름" ftp=ftplib.FTP() ftp.connect("연결할 IP주소",포트번호) ftp.login("연결할 아이디","연결할 비밀번호") ftp.cwd("받아올 파일 위치") fd = open("./" + filename,'wb') ftp.retrbinary("RETR " + filename, fd.write) fd.close()

PC 끼리 뿐만 아니라 라즈베리 또한 같은 소스로 가능한 소스입니다.

'웹 서버 > FTP 서버' 카테고리의 다른 글

파이썬으로 구현한 FTP연결 및 업로드  (0) 2018.04.09

import ftplib import os filename = "보낼 파일이름" ftp=ftplib.FTP() ftp.connect("연결할 IP주소",21) ftp.login("로그인 아이디","로그인 비밀번호") ftp.cwd("./") os.chdir(r"보낼 파일의 위치") myfile = open(filename,'rb') ftp.storbinary('STOR ' +filename, myfile ) myfile.close() ftp.close

PC 끼리 뿐만 아니라 라즈베리 또한 같은 소스로 가능한 소스입니다.

'웹 서버 > FTP 서버' 카테고리의 다른 글

파이썬으로 구현한 FTP 연결 및 다운로드  (0) 2018.04.09

정보보안기사 필기를 치고 왔다.

생각보다 어려운 난이도였다. 기존에 기출보다 조금 더 세밀한 부분을 봐야 했고 또한 새로운 기법을 묻는 문제 또한 여전히 출제가 되었다.

아마 출제자는 기존의 기출보다 조금 난이도를 올리려는 것 같았다. 

만약 12회를 다시 본다면 해킹기법도 중요하겠지만 기본 컴퓨터에 대한 지식과 프로토콜에 대한 부분을 조금 더 심도있게 보는 노력이 필요할 것 같다.

그렇지만 이전의 시험과 비슷하게 점수를 받을 것 같다. 이유는 기존 기출에 나온 문제만 다 맞는다면 60점은 받을 수 있게 나왔기 때문이다.

결론은 기본에 충실하고 기출만 확실히 다 보고 간다면 누구든 통과는 가능할 것 같다.

그러니 초보자라도 너무 겁을 먹을 필요는 없다고 본다.

*침입차단 시스템(방화벽)

1. 회선게이트웨이는 애플리케이션과 세션계층 사이에서 내부 시스템으로 접속하기 위한 client 측에 circuit proxy를 인식할 수 있는 수정된 클라이언트 프로그램이 필요하며 설치된 클라이언트만 circuit이 형성

2. 애플리케이션 게이트웨이는 미리 정해진 규칙에 따라 패킷 출발지 및 목적지 ip 주소정보와 각 서비스의 포트번호를 이용해 제어

3. 패킷 필터링 방식은 네트워크 계층과 전송계층에서 작동하며 사용자에게 투명성 제공

4. 상태기반 패킷검사는 osi계층 전 영역에서 동작하고 패킷의 헤더를 분석하며 순서에 위배되는 패킷 차단

 

*IAM(Identity Access Management)

SSO 기능 포함, SSOEAM의 모든 기능 포함, 조직에 의한 자동권한 관리를 수행하는 것은 인사 시트메과 연동하여 권한을 관리할 수 있다.

 

*MPLS VPN(Multi Protocol Level Switching)

:4byte Label 기반의 고속 L2 Switching L3 Router를 제안하는 IETF표준 label switching 기술

LER(Label Edge Router)label할당과 제거, 목적지 분류

LSRLSP의 경로 설정과 패킷 고속처리를 수행한다

 

*Trinoo:공격자가 하나 혹은 기 이상의 마스터에 접속하여 여러개의 Daemon에게 특정 시스템을 일시에 공격하도록 명령, UDP패킷을 대량으로 전송

 

*TFN: 특정포트가 사용되지 않고 암호화가 되어 있으며 프로그램에 의해서 TCP,UDP,ICMP가 복합적으로 사용되고 포트를 임의로 결정

 

*SMTP

1. EHLO : SMTP확장기능 요구

2. RCPT : 현재 정송하고자 하는 이메일 메시지를 받는 사람의 주소 하나를 지정

3. EXPN : 해당 메일의 주소가 메일링 리스트를 지칭하고 있는지 확인하고 그 메일링 리스트의 메일 주소목록을 반환하도록 SMTP에 요청

 

*SSL Record Protocol

: 상위계층에서 전달받은 데이터를 handshake protocol에서 협의된 암호알고리즘, MAC알고리즘, Hash알고리즘을 사용해 데이터를 암호화 하고, 산출된 데이터를 SSL에서 처리가능한 크기의 block으로 나누고 압축한 후에 선택적으로 MAC을 덧붙여 사용

 

*전자화폐 시스템

사용자-(지불 프로토콜)-서버-(예치프로토콜)-은행-(인출프로토콜)-사용자

*S/MIME

:HeaderBody로 이루어지고 서명용 메시지 다이제스트, 암호화 된 서명방식, 세션키 분배방식, 세션키를 이용한 콘텐츠 암호화 방식 사용

SHA-1, MD5 해시함수, DSS, RSA, Diffie-Hellman, RSA

세션키를 이용한 콘텐츠 암호화 : 3DES, RC2/40bit

 

*전자투표

PESV : 지정된 투표소에서 전자투표

REV : 다양한 기술사용으로 원격투표

키오스크 : 밀집지역에 특정 투표기기 설치로 투표

PL : 전자 입찰 프로토콜

 

*getenv()

:외부 환경변수로부터 값을 읽어오기 때문에 환경변수를 조작하면 SQL Injection이 가능

 

*WPKI

SLC(Short Live Certificate)는 인증서의 유효기간을 24 또는 48시간 등으로 짧게하여 인증서 취소목록의 확인해결

 

*PKI

1. 키생성

2. CA의 공개키 배포

3. 사용자 공개키 등록

4. 공개키 서명

5. 인증서 서명

 

*RSA 암호화 절차

1. 두 개의 소수를 선택

2. N을 계산

3. E를 선택

4. D를 결정

5. 공개키를 결정

6. 비밀키를 가진다.

 

*생일자 보안강도는 160BIT 이상

 

*동기식 스트림 암호화

: 스트림 암호의 난수열을 암호화할 입력값은 독립적으로 생성, 암호화와 복호화에서 상호 동기화 필수, 전화도중 변조가 되어도 후속 암호문에 오류의 영향이 파급되지 않음, 의도적 변조가 복호화단계에서 검출불가

 

*ECDSA : 타원곡선기반 전자서명

 

*접근제어 : 외부누출, 변조, 파괴등 위험성에 대한 통제 수행

 

*운영체제의 5단계

1. 동기화 프로세스 스케줄링

2. 메모리 할당, 회수

3. 프로세스 생성 및 제거

4. 주변장치 및 입출력 관리

5. 파일 생성 및 관리

 

*운영체제의 종류

다중처리 시스템에서는 여러개의 프로세서가 하나의 메모리를 공유하여 사용하는 시스템, 하나의 운영체제가 모든 프로세서를 제어.

다중프로그래밍은 한 개의 프로세서에서 여러개의 프로그램이 동시 실행

분산 시스템은 네트워크를 통해서 분산된 컴퓨터 시스템이 작업을 수행

 

*NTFS(New Technology File System)

- 암호화, 압축지원, 대용량 파일시스템을 지원

- 가변 클러스터(512~64KB), 기본값은 4KB이다.

- 트랜잭션 로깅을 통한 복구, 오류 수정이 가능하다.

- window NT에서 동작한다.

- 네트워크 환경을 지원한다.

 

*스플링

:컴퓨터 시스템에서 중앙처리 장치와 입출력 장치가 독립적으로 동작하도록 함으로써 중앙처리장치가 주변장치보다 빨라서 발생하는 대기시간을 줄이기 위해서 고안된 방법.

 

*시스템 콜

:응용프로그램에서 운영체제에게 작업을 의뢰하는 것으로 커널에서 사용자에게 제공하는 함수를 호출한다. 소프트웨서 인터럽트의 고유번호를 호출하여 커널의 서비스 루틴을 수행한다.

 

*NIKTO2: 웹서버의 취약점을 점검하고 포괄적인 테스트 수행

 

*HTTP

- PUT : 제공된 내용이 저장되길 바라는 요청

- GET : 요청받은 정보를 검색

- POST : 서버가 정보를 받아들이고 서버에 동작하도록 요청

- TRACE : LoopBack 메시지 요청

 

*마이크로 커널: 커널에 핵심적인 기능만을 포함하고 적용, 시스템분야에 따라 필요한 기능을 추가하는 방식의 커널 아키텍처, 아날로그 연속입력을 디지털 이산출력으로 반환

 

*iptable chain

1. input chain

2. output chain

3. forward chain

 

*포맷스트링

c언어에서 프로그램을 개발 할 때 sprintf(), printf()함수의 취약점을 이용하여 공격하는 방법으로 정수형 인자, 실수형 인자, 문자. 문자열인자를 잘못 사용해 공격을 수행

 

*netstat

-a: 모든 listen, non-listen 상태의 소켓 출력

-n : 호스트 이름이나 포트번호 대신 ip주소 형태로 반환

-p : 소켓을 소유하고 있는 pid와 프로그램 이름을 출력

-t : TCP소켓리스트

-u : UDP 소켓리스트

-c : 1초단위 연속 출력

-r : 라우팅 테이블 정보

 

*세션 하이재킹 도구

1. hunt : 네트워크 상 감시, 가로채기 등을 할 수 있는 도구

2. arpspoof : 공격자의 주소로 속이는 행위

3. ipwatcher : 네트워크상 연결, 감시 및 세션 가로채기

4. ferret : 세션정보를 가로채기

5. hamster : 프록시 서버 상태로 만들어주기

6. paros : 웹 프록시 서버로 쓸수 있는 도구

7. cain & able : 스푸핑과 스캐닝 도구

8. wireshark : 네트워크 패킷 분석 도구

+ Recent posts