본문 바로가기

728x90
반응형

CTF/CTFs

(9)
[Basic] Buffer Over Flow Note - 1 이전 블로그에서 백업한 내용입니다 개요 BOF (Buffer Over Flow) 관련 공부 중에 예제를 보며 익혔던 내용들을 기록하고자 합니다. 인접한 변수 목표는 buffer변수를 오버플로우 시키면 zero 변수의 값이 변하는지 관찰하는 것으로 시작했습니다. 소스 코드의 실행 결과 buffer 변수의 주소와 zero 변수의 주소가 출력되기 때문에 gdb를 통해서 zero 변수의 값을 바꾸려면 buffer 변수를 몇 바이트를 overflow 시켜야 되는지 알아보고자 합니다. gdb를 통해 알아보기 전에 대략 유추해봅시다. buffer변수에는 10바이트 (char 변수의 크기 1byte * 배열의 크기 10)가 할당되어있습니다. 여기서 일단 해 볼 수 있는 것은 10바이트를 넘게 입력해보는 것입니다. 첫 ..
[pwn][pwnable.kr] : 파일 디스크립터 유닉스, 리눅스 시스템은 파일이다. 시스템에서 프로세스가 이 파일들을 접근할 때에 파일 디스크립터라는 개념을 이용한다. 파일 디스크립터는 0이 아닌 정수이며 0, 1, 2, 가 있으며 각각 표준 입력, 표준 출력, 표준 에러이다. 관련 문제로는 pwnable.kr의 fd이고 이 문제가 파일 디스크립터라는 개념을 이용하며 소스 코드는 다음과 같다. read 함수는 fd는 파일 디스크립터 ( 0,1,2) , buf는 파일을 읽어들일 버퍼, 32는 버퍼의 크기이다. 즉 fd가 0이 되게 만들어주면 표준 입력을 할 수 있다. atoi(argv [1]) - 0x1234를 보아 프로그램을 실행할 때 인자로 4660 (10진수 4660은 16진수 1234)를 입력하면 0이 된다. 인자로 4660을 입력하자 입력을 할..
[gdb] : Break Point 브레이크 포인트를 걸 때 위와 같이 브레이크 포인트가 걸렸을 때는 아직 화살표가 가리키는 라인은 실행되지 않는 상태 화살표가 가리키는 라인은 eip가 가리키고 있는 곳, eip는 "다음에 실행 될 위치"를 가리키고 있는 레지스터이기 때문 정리하자면, 105번 까지 실행이 된 상태이고 108번이 실행되기 전이므로 eax 값을 변경하게 되면 cmp 구문이 원래 의도된 것과 다르게 실행될 수 있음 레지스터 값을 변경할 때 그래서 예시로 108번 offset에 브레이크 포인트를 걸고 위와 같이 레지스터의 값을 변경하면 된다, (c는 continue 계속 실행) # change register value # break point with gdb 제 블로그의 내용이 도움이 되셨나요? 여러분의 공감과 댓글이 큰 힘이..
[N00bCTF][MISC] Welcome N00b World~! 문제어 주어지는 디스코드 채널과 연결한 뒤 채널의 상단에 보니 플래그가 숨겨져 있었음 Very Easy Crypto problem.txt 라는 암호화된 텍스트가 담겨진 파일을 제시하는데 해당 내용은 base85로 디코딩하면 복호화 됨 The Middle Age Crypto 문제에서 힌트를 '중세시대'라고 주고 있었으므로 구글링한 뒤 문제에서 제시하는 png 파일을 기반으로 복호화 해주는 사이트를 찾은 뒤 png 파일에서 제시하는 것에 매칭되는 그림을 입력값을 넣으면 플래그가 나옴 플래그 형식이 N00bCTF{result_value}라고 되있고 문제에서도 줄바꿈이 되있길래 '_'를 넣어서 풀어야하는 줄 알았지만 그냥 이어서 쓰면 정답 Compare php의 느슨한 비교..
[ctfLearn][Review] : Inj3ction Time 설명을 읽어보자면 UNION SQL Injection을 이용해 풀어야 하는 것을 힌트로 주고 있습니다. 링크로 들어가 봅시다. 입력을 받을 수 있는 폼 하나와 그 밑으로 어떤 데이터가 나와있습니다 입력 폼에 2를 입력해봅시다. 2를 입력하고 보니 GET 방식으로 전송이 요청되었고 밑의 데이터가 변경된 걸 확인할 수 있습니다. 앞서 언급했듯 UNION SQL Injection을 이용해야 하는 문제이므로 UNION SQL Injection을 시도하기 전 UNION SQL Injection을 어떻게 해야 되는지 정리해봅시다. # Summary ## UNION SQL INJECTION : 2개 이상의 쿼리를 요청하여 결과를 얻는 UNION 연산자를 이용하여 : 요청에 추가 쿼리를 삽입하여 정보를 얻어내는 공격 ..
[weCTF2020] : Build Up WeCTF Build up ctftime.org의 캘린더를 보다 weCTF라는 일정이 눈에 띄어서 들어가봤더니 Jeopardy 처럼 나오는 형식은 아니고github 링크로 연결되었습니다. README.md 를 읽다보니 docker-compose로 직접 빌드해서 쓰면 된다 나와있었기 이용해봤습니다. wectf repository : github.com/wectf/2020p wectf/2020p WeCTF 2020+ Source Code & Organizer's Writeup. Contribute to wectf/2020p development by creating an account on GitHub. github.com 위 링크에 들어가 Run Challenges Locally 항목을 보면 다음과 같이 ..
[Affinity CTF 2020] : Catch Me if You Can # Write Up으로 삽질하기 Review ctftimes를 보다가 begginer 레벨이라 서버가 아직 열려있어 도전해봤다. 문제의 조건과 해결방법은 다음과 같다. 1. 주어진 링크에 접속하면 긴 문자열이 나온다 2. 이 문자열은 image 파일의 내용을 보여주는 것이고 10초마다 바뀐다 3. 10초마다 바뀌는 image 파일의 내용을 서버로 전송하면 성공 주어진 task가 정확해 풀려고 시도를 해봤으나 미약한 지식으로 풀진 못했고 WriteUp을 보고 플래그를 얻을 수 있도록 시도해보자 라는 느낌에서 출발했는데 WriteUp을 보고도 플래그를 얻지 못한 문제이다. Walk Throught 문제를 풀기 위해 생각해볼 수 있는 단계별 작업이 다음과 같았다. # Plan 1. 이미지 파일은 base64 ..
[NACTF2020][Web] : Calculator & Cookie Recipe Calculator Challenge에서 제공되는 사이트에 접속 시 사용자가 입력하는 값을 그대로 화면에 출력하고 있는 것이 확인 가능"1+2" 를 입력했을 때 "1+2 =3" 이라고 출력하고 있는 걸로 eval() 함수를 사용한다고 예측할 수 있다. 문제는 어떤 언어일까를 추려내는 것이다. 페이지 소스보기를 통해 form 태그에 index.php로 submit 하고 있는 걸 봐서 php로 동작하는 것이 예상가능 "$" 싸인을 이용하여 "$flag" 를 이용하면 flag가 나온다. Cookie Recipe ID와 Password에 아무 값이나 입력하면 로그인이 된다 로그아웃 버튼을 누르고 쿠키를 보면 다음과 같은 형태로 저장되어있는 값을 확인할 수 있다. path의 값을 auth.php로 Expires의..

728x90
반응형