본문 바로가기

분류 전체보기

(157)
[pwnable.kr] bof 아래는 다운받은 bof.c 코드이다. #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"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } main 함수의 func()에서 key = 0xdeadbeef를 위쪽 func()처럼 key = 0xcafebabe 로 바꿔주면 쉘을 띄워준다. gets 함수를 통해 입력을 받는데, 입력값의 길이를 제한하지 ..
[Dreamhack] basic_exploitation_000 환경정보를 살펴보면, 보호기법이 아무것도 적용되지 않고 있다. #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } int main(int argc, char *argv[]) { char buf[0x80]; initialize(); printf("buf = (%p)\n", buf); scanf("%141s", buf); return 0; } main 함수를 보면 buf..
[SWING] Pwnable 02 - 함수 호출 함수 호출 함수 호출 규약은 함수의 호출과 반환에 대한 약속이다. 함수를 호출하거나 반환할 때 프로그램의 실행 흐름은 다른 함수로 이동한다. 함수를 호출할 때 호출자(Caller)의 상태(Stack Frame) 및 반환 주소(Return Address)를 저장하는데, 이는 함수가 호출한 함수가 반환되고 이동했던 실행 흐름이 다시 원래의 함수로 돌아올 때를 위함이다. 호출자(Caller)는 피호출자(Callee)가 요구하는 인자를 전달해주고, 피호출자의 실행이 종료될 때 반환 값을 전달받는다. 컴파일러가 작성된 코드를 컴파일할 때, 코드에 명시된 혹은 CPU 아키텍처에 적합하며 지원되는 함수 호출 규약을 적용한다. 아키텍처 x86 (32bit) 아키텍처: 레지스터가 적다 -> 스택으로 피호출자의 인자를 전..
[Dreamhack] XSS-1 #!/usr/bin/python3 from flask import Flask, request, render_template from selenium import webdriver from selenium.webdriver.chrome.service import Service 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..
[pwnable.kr] fd https://pwnable.kr/ https://pwnable.kr/ there are flag files corresponding to each challenges (similar to CTF), you need to read it and submit to pwnable.kr to get the corresponding point. in order to read the flag file, you need some skills regarding programming, reverse-engineering, bu pwnable.kr 마지막의 ssh fd@pwnable.kr -p2222 와 password로 guest 를 입력해 접속한다. ls -l 명령어를 입력해 현재 디렉토리에서 권한, 파일 수, 소유자..
[SWING] Pwnable 01 - 메모리 구조 Ubuntu 설치 저번 시스템 해킹 동계 방학 스터디에서 드림핵 커리큘럼을 보고 설치해둔 것이 있길래, 18.04지만 그대로 사용할까 한다. 리눅스 환경 구축 Ubuntu Linux 18.04 설치 (아래 링크 참고) https://releases.ubuntu.com/18.04/ https://antdev.tistory.com/46 https://syhwang.tistory.com/42 메모리 구조 (Memory Layout) 운영체제는 다양한 메모리 공간을 제공한다. 프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드되어야 하고, 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하기 때문이다. 리눅스는 프로세스의 메모리를 데이터의 용도별로 메모리의 구획을 나눈 세그먼트(Segment)로 구분한..
web 뭔가 입력해서 flag가 출력되게 만들거나 그런 게시물을 포스팅해야하는 것 같은데 감을 못 잡겠다. 아래는 페이지 원본 보기. Markdown Generator Logout New Markdown Generate markdown with html. Title HTML Generate coderrim's Markdown 이렇게 Generate하면 원래 로그인 화면으로 튕겨나온다. 파일을 열어보자. flag 형식이 hspace{test_flag}란 말인가? 코드들을 보고 적절한 코드를 Generate하는 문제 같은데 이것 역시 감이 안 잡힌다.
forensic 아, 이게 그 잃어버렸다는 비밀번호가 필요한 flag.txt 인가보다. gif에도 암호가... 여기도 암호가? 이젠 놀랍지도 않다. png도 잠겼다. 여기 있는 세 개의 txt에도 전부 암호가 걸려있다. 파일이 너무 많은데? 파일이 한 두개면 일목요연하게 좀 정리해보려고 했더니만 차마 다는 못하겠다. 시간낭비에 헛발질인 것 같다, 완전. 애당초 문제가 비밀번호를 알아내는 것인지, 번호 없이도 뚫어보란 것인지도 명확히 알 수가 없다. 마법으로 들여다볼 수 있다는게 무슨 말일까? 암호가 걸려있어서인지 폴더 압축을 푸는 것조차 제대로 되지 않는다.