
ctf.dicega.ng/ DiceCTF 2021 DiceCTF is a jeopardy-style CTF with challenges for all skill levels. ctf.dicega.ng ..한문제 먼저 소스를 보면 get name 변수를 통하여 태그로 출력되는 값이 변화하는 것을 볼 수 있음 문제에서 admin cookie에 secret 값이 저장되어 있다고 하였으므로!!! xss를 통하여 쿠키 값을 가져오는 것을 예상함(+ 내가 입력한 링크를 admin bot이 체크하는 페이지가 따로 있었음) 일단 설정된 CSP를 보면 script를 제외한 태그는 금지되어 있고 (default-src none) script-src에서 알 수 있듯이 nonce값을 통하여 스크립트를 삽입 가능함 일단 위에서..

먼저 /img_view 페이지에 적힌 url을 view 하면 위의 이미지를 보여준다 문제에서 주어진 소스 코드를 보면 url의 값이 /로 시작하므로, 로컬에 위치한 이미지를 불러 온 것을 알 수 있음 elif 문에서는 netloc(*) 부분이 localhost, 또는 127.0.0.1일 때 에러 이미지가 보여지도록 되어 있다 즉 http://127.0.0.1/app/flag.txt 를 입력하면 아래와 같은 이미지가 출력된다 /app/flag.txt를 입력해 보았을 때에는 위와 같이 보여지며, 이 때의 이미지 태그를 살펴보면 다음과 같다 이를 복호화 하면 문제에서는 사용자에게, url을 입력받아 http 요청을 보낸 후 img 태그를 이용하여 응답받은 메시지를 출력하고 있으며, 이와 같이 사용자의 입력으로..
CSP (Content Security Policy) xss 공격을 방어하는 기법, 웹 페이지에서 사용될 수 있는 자원(script, img .. )의 위치를 현재 도메인으로 제한하는 등의 제약을 걸어 xss 등의 공격을 방어함. 정책 디렉티브(policy-directive)를 통하여 규칙을 지정함 child-src : iframe, frame 같은 nested browsing contexts를 규제함(frame-src, worker-src 등으로 대체 가능) default-src : 기본형. 다른 CSP 규칙이 정의되지 않았을 때 대체하는 용도로 사용됨 script-src : 자바스크립트에 대한 출처를 검증함 img-src object-src : , , 등을 규제함 CSP에서 사용하는 origin : ..

LFI ( Local file inclusion ) local- 우리가 공격할 서버 에 있는 파일을 불러오는 등의 방식으로 이용하여 공격을 수행함 보통 php로 만들어진 웹에서 include, file_get_contents, fopen, require(require_once) 등의 함수를 사용하였을 때에 발생 -> 불러오는 파일에 대한 필터링 작업이 없이 그대로 추가하기 때문에 취약점이 발생함 --wrapper 데이터 또는 다른 프로그램이 성공적으로 실행되도록 설정하는 프로그램 .. 이라는 의미인데 실제로는 개발을 돕기 위한 도구이지만 LFI 공격에 사용이 가능함 일부 종류들을 알아 보면 1) php:// -- 다양한 입출력 스트림을 표현하기 위해 사용 php://filter 더보기 php://filt..
xss(Cross Site Scripting) 사용자의 브라우저에서 스크립트를 실행시켜 웹 사이트의 쿠키, 또는 세션을 탈취해 사용자의 권한을 얻거나, 사용자의 페이지를 변조하는 공격을 할 수 있음 - stored xss 스크립트가 서버 내의 데이터베이스, 또는 파일의 형대로 저장되어 있다가 사용자가 이를 조회하는 순간 발생함 - reflected xss 사용자가 요청한 데이터에 의한 서버의 응답에서 스크립트가 실행될 수 있음 (ex : 요청한 데이터가 스크립트가 삽입되어 있고, 페이지에서 이를 그대로 출력시킬 때) 브라우저에서, 또는 서버 내부에 저장하는 시점에서, 또는 저장한 데이터를 출력하는 시점에서 입력 값을 검증하는 등의 방식으로 xss 공격에 대한 방어가 필요함. ↓ - Server-side ..
esp : 현재의 스택 위치를 나타내는 포인터 ebp : 스택의 베이스 위치를 나타내는 포인터 eip : 다음 명령을 가리키는 레지스터 프롤로그 - 함수가 호출되었을 때, 스텍 프레임을 구성하는 작업 push eip : 다음 명령을 가리키는 값을 스택에 push push ebp : 베이스 포인터의 초기 값을 스택에 push mov ebp, esp : ebp를 esp 값으로 저장시킴 에필로그 leave mov esp, ebp : esp 레지스터에 ebp 주소를 저장시킴 pop ebp : ret 과정 전에 ebp 값을 스택 프레임에서 pop 시킴(mov esp, ebp 과정이 선행되었으므로 pop되는 것은 ebp 값이 됨) ret pop eip : eip 값을 스택에서 꺼냄 jmp eip : 꺼낸 값으로 점프함

