일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 조건문
- IF문
- sql injection
- 포인터
- 자바스크립트
- suninatas 풀이
- 사칙연산
- python
- 김성엽 대표님
- htmlspecialchars
- document
- property
- xss game
- burp suite
- element 조회
- 함수
- object
- lord of sql injection
- github
- 백준 알고리즘
- window
- 백준 파이썬
- 메소드
- jQuery
- 배열
- 파이썬
- blind sql injection
- Pwndbg
- xss game 풀이
- 객체
- Today
- Total
목록분류 전체보기 (389)
power-girl0-0
Hello~ 안녕하세요! o(*°▽°*)o 1. 문제 flag, mistake, password의 바이너라 파일이 존재하고, mistake에 대한 c코드가 주어진다. #include #include #define PW_LEN 10 #define XORKEY 1 void xor(char* s, int len){ int i; for(i=0; i 0)){ printf("read error\n"); close(fd); return 0; } char pw_buf2[PW_LEN+1]; printf("input password : "); scanf("%10s", pw_buf2); // xor your input xor(pw_buf2, 10); if(!strncmp(pw_buf, pw_buf2, PW_LEN)){ pr..
안녕하세용(. ❛ ᴗ ❛.) 1. 문제 바이너리 파일과 c코드가 주어진다. 아래는 c코드이다. #include int main(){ unsigned int random; random = rand();// random value! unsigned int key=0; scanf("%d", &key); if( (key ^ random) == 0xdeadbeef ){ printf("Good!\n"); system("/bin/cat flag"); return 0; } printf("Wrong, maybe you should try 2^32 cases.\n"); return 0; } 2. 풀이 문제 코드를 확인해보면, 랜덤함수인 rand( )를 사용하는데 난수값을 설정하지 않았다. 이는 프로그램이 실행될 때마다 랜..
(☞゚ヮ゚)☞ 안녕하세요 ☜(゚ヮ゚☜) 1. 문제 flag라는 바이너리 파일이 주어진다. 2. 풀이 ghidra 툴을 이용해서 디컴파일해보면, 아래와 같은 문자열을 확인할 수 있다. UPX로 패킹된 바이너리 파일이라는 의미이다. 따라서, 해당 바이너리 파일을 언패킹해야한다. 언패킹하니, 파일 사이즈가 커진 것을 확인할 수 있다. 이제, 언패킹된 바이너리 파일을 ghidra로 열어보자. 해당 파일에는 main함수가 존재하고, thunk_FUN_00400326함수의 인자값으로 flag라는 변수가 들어가 있다. flag라는 전역변수를 확인해보면, 아래와 같이 어떤 문자열이 존재한다는 것을 알 수 있다. 해당 문자열이 다 보이지 않으므로, 복사해서 메모장에 붙여보면 flag값을 확인할 수 있다. 3. flag ..
안녕하세요~~ (∩^o^)⊃━☆ 0. 풀기 전, 공부하고 오기! C언어 "포인터 배열"을 잘 이해하고 있다면, 쉽게 문제를 풀 수 있을 것이다. 1. 문제 문제에서 주어진 C언어 코드이다. #include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i
해당 문제는 디컴파일하지 않고, c언어 코드만 보고 풀 수 있는 문제이다. 본 글에서는 간단한 풀이 방법을 작성한다. 1. 공격 code 생성전, 알아가기! (1) subprocess 새로운 프로세스를 생성하며, 이를 통해 입출력 파이프에 연결하고 반환 코드를 얻을 수 있는 모듈이다. ( 참고 : https://blog.naver.com/sagala_soske/221280201722 ) 2. 문제 코드 문제의 c언어 코드이다. #include #include #include #include #include int main(int argc, char* argv[], char* envp[]){ printf("Welcome to pwnable.kr\n"); printf("Let's see if you know..
해당 글은 공부한 것을 기록해서, 향후 참고하기 위해 쓴 글입니다. 자세한 설명이 적혀있지 않더라도 이해바랍니다. 1. Code 이해하기 전, 알고가기! (1) seccom 정의 리눅스에서 sandbox기반으로 시스템콜을 허용 및 차단하여, 공격의 가능성을 막는 리눅스 보안 메커니즘이다. (2) setvbuf 지정한 스트림을 위한, 버퍼링 형식과 버퍼 크기 제어를 허용하는 함수이다. ① _IONBF : 버퍼를 사용하지 않는다. ② _IOLBF : 행버퍼링으로, 출력할 때 버퍼가 꽉 차거나 개행문자가 입력되면 문자가 출력된다. (3) mmap 메모리 내용을 파일이나 디바이스에 대응(mapping)하기 위해서 사용하는 시스템 콜이다. 프로세스의 가상 메모리 주소 공간에 파일을 매핑한 뒤, 가상 메모리 주소에..
안녕하세요. 간결한 풀이입니다. (๑•̀ㅂ•́)و✧ 1. 문제 문제에 접속하면, 아래와 같이 코드와 바이너리를 다운로드 할 수 있는 링크가 주어진다. 코드는 아래와 같다. #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; } 2. 풀이 func함수 코드를 살펴보면, key값이 0xcafebabe일..
오늘은 pwndbg에 대해 작성해볼 예정입니다. pwndbg라는 친구를 오늘 처음으로 사용해봤습니다 ㅎㅎ... 한 번 후딱 정리하고, 나중에 필요할 때 보도록 하겠습니다. 1. pwndbg란? elf 디버거로, gdb 기반으로 만들어졌다. 다른 디버거보다 가독성이 좋은 것으로 유명하다. 2. pwndbg 실행법 gdb 파일명 (1) .gdbinit ① 정의 : gdb 명령어 실행될 때, 어떻게 할지 만드는 스크립트. ② 해당 파일을 볼 수 있는 명령어 : cat ~/.gdbinit ( ※ 해당 파일을 열어봤을 때, source ~~pwndbg이런 식으로 작성되어있으면, pwndbg를 사용하겠다는 것이다. ) ③ pwndbg 말고, gdb사용하고 싶을 때 쓰는 명령어 : rm -f ~/.gdbinit 3...