일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- python
- jQuery
- 파이썬
- 포인터
- sql injection
- 배열
- 함수
- IF문
- 백준 파이썬
- burp suite
- lord of sql injection
- blind sql injection
- xss game
- 백준 알고리즘
- 객체
- 김성엽 대표님
- xss game 풀이
- Pwndbg
- window
- github
- element 조회
- 자바스크립트
- document
- 메소드
- 조건문
- 사칙연산
- object
- htmlspecialchars
- suninatas 풀이
- property
- Today
- Total
목록War game (86)
power-girl0-0
(☞゚ヮ゚)☞ 안녕하세요 ☜(゚ヮ゚☜) 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일..
안녕하세요! ლ(╹◡╹ლ) 풀이 간단히 적고 가겠습니다~~ 1. 문제 문제에 주어진대로 접속하면, 존재하는 3개의 파일을 확인할 수 있다. fd.c파일을 열어 c언어 코드를 확인할 수 있다. 2. 풀이 c코드를 분석해보면, 아래와 같은 조건을 확인할 수 있다. 1. 입력받은 인자값에서 0x1234 뺀 값을 read함수의 fd 위치에 넣어준다. 2. read함수를 통해, 입력받은 값이 LETMEWIN이라는 문자일 경우, flag를 획득한다. 즉, fd의 값을 0으로 만들어서, read함수가 표준입력 역할을 수행하도록 만들면 된다. ※ fd (file descriptor) : 리눅스나 유닉스에서 프로세스가 파일을 다룰 때 사용하는 개념 ⇨ 0 : 표준입력 ⇨ 1 : 표준출력 ⇨ 2 : 표준에러 따라서, 0x..
주소 : https://webhacking.kr/old.php Webhacking.kr webhacking.kr [ 풀이 ] 해당 입력값에 dohyeon이라는 이름을 넣으려하니, 글자수가 5개로 제한되어있다. 소스코드를 살펴보자. 주석처리를 살펴보면, ls명령어를 해야한다고 써있다. system('ls'); 명령어를 실행시키면 될 듯 하다. 근데 소스코드를 잘보면, hello에 대한 문구를 출력해주는 코드를 system()함수를 사용하고 있다. 이를 이용해서, ls명령어를 실행해주면 될 듯하다. 먼저, {$id}값이 끝났다는 '(싱클쿼터)후에 ;(세미콜론)을 사용해서 echo명령어를 끝내고 ls를 입력해준다. 여기서 본 글 작성자는 사실 조금 헤맸당 ㅎ_ㅎ 마지막에 남아도는 '(싱글쿼터)를 처리하지 못했..
주소 : https://webhacking.kr/old.php Webhacking.kr webhacking.kr [ 풀이 ] 해당 문제에서 webshell문제라고 말해주고 있다. 일단 webshell.php 파일을 만들어주자. 본 글 작성자는 아래와 같이 read_file함수를 사용해서 파일을 읽어오도록 web_shell.php이라는 파일을 만들었다. 그래서 webshell.php 파일을 업로드 해보았는데, 아래와 같이 wrong type이라고 출력된다 ㅠ_ㅠ type이 잘못되었다고 출력되는 것을 보아, type만 우회해주면 되나?라는 생각에 burp suite툴을 이용해보았다. content-type을 이미지타입으로 변경시키고 전송해보았다. 오! 이번에는 성공적으로 업로드 되었다. 출력된 업로드파일을 ..