목록* (243)
CIDY

// Name: tcache_poison.c // Compile: gcc -o tcache_poison tcache_poison.c -no-pie -Wl,-z,relro,-z,now #include #include #include int main() { void *chunk = NULL; unsigned int size; int idx; setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); while (1) { printf("1. Allocate\n"); printf("2. Free\n"); printf("3. Print\n"); printf("4. Edit\n"); scanf("%d", &idx); switch (idx) { case 1: printf("Size: ..

// gcc -o hos hos.c -fno-stack-protector -no-pie // 64-bit, partial relro, nx #include #include #include #include #include char *ptr[10]; void alarm_handler() { exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(60); } void get_shell() { execve("/bin/sh", NULL, NULL); } int main() { char name[32]; int idx, i, s..

잡담에 넣을까 생각했는데 아무래도 입출력함수의 특징은 포너블에 많이 이용될 것 같기 때문에 여기로 했다.(물론 아직 내가 다양한 문제를 풀어보지 않아서 그런 것일수도 있다.) getc나 putc같은 문자 입출력 함수는 문자열과 달리 널바이트라던가... 딱히 특이사항이 없을 것 같아 정리하지 않았다. *printf 사용법: printf("a"); 서식문자 인자로 들어가는 걸 제외하고 기본적으로 인자는 큰 따옴표 속 문자열 하나이다. 이와 같이 실행하면 추가 인수가 전달되었다는 경고가 뜨는 것을 확인할 수 있다. pritnf는 특별하다고 할 점이 다채로운 포맷스트링을 제외하면 딱히 없다. https://orcinus-orca.tistory.com/50?category=564770 [Ck_수업정리] 8주차(F..

복습 겸 1레벨부터 문제를 다시 풀어보려고 한다. 새롭게 보이는 것도 있지 않을까.. // Compile: gcc -o shell_basic shell_basic.c -lseccomp // apt install seccomp libseccomp-dev // 64-bit, full relro, nx, pie #include #include #include #include #include #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void init() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGA..

6자리면 브포할만하다 생각해서 위와 같은 코드를 돌렸는데 한 시도마다 저렇게 확인 버튼을 눌러줘야 하는 문제가 생겼다. 그래서 소스를 수정해 return alert(wrong)을 return 0으로, 맞는 경우를 return 1로 바꾼 다음 html을 따로 저장해서 그걸로 브포를 돌렸다. 근데 생각보다 브포가 오래걸리는데, 생각해보면 이 6자리 비밀번호는 년월일을 의미하기 때문에 시도가 필요없는 숫자들이 엄청 많다. -> 년월일을 나누어 for문을 3중으로 쓰면 효율을 높일 수 있다. for (var Y = 0; Y
*CSP Content Security Policy의 약자. 컨텐츠 보안 정책으로, XSS와 같이 의도치 않은 데이터를 삽입하는 형태의 공격을 방어하기 위한 보안 계층이다. XSS공격은 브라우저가 서버로부터 전달받은 데이터를 신뢰한다는 것에 기반한다. CSP는 이와 같은 형태의 공격 방지를 위해 웹 페이지에 사용될 수 있는 자원의 위치와 출처에 제약을 건다. CSP헤더는 여러 개의 정책 지시문이 ; 으로 분리된 형태이다. 정책 지시문은 default-src, script-src와 같은 지시문과 'self', https:, *.dreamhack.io와 같은 출처가 공백으로 분리된 형태여야 한다. default-src 'self' https://example.dreamhack.io 위 CSP구문은 페이지 내..

#!/usr/bin/python3 from flask import Flask, request, render_template, make_response, redirect, url_for app = Flask(__name__) try: FLAG = open('./flag.txt', 'r').read() except: FLAG = '[**FLAG**]' users = { 'guest': 'guest', 'user': 'user1234', 'admin': FLAG } session_storage = { } @app.route('/') def index(): session_id = request.cookies.get('sessionid', None) try: username = session_storage[ses..

#!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver import urllib import os app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open("./flag.txt", "r").read() except: FLAG = "[**FLAG**]" def read_url(url, cookie={"name": "name", "value": "value"}): cookie.update({"domain": "127.0.0.1"}) try: options = webdriver.ChromeOptions() for _ i..