본문 바로가기

4-3. 2021-2 심화 스터디/CTF

(8)
[21.11.20]암호, 포렌식 CTF 풀이 Dreamhack - Textbook-DH 문제에서 제공된 파일을 다운로드 받으면 challenge.py 파일을 확인할 수 있다. 공통으로 사용할 소수 p를 뽑은 후, 2 이상 p미만의 수 x를 Alice와 Bob이 각각 뽑는다. 그리고 2의 x승을 이용하여키를 교환하는 방식이다. 이는 x의 값을 드러내지 않고 2^x mod p만을 상대에게 교환하여 서로의 비밀키 x를 드러내지 않는 장점을 지닌다. 그런데 문제에서는 g 대신 사용할 수를 사용자에게 받는다. 따라서 우리가 알지 못하는 x의 값에 관계없이 g^x mod p의 값을 알아낼 방법을 찾으면 된다. 이를 알아낼 경우 AES의 key로 사용되는 md5(g^x mod p)의 값을 알아내어 문제의 마지막 flag의 값을 복호화해낼 수 있다. ​ 입력값으..
[2021.11.13] dreamhack, HackCTF 풀이 dreamhack [ Pwnable ] off_by_one_000 압축 해제 후 문제 확인 주어진 파일을 실행하니 이름을 입력하라는 메시지가 출력됨, 무작위 값을 입력하니 입력한 내용을 다시 출력하고 프로그램이 자동으로 종료됨 off_by_one_000.c 파일을 살펴보니 아래와 같은 코드로 작성됨을 확인함 문제 해결을 위해서는 get_shell 함수를 실행시켜야 한다고 했음, 이를 위해 gdb에서 우선 get_shell 함수의 주소를 info function을 통해 확인함 (0x080485db) 다음으로 main 함수에서 cpy 함수를 호출하는 부분에 BP를 걸고, 프로그램을 실행시킴 dummy값을 256개를 주니 EIP까지 침범해 ret 주소가 입력한 dummy값으로 변경된 것을 확인함 cpy함수의 ..
[2021.11.06] dreamhack, HackCTF reversing, CTF문제풀이 rev-4(dreamhack reversing) 실행파일 chall4를 역어셈블러, ghidra를 사용하면 위와 같이 나온다. 여기서 main함수를 찾는다. Input된 값(local_118)을 Fun_140001000에서 비교하여 Wrong, correct를 거르는 것을 확인. Param_1(local_118) + local_18>>4 | ((Param_1(local_118)+local_18)&0xf 4 | ((입력값 + local_18)&0xf op.gg 페이지+입력한값 post타입인 것을 확인하고 서버와 관련된 공격을 짐작 일단 url을 조작해보자 url 조작했을 때 다른 사이트에 접근하면 no의 값을 띄움--> url을 조작하지 않고 공격을 시도 SSRF 취약점 이용 @을 이용하여 취약점 발생을 ..
[2021.10.09] HackCTF 풀이 [ Pwnable ] 01. 내 버퍼가 흘러넘친다! prob1파일 ghidra로 디컴파일 main 함수 내에 name이라는 변수가 없는 것을 확인. 저기서 name을 더블클릭하여 name함수 찾아냄 0x084a060위치에 name이 초기화되지 않은 채로 있는 것 확인. stack 구조 dummy로 채울 값 24byte+ return주소에 name 주소 채운다. checksec로 NX꺼져있는 것 확인 - shellcode 삽입 가능 다른 문제에서는 버퍼오버 플로우를 유발하여 cmd /bin/sh 같이 쉘기능을 하는 명령어쪽으로 유도되게 했으나, 이 코드에는 /bin/sh 같은 코드가 없다. 따라서 이 name주소에서 /bin/sh가 실행되게 쉘코드를 넣어준다. http://shell-storm.org/sh..
[2021.09.25] HackCTF풀이 [ Pwnable ] bof_basic#2 - 100 points 실행시키고 임의의 입력값(Hi)을 넣으면 다음과 같은 메시지가 생김 checksec을 통해 보호 기법을 확인 Nx를 보니 활성화 되어있다는 것을 확인(shell 실행 불가) IDA를 이용해 보게 되면(pro) 사용하지못하는 Shell에 대한 함수가 있는 것을 볼 수 있음(shell은 return system(“bin/dash”))를 하고 shell을 대신 하는 함수임 시작 주소는 0x804849B 그리고 메인함수를 보게 되면 v5는 sup 함수 주소 값이 들어가고 s는 fgets 함수에 의해서 133바이트 입력받음 그리고 마지막에 v5를 실행 ( sup 함수를 실행) sup은 s를 출력(아까 입력값을 넣었을 때 나온 문자 :하아...) 즉..
[2021.09.18] Dreamhack rev-basic 외 풀이 3주차는 리버싱의 기본 개념 학습 후, Dreamhack과 HackCTF 사이트에서 실제 리버싱 문제를 풀고 풀이방법을 서로 공유함 1. rev-basic-0 (Dreamhack) 문제 파일 압축 해제 후 실행 무작위 문자열을 입력하니 자동으로 파일이 종료됨 이에 분석을 위해 x64dbg 디버거에서 파일을 열고, ‘다음을 찾기 – 모든 모듈 – 문자열 참조’를 통해 파일에서 참조되는 문자열을 모두 탐색함 아래와 같이 맨 처음 파일 실행 시 출력되었던 “Input” 문자열 외에, “Correct”, “Wrong” 문자열도 발견함, 이에 Input 문자열이 있는 위치로 이동함 무작위 문자열을 대입하니 아까는 확인하지 못한 Wrong 문자열을 확인할 수 있었음 비교되는 문자열을 알아내기 위해 strcmp 함수..
[2021.09.11]Web, pwnable 개념 정리 Web Client-side Basic HTTP: Connectionless, Stateless 특성 --> 사용자 식별을 위해 쿠키와 세션 사용 공격자: 쿠키,세션에 저장된 세션 아이디 탈취하여 사용자의 권한을 억거나 사용자의 브라우에서 자바스크립트를 실행하는 등의 특별한 행위를 수행해 사용자가 요청을 보낸 것처럼하는 것이 클라이언트 사이드 취약점의 주 목적 취약점 발생이유? 웹 브라우저는 Stateful한 상태를 유지하기 위해 모든 HTTP 요청에 쿠키를 함께 보냄 Same Origin Policy(SOP) -배경: 자바 스크립트를 통해 페이지 내 있는 요소를 관리 가능, 웹 브라우저를 통해 호스트 요청시 사용자의 정보를 담고 있는 쿠키도 함께 전송 → 외부 리소스를 불러오는 엘리먼트를 사용자 동의없..
CTF 자료 조사 및 학습 계획 해킹의 종류및 CTF 개념 및 참고 사이트 ------------------------------------------------------------------------------------------------------------------------------- [ 웹 해킹 ] 정의 : 웹 사이트의 취약점을 공격하는 기술적 위협으로, 웹 페이지를 통하여 권한이 없는 시스템에 접근하거나 데이터 유출 및 파괴와 같은 행위 종류 : SQL Injection, Command Injection, XPath Injection, XXE Injection, XSS, CSRF, File Upload, File Download 등 [ 리버싱 ] 정의 : 이미 만들어진 물건이나 기계장치 혹은 시스템 구조, 기능, ..