먼저 환경 변수란... export 명령어로 임시 적용시킬 수 있으며, 틀은 다음과 같다. export name=value 영구적으로 적용시키기 위해서는 /etc/bash.bashrc 파일을 수정하면 되는데 이거는 별로 중요한 건 아니니까.. 일반적으로는 export를 사용한다 적용된 환경 변수를 확인하기 위해서는 env 명령어를 사용해 줄 수 있음 환경 변수를 이용하여 bof 를 실행시키는 방법은 ,, 먼저 환경 변수에 shellcode (저번에 구했던 nullbyte 없는 shellcode 이어야 함) 를 등록한 후, 환경 변수 shellcode를 가리키는 주소 값을 ret값에 넣어주는 방식으로 진행된다 환경 변수의 주소 값을 출력시키는 파일을 하나 생성하여 주소 값을 확인해 보면 실행 시마다 주소 ..

진도는 나가는데 내가 소화를 못 해서 씀 Buffer overflow( 메모리에서 데이터가 넘쳐서 overflow 다른 데이터의 영역을 침범하는 것, 보통 스택 영역에서의 overflow를 뜻함) -이를 이용하여 return address를 내가 원하는 다른 주소로 덮어 씌워 프로그램의 흐름을 바꿀 수 있음 간단하게 pwnable.kr 의 bof 문제로 설명을 쓰자면 #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n")..

RTL과 비슷하면서.. 더 발전된 기법 같음 ROP의 설명을 찾아보면, 취약한 프로그램 내부에 있는 기계어 코드 섹션들(Gadget)을 이용하여 BOF 공격 때에 특정 명령을 실행시키도록 하는 방법 이라고 한다. 그렇다면 Gadget이 무엇인가를 보자면 위의 사진은 gdb-peda의 ropgadget 명령어를 이용하여 가젯들의 값을 찾은 사진이다. (gdb가 아닌 peda에만 이 명령어가 존재하고, 가젯의 값들을 파일마다 바뀌는 듯) 일단 찾아낸 주소 위치에 있는 명령어를 한 번씩 체크해 봤다. 위와 같이 popret을 이용하여서는 ebx를 pop시킬 수 있고, pop2ret을 이용하여는 ecx, edx를 pop시킬 수 있다 이 때 시스템 콜을 호출하는 방법에 대하여 갑자기!! 생각해 보면 syscall..

쉘 코드가 nullbyte를 갖고 있을 때, strcpy와 같은 문자열 함수를 호출할 때 모든 내용이 복사되지 않을 수 있다. ( -> strcpy 함수는 복사되는 크기가 정해져있지 않고, \00(NULL)을 만날 때까지 실행된다.) 따라서 nullbyte를 제거한 쉘 코드를 구해야 한다. 쉘을 실행시키는 기존의 c 코드는 다음과 같다. execve의 인자로 argv[0],argv,NULL이 차례로 정해진다. 어셈블리어로 이를 생각하여 보면, 첫 번째 인자는 ebx, 두 번째 인자 ecx, 세 번째 인자는 edx에 삽입되어 사용된다. (어쩔수없는것, 정해져있음) 위의 코드에서 널 바이트를 제거한 어셈블리 코드는 위와 같다. xor %eax, %eax -> 이를 통하여 eax레지스터에 0의 값을 저장시킬 ..
- Total
- Today
- Yesterday
- RequiredArgsConstructor
- 부분 합
- 완전탐색
- 참조 지역성
- 비트마스킹
- 위상 정렬
- 페르마의 정리
- dp
- 구간 합
- 희소 배열
- 백트래킹
- Priority Queue
- Segment Tree
- HashSet
- Sort
- dfs
- 배낭 문제
- prirotyqueue
- MaxHeap
- Knapsack
- 분할 정복
- 동적계획법
- 누적 합
- 이분탐색
- LowerBound
- 최단 거리
- 완전 탐색
- MinHeap
- Greedy
- 분할정복
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |