ELF 파일과 C파일이 주어진다. Canary와 NX 보호기법이 걸려있는 것을 확인할 수 있다. #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); } void get_shell() { system("/bin/sh"); } void print_box(unsigned char *box, int idx) { printf("Element of index %d is : %02x..
ELF 파일과 C파일이 주어진다. checksec 명령어로 보호기법을 확인하면, canary가 걸려있는 것을 확인할 수 있다. #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); } void get_shell() { system("/bin/sh"); } int main(int argc, char *argv[]) { long addr; long value; char buf..
풀이는 간단하다. flag_gen()함수를 호출하면 FLAG가 출력된다! cmp [rbp+var_4], 5 jnz short loc_56524AA925FE 이 코드 부분을 보면, [rbp+var_4]가 5가 아니면 "---END---"를 출력하게 된다. 그렇다면 [rbp+var_4]가 5가 되도록 만들어 주면 다음 코드가 실행되어 flag_gen()함수가 실행될 것이다!!! 위 cmp 부분에 bp를 걸어주고 [rbp+var_4] 위치로 가보자! Edit -> Patch Program -> Assemble 로 들어가 원래 0이었던 [rbp+var_4]의 값을 5로 만들어 주었다. 다음 코드들을 실행했더니 FLAG가 출력된 것을 확인할 수 있었다!! FLAG DH{389998e56e90e8eb34238948..
세션을 생성하고 생성된 세션을 check session 넣어보면, 생성할 때 입력했던 정보들이 출력된다. #소스코드 #!/usr/bin/env python3 from flask import Flask, request, render_template, redirect import os, pickle, base64 app = Flask(__name__) app.secret_key = os.urandom(32) try: FLAG = open('./flag.txt', 'r').read() # Flag is here!! except: FLAG = '[**FLAG**]' INFO = ['name', 'userid', 'password'] @app.route('/') def index(): return render_t..
페이지에 접속하면 위와 같이 뜬다. login을 해야하는 페이지이다. #!/usr/bin/env python3 #app.py from flask import Flask, request, render_template, make_response, redirect, url_for, session, g import urllib import os import sqlite3 app = Flask(__name__) app.secret_key = os.urandom(32) from flask import _app_ctx_stack DATABASE = 'users.db' def get_db(): top = _app_ctx_stack.top if not hasattr(top, 'sqlite_db'): top.sqlite_..
보호되어 있는 글입니다.
입력 값과 비교하는 함수를 들어가서 확인한다. (a[i] * 0xFB & 0xFF == byte_140003000[i]) * 0xFB는 251로 곱하는 것. &0xFF는 256으로 나누었을 때 나머지와 같다 (즉, &0xFF는 %256과 같음) 51 * 251 * X = b * 51(mod 256) 51을 곱한 이유는 51 * 251을 256으로 나눈 나머지가 1이되기 때문 즉, X = b * 51 % 256으로 구할 수 있다 byte=[0xAC, 0xF3, 0x0C, 0x25, 0xA3, 0x10, 0xB7, 0x25, 0x16, 0xC6, 0xB7, 0xBC, 0x07, 0x25, 0x02, 0xD5, 0xC6, 0x11, 0x07, 0xC5] s='' for i in range(len(byte)):..
입력 값을 비교하는 함수를 확인해본다. ROL 은 비트 회전이다. ex) 00001011 => 00101100 (오른쪽으로 2번 shift 되면서 가장 오른쪽의 2비투가 맨 왼쪽으로 이동) byte = [0x52, 0xDF, 0xB3, 0x60, 0xF1, 0x8B, 0x1C, 0xB5, 0x57, 0xD1, 0x9F, 0x38, 0x4B, 0x29, 0xD9, 0x26, 0x7F, 0xC9, 0xA3, 0xE9, 0x53, 0x18, 0x4F, 0xB8, 0x6A, 0xCB, 0x87, 0x58, 0x5B, 0x39, 0x1E, 0x00] def ROR(data, shift, size=8): shift %= size body = data >> shift remains = (data
입력 값과 비교하는 함수로 들어가보면, byte_14003020[a[i]] 가 byte_14003000[i]와 같아야 함을 알 수 있다. (byte_14003020에서 byte_14003000[i]에 해당하는 값을 찾으면 됨) byte3000 = [0x00, 0x4D, 0x51, 0x50, 0xEF, 0xFB, 0xC3, 0xCF, 0x92, 0x45, 0x4D, 0xCF, 0xF5, 0x04, 0x40, 0x50, 0x43, 0x63] byte3020 = [0x63, 0x7C, 0x77, 0x7B, 0xF2, 0x6B, 0x6F, 0xC5, 0x30, 0x01, 0x67, 0x2B, 0xFE, 0xD7, 0xAB, 0x76, 0xCA, 0x82, 0xC9, 0x7D, 0xFA, 0x59, 0x47, 0..
입력 값과 비교하는 함수를 들어가보면, a[i+1] + a[i] = byte_7FF6B0813000[i]와 같아야 함을 확인할 수 있다. byte = [0xAD, 0xD8, 0xCB, 0xCB, 0x9D, 0x97, 0xCB, 0xC4, 0x92, 0xA1, 0xD2, 0xD7, 0xD2, 0xD6, 0xA8, 0xA5, 0xDC, 0xC7, 0xAD, 0xA3, 0xA1, 0x98, 0x4C, 0x00] s = '' for i in reversed(range(23)): byte[i] = byte[i] - byte[i + 1] for i in range(0, 24): s += chr(byte[i]) print (s) 반복문으로 암호를 알아낸다. DH{All_l1fe_3nds_w1th_NULL}
- Total
- Today
- Yesterday
- forensic
- dreamhack
- 모바일
- forensics
- reversing
- Fiesta
- 취약점
- FTKImager
- md5
- Android
- 리버싱
- Steganography
- 해킹
- cheatengine
- SQLi
- MISC
- rev
- CTF
- sqlinjection
- Cookie
- 인시큐어뱅크
- 드림핵
- AssaultCube
- mongodb
- web
- networking
- 스테가노그래피
- 포렌식
- 안드로이드
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |