본문 바로가기

실습 1주차 [1] Bubble Sort 문제Bubble sort를 이용해서 주어진 정수들을 오름차순으로 정렬해서 출력한다. 단, 숫자의 개수가 10,000개를 넘지 않는다. 입력 형식(숫자 개수)숫자1 숫자2 ... 숫자N 출력 형식 : 주어진 N개의 숫자를 공백으로 구분하여 오름차순으로 출력 한다. Ex)입력54 7 3 10 1 출력1 3 4 7 10 답안 #include using namespace std; #define MAX_LEN 10000 void bubble_sort(int arr[], int size); int main(){ int N; cin >> N; int arr[MAX_LEN]; for (int i = 0; i > arr[i]; bubble_sort(arr, N); for (int i = 0; ..
[Webhacking.kr] Problem 02-2 앞의 내용에 이어서 계속 하도록 하겠다. 공격할 부분을 발견했으니 이 부분을 이용해서 Blind SQL Injection으로 비밀번호 정보를 가져오면 된다. 원래는 한 글자를 추출하는데 최적화된 방법으로 하더라도 7번의 비교를 해야지만 알아낼 수 있는데, 이 경우에는 약간 편법을 사용하면 1번의 시도로 1글자를 가져오는 것이 가능하다. 앞의 내용을 살펴 보면 공격할 부분이 from_unixtime이라는 함수를 사용하기 때문에 특정한 숫자에 문자의 ascii code를 추가적으로 더해준 값을 넣어주면, 이것을 다시 timestamp값으로 변경하고 특정한 숫자를 빼주게 되면 바로 그 문자의 ascii code를 얻을 수 있으므로, 1번의 시도로 1글자를 가져오는 것이 가능하다. Blind SQL Inject..
[Webhacking.kr] Problem 02-1 2번 문제는 500점에 해당하는 문제로 "홍길동 문제"라고 불리는 악명 높은 문제이다. 문제 링크 이 문제의 경우 소스코드의 취약점을 찾고 그것을 통해서 데이터를 빼내는 방법을 알아내어야 한다. 문제 이름이 "홍길동 문제"인 이유는 아래와 같이 문제 사이트에 들어가면 홍길동이 명상을 하고 있는 모습을 볼 수 있기 때문이다. 먼저 메인 페이지의 소스코드를 열고 내용을 뒤지다보면 admin/이라는 수상한 링크를 볼 수 있다. 그래서 이 링크가 관리자 페이지로 갈 수 있는 링크라고 생각을 하여 직접 링크에 접속을 하였더니 admin 페이지라고 하면서 password를 입력해야만 접근이 가능하도록 되어 있었다. 물론 이것을 BruteForce로 일일히 대입을 해서 공격을 할 수는 없기 때문에 패스워드에 대한 정..
흠.. Webhacking.kr 2번 문제의 해답을 열심히 작성하고 저장버튼을 눌렀는데 저장에서 글쓰기가 작동하지 않는다. ㅂㄷㅂㄷ.... 신기한게, 미리보기 기능과 임시저장 기능은 매우 잘 작동을 하는데, 글쓰기 부분이 아예 작동을 하지 않았다. 일단 고객센터에 문의를 해보았지만 아직까지 뚜렷한 답이 없다... 아무래도 글이 너무 길어져서 그런 것 같다. 왜냐하면 이렇게 짧게 쓴 글이 올라간 것을 보면... 그리고 실패 로그들을 이미 가지고 있을 건데, 아직까지 답변이 없는 것을 보면 다음 카카오가 티스토리 사업에 대해서 점점 관심을 가지지 않는 것으로 보인다. 매우 복사 붙여넣기 한 느낌이 심한 답변을 할거면 차라리 나중에 완전히 알아보고 난 후에 답변을 해주는 편이 더 나았을텐데 말이다.
[Webhacking.kr] Problem 01 200점에 해당하는 문제이다. PHP코드를 분석할 수 있는지 여부를 묻는 문제라고도 볼 수 있다. 문제 링크 1번 문제를 보면 아래와 같은 검정 화면을 볼 수 있다. 'index.phps'라는 문구가 쓰여 있기 때문에 거기에 힌트가 있을 것이라고 생각하고 index.phps로 들어갔다. 들어가는 방법은 페이지에 있는 "index.phps"를 누르거나 혹은 주소창에 직접 치고 들어가는 방법이 있다.[사진 1] index.phps 페이지를 보면 아래 사진처럼 php로 쓰여진 소스코드를 확인할 수 있다. 간단하게 소스코드에 대해서 설명하면, 먼저 user_lv라는 쿠키가 있는지 확인하고, 쿠키 정보가 없으면 user_lv에 1값을 넣고 새로고침을 하는 부분이 첫 번째 부분이다.두 번째 부분인 if(eregi(..
다른 앱 데이터 파일 복사하기 보통 안드로이드의 앱의 데이터가 저장되는 장소는 /data/data/{app package name}/에 저장이 된다. 여기서 말하는 앱의 데이터는 SQLite로 쓰여진 Database나 SharedPreference로 쓰여진 shared_pref 파일, cache 파일들을 포함하고 있다. 이러한 데이터들에 쉽게 접근을 할 수 있다면 계정 정보의 탈취가 발생할 수 있으므로 일반적인 권한으로는 파일에 직접 접근을 할 수가 없으며, 다른 앱에서의 접근 또한 막아놓는 것이 정상적이다. 여기에서 등장하는 것이 바로 Rooting이다. Rooting은 관리자 권한을 획득하는 행위로, 일반적으로는 Android에서는 Root 권한을 제공하지 않는다. Rooting을 하려고 하는 이유는 안드로이드의 시스템 파일 등에..
[Webhacking.kr] 0. webhacking.kr 소개 Webhacking.kr은 Oldzombie님이 직접 운영하는 웹해킹 사이트로 상당히 많은 웹해킹 문제를 가지고 있는 사이트이다. 그리고 도메인 이름이 'Webhacking'인 만큼 문제도 오직 웹해킹에 대한 문제만 올라와 있다. 일단 홈페이지를 접속해보면 아래와 같은 단순한 UI를 가진 화면을 볼 수 있다.접속하기 일단 아래에 글자의 인코딩이 깨지는 것은 신경쓰지 말자.... 아무래도 사이트가 만들어진지 오래되었기 때문에, 인코딩이 utf-8로 설정되어 있지 않아서 깨지는 것이고, 딱히 이것은 깨져도 별 상관이 없기 때문에 그냥 무시하도록 하자. 그런데 이 사이트를 보면 'Login'버튼만 있고, 'Join'버튼은 존재하지 않는다. 즉, 어디엔가에 회원가입을 할 수 있는 버튼이나 링크가 숨겨져 있다는 ..
직접 온라인 저지를 운영해보자. 인터넷에서 검색을 하다보면 많은 온라인 저지를 볼 수 있다. 대표적으로 백준 온라인 저지(링크), 알고스팟(링크), 코딩도장(링크)와 같은 한글로 된 사이트도 있고, Project Euler(링크)와 같은 영어로 된 사이트도 존재한다.이런 온라인 저지들은 가장 많이 쓰이는 언어인 C, C++, Java등을 기본적으로 제공하며 소스코드를 업로드하면, 서버가 그 파일을 컴파일해서 서버에 저장된 무수히 많은 테스트 케이스를 실험해서 값이 일치하는지를 확인하는 방법이다. 이런 방식을 이용하면 일단 서버는 소스코드가 업로드 되었을 때 보안상의 문제가 되는 함수들은 미리 차단을 해놓아야 한다. 그렇지 않으면 관리자 권한을 탈취당할 수 있기 때문이다. 이 테스트 케이스를 이용하는 방법은 생각보다 효율적인데, 이런 방..