일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- webhacking
- Shell code
- Payload
- BOF
- wargame
- 웹해킹
- Pwnable.kr
- stack overflow
- 네트워크
- SQL
- 운영체제
- PWN
- 워게임
- 정보보안기사
- Spring Framework
- Lord of BOF
- LOB
- 정보보안기사 실기
- System
- system hacking
- Buffer Overflow
- Spring MVC
- hacking
- Spring
- Operating System
- pwnable
- 정보처리기사 실기
- webhacking.kr
- 해킹
- OS
- Today
- Total
목록hacking (58)
DongDD's IT
[LOB] Level8 orge Problem 이번 문제도 마찬가지로 troll 실행 파일과 troll.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 123456789101112131415161718192021222324252627282930313233343536373839404142#include #include extern char **environ; main(int argc, char *argv[]){ char buffer[40]; int i; // here is changed if(argc != 2){ printf("argc must be two!\n"); exit(0); } // egghunter for(i=0; environ[i]; i++) memset(environ[i], 0, st..
[LOB] Level7 darkelf Problem 이번 문제에서도 orge 실행 파일과 orge.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 1234567891011121314151617181920212223242526272829303132333435363738394041424344#include #include extern char **environ; main(int argc, char *argv[]){ char buffer[40]; int i; if(argc 48) { printf(“argument is too long!\n”); exit(0); } strcpy(buffer, argv[1]); printf(“%s\n”, buffer); // buffer hunter memset(buffe..
[LOB] Level6 wolfman Problem 이번 문제도 마찬가지로 darkelf 실행 파일과 darkelf.c 소스 코드 파일이 있었다.소스 코드를 확인해보았다. 1234567891011121314151617181920212223242526272829303132333435363738#include #include extern char **environ; main(int argc, char *argv[]){ char buffer[40]; int i; if(argc 48) { printf(“argument is too long!\n”); exit(0); } strcpy(buffer, argv[1]); printf(“%s\n”, buffer); // buffer hunter memset(buffer,..
[LOB] Level5 orc Problem 이번 문제도 들어가보니 wolfman 실행 파일 하나와 wolfman.c 소스 코드 파일 하나가 주어져있었다.저번 문제 소스 코드의 소유가 root로 되어있었는데 이번 문제 역시 root로 되어있는 걸로 보아 아마 저번 문제 부터 쭉 소스 코드를 수정할 수 없게 만든 것 같다.일단 소스 코드를 먼저 확인해보았다. 12345678910111213141516171819202122232425262728#include #include extern char **environ; main(int argc, char argv[]){ char buffer[40]; int I; if(argc
Format String Bug Format String - 변수의 출력 형식을 정해주는 인자를 의미한다.- %d(정수), %f(실수), %s(string), %p(pointer), %x(16진수) 등이 있다.- Format string bug에 주로 사용되는 인자-> %n : *int(쓰인 총 바이트 수)를 저장하는 인자-> %x : 16진수로 값을 알아오는데 사용되는 인자-> %p : 0x를 붙인 16진수 값으로 출력하는데 사용되는 인자 Process(printf)- 함수를 시작하기 전 함수에 인자로 사용된 값을 stack에 넣는다.- printf 함수를 시작하면 함수 인자로 받은 argv[1]부터 먼저 읽는다.- 인자를 읽다가 Format string을 만나게 되면 POP한 뒤 ESP가 가리키는 값..
[LOB] Level4 goblin Problem 이번 문제도 앞 문제들과 마찬가지로 실행파일 하나와 소스 코드 파일 하나가 주어져있었다.조금 다른 점이라면 앞 문제들은 소스 코드가 현재 문제의 계정 소유로 되어있어 소스 코드를 수정해 buffer의 위치를 알아낸다던지 하는 것이 가능했는데 이번 문제의 소스 코드의 소유는 root로 되어있어 소스 코드 수정이 불가능하게 되어있었다. 12345678910111213141516171819202122232425262728#include #include extern char **environ; main(int argc, char *argv[]){ char buffer[40]; int i; if(argc
[LOB] Level3 cobolt Problem cobolt로 접속하니 앞에 문제와 같은 형식으로 되어있었다. 소스 코드와 실행 파일 하나가 주어져있었다.소스 코드를 확인해보았다. 1234567int main(){ char buffer[16]; gets(buffer); printf(“%s\n”,buffer); } cs 앞에 문제에서 인자를 받아 strcpy로 buffer에 복사해줬다면 이번 문제는 gets, stdin으로 buffer를 직접 입력받게 되어있었다.buffer의 크기는 16bytes였고 단순히 인자로 받던 프로그램에서 stdin으로 입력을 받는 것으로 바뀌었을 뿐이라 생각했다.1,2번 문제에서 풀었던 방법으로 풀 수 있을 거란 생각이 들었다. Solution 1. Shell code 삽입을..
[LOB] Level2 gremlin Problem 1번 문제를 해결하고 얻은 아이디와 password를 통해 2번 문제 계정으로 들어갔다. 2번 문제 gremlin도 1번 문제 gate와 마찬가지로 cobolt라는 실행파일과 cobolt.c 소스코드가 있었다. cobolt라는 계정이 다음 Level 계정인 듯 했다.일단 소스 코드를 먼저 확인해보았다. 1234567891011int main(int argc, char *argv[]){ char buffer[16]; if(argc
[LOB] Level1 gate Problem LOB에 접속하면 처음으로 볼 수 있는 화면이다. 처음 레벨의 아이디와 패스워드는 gate/gate이다. gate로 접속해 어떤 파일이 있는지 확인해보았다. gremlin이라는 소스코드 파일과 gremlin 유저의 소유로 되어있는 gremlin 실행파일이 있었다.먼저 소스코드를 확인해보았다. 1234567891011int main(int argc, char *argv[]){ char buffer[256]; if(argc
리버싱 예제 - abex crackme2 Problem 맨 왼쪽은 시작화면이고 Name과 Serial을 입력받을 수 있는 텍스트 창과 버튼 3개로 이루어져있다. 아무것도 입력하지 않았을 시 최소 4자리 이상의 name을 입력해달라는 message가 출력되고 Name을 입력한 후 다시 눌렀을 때는 serial이 일치하지 않는다는 message가 출력된다. 입력한 Name과 Serial이 어떠한 검사를 통해 일치하다는 것이 확인되면 통과할 수 있는 문제인 것 같다. Analysis Ollydbg를 통해 실행하면 Entry point(0x00401238)에서 프로그램이 시작된다. 먼저 Code->Search for -> All referenced strings를 통해 출력되었던 message를 찾아보았고 위 ..