일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 정보처리기사 실기
- webhacking
- Spring MVC
- Operating System
- Spring Framework
- Pwnable.kr
- wargame
- 웹해킹
- 정보보안기사 실기
- hacking
- LOB
- 해킹
- pwnable
- webhacking.kr
- 정보보안기사
- System
- Buffer Overflow
- BOF
- Shell code
- PWN
- Spring
- 네트워크
- 운영체제
- stack overflow
- 워게임
- system hacking
- OS
- SQL
- Lord of BOF
- Payload
- Today
- Total
목록분류 전체보기 (171)
DongDD's IT
[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를 찾아보았고 위 ..
Register 및 어셈블리어 정리 레지스터 IA-32 레지스터- Intel에서 만든 32bit 크기의 레지스터- 32bit(4bytes) 데이터를 한번에 처리 가능- 32bit 크기로 메모리 주소 접근 가능 범용 레지스터 : 연산에 사용되는 레지스터1) EAX : 산술, 논리 연산에 사용되는 레지스터, 함수 리턴 값 전달용도로도 사용된다.2) EBX : 간접 주소 지정 시 사용되는 레지스터3) ECX : 루프문에서 반복 명령 수행 시 반복 횟수를 저장하기 위해 사용하는 레지스터4) EDX : 간접 주소 지정에서 사용되는 레지스터이고 곱셈, 나눗셈 시 보조 연산 레지스터로 사용된다. 포인터 레지스터 : 주소를 가리키는 포인터 용도로 사용되는 레지스터1) ESP(Stack Pointer) : 가장 최근에 ..
[webhacking.kr] Level 51 문제에 들어가니 "Admin Page"라는 화면에 ID와 PW를 입력할 수 있는 Login창이 있었다. 그리고 오른쪽 밑에는 Source라는 링크가 있었다. 아직 많은 공격법을 몰라서 그런지 로그인 창만 보면 sql injection이 떠올랐다. 일단 소스 코드를 보기전에 여러 값을 입력해보았다. 일단 admin라는 아이디에 아무 값이나 넣어서 제출해보았더니 Wrong이라는 message가 나오는 것을 볼 수 있었다. admin'#를 넣고 PW를 빈칸으로 두었더니 'Wrong'라는 message가 나오지 않고 그대로 인것을 볼 수 있었다. 그리고 ' 라던지 여러 값을 넣어보았지만 Wrong이라는 message만 나왔기 때문에 일단 소스 코드를 보고 어떤 식으로..
[webhacking.kr] Level 58 문제에 들어가면 다음과 같은 화면을 볼 수 있다. 오른쪽 클릭시 adobe flash player 설정에 관한 것이 나오기때문에 flash file인 것을 알 수 있었다. flash file을 보면 PW: 옆에 입력을 할 수 있게 되어있었고 아무거나 입력하고 Login을 눌렀을 때 "PW:" 옆에 "Wrong"이라는 message가 출력 되는 것을 볼 수 있었다. 올바른 Password를 입력하면 문제에 통과하게 되어있는 것 같다. 일단 page 코드를 살펴보았다. 별 다른 Hint같은 것은 없었고 flash file의 이름이 나와있었다. hackme.swf 라는 이름을 가진 swf파일이였다.http://webhacking.kr/challenge/web/web..
리버싱 예제 - abex crackme1 Problem abex crackme1.exe을 실행 시 "Make me think your HD is a CD-Rom"이라는 메시지를 볼 수 있다. 이 상태에서 확인을 누르면 "Nah... This is not a CD-ROM Drive!"라는 창이 나타난다. 즉, CD-ROM을 사용중이지 않기 때문에 Error message가 나오는 것이고 이것을 디버깅을 통해 CD-ROM으로 인식하도록 바꾸는 문제이다. Analysis 먼저 프로그램이 어떻게 작성되어 있는지 확인하기 위해 Ollydbg를 통해 프로그램을 실행시켜보았다.Entry point인 0x401000에서 시작을 하고 처음에 바로 MessageBox를 호출한다. 위에서 보았던 "Make me think ..
[2017 SECCON CTF Quals] Write-up & 후기 1. Run Me! Point : 100 pointCategory : Programming Problem :Run me!----- RunMe.pyimport syssys.setrecursionlimit(99999)def f(n): return n if n < 2 else f(n-2) + f(n-1)print "SECCON{" + str(f(11011))[:32] + "}"----- 이 문제는 단순히 프로그래밍을 하는 문제였다. 피보나치 수열(11011)값을 구하기만 하면 되는 문제였다. 코드를 그대로 붙여 실행시켰더니 재귀호출이라 그런지 시간이 엄청 오래걸렸다. 그래서 재귀가 아닌 값을 저장해서 피보나치를 구하는 방법으로 구현했다. Py..
BFS(Breadth-First-Search) Algorithm BFS Algorithm - 그래프나 트리같은 자료구조에서 사용하는 Search 알고리즘- DFS에서는 재귀 호출로 구현하는 경우가 많지만, BFS에서는 보통 queue 자료구조를 사용해 구현한다.- 갈 수 있는 경로를 쭉 따라가는 DFS와 달리, 현재 Vertex에서 갈 수 있는 모든 정점을 방문한 후 방문한 정점을 기준으로 다시 갈 수 있는 모든 정점을 방문하는 식으로 진행된다. BFS Complexity - 인접 리스트를 이용해 그래프를 구현하는 경우와 인접 행렬을 이용해 구현하는 경우에 따라 시간복잡도가 다름 1) 인접 리스트- 한 정점에서 방문할 수 있는 정점을 간선 기준으로 탐색할 수 있기 때문에 O(V+E)의 시간 복잡도를 가진..