![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkl6Im%2Fbtrgk8IPJWh%2FtBKCbQDaLot6JSDqaHOLzK%2Fimg.png)
[Webhacking.kr] old-11
2021. 9. 29. 16:42
Study/Web Hacking
old-11 문제화면이다. view-source 링크를 눌러 소스코드를 확인해봤다. view-source 소스코드에서 눈에 띄는 것은 $pat 변수였다. $pat 변수와 val파라미터가 같으면 문제를 해결할 수 있다. $pat에는 정규표현식이 들어가 있다. "/[1-3][a-f]{5}_.*$_SERVER[REMOTE_ADDR].*\tp\ta\ts\ts/" 위 정규표현식을 해석해보자. [1-3] : 1~3 중 한 문자 [a-f] : a~f 중 한 문자 {5} : 앞 문자를 5번 반복 (위 소스 코드 경우 a~f 중 한 문자를 5번 반복) _ : 그냥 문자 . : 줄바꿈 문자를 제외한 임의의 문자 * : 앞 문자 0번 이상 반복 \t : 탭 → 1aaaaa_127.0.0.1(tab)p(tab)a(tab)s(..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFrgHf%2FbtrgkUDZGpn%2FJOWKJFTnwDr9bDyBGkwLn1%2Fimg.png)
[HackerRank] A Very Big Sum
2021. 9. 29. 16:11
알고리즘
# A Very Big Sum (Warmup) [문제] [코드] long aVeryBigSum(vector ar) { long sum = 0; for(int i = 0; i < ar.size(); i++) sum+=ar[i]; return sum; } [코드설명] 배열의 각 요소를 더하는 문제다. 단, 각 요소의 크기가 이전보다 훨씬 커졌다. 이번 문제는 자료형에 주의해야 한다. 지난 문제처럼 int형을 사용할 경우 sum이 int의 범위를 넘어서므로 error가 발생한다. 따라서 int 대신 long int형을 사용해줬다. [채점 결과]
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0KAsv%2FbtrgiaA1t3E%2Fo6jGJrDV1EGCRfGFU8iQD1%2Fimg.png)
[HackerRank] Counting Sort 2
2021. 9. 29. 15:40
알고리즘
# Counting Sort 2 (Sorting) [문제] [코드] vector countingSort(vector arr) { vector counting(100); vector result; for(int i = 0; i < arr.size(); i++) counting[arr[i]]+=1; for(int i = 0; i < 100; i++) { for(int j = 0; j < counting[i]; j++) result.push_back(i); } return result; } [코드설명] Counting sort를 사용하는 문제다. arr배열에 있는 정수 i를 카운팅하여 새로운 배열 counting을 만들었다. 이때 같은 정수를 갖는 인덱스에 1을 더하는 방식으로 생성한다. counting배열 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkwDHE%2FbtrfUQWCkeO%2F5CIPn7hIiCztyr6JaOw7CK%2Fimg.png)
[HackerRank] Compare the Triplets
2021. 9. 25. 02:06
알고리즘
# Compare the Triplets (Warmup) [문제] [코드] vector compareTriplets(vector a, vector b) { vector result(2, 0); for(int i = 0; i b[i]) result[0]+=1; else if(a[i] < b[i]) result[1]+=1; } return result; } [코드설명] Alice와 Bob의 point를 비교해서 score를 매기는 문제다. 비교해야 할 point는 총 3개이므로 for문으로 i를 0부터 2까지 증가시켜 3번 반복했다. 이때 i를 a 벡터와 b 벡터의 index로 활용했다. a[i]와 b[i]를 비교해서 a가 더 클 경우 result[0], b가 더 클 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFfQ6u%2FbtrfUOYUsUK%2F0mYDzCKl6zjcgk6m6X1090%2Fimg.png)
[HackerRank] Cycle Detection
2021. 9. 25. 01:49
알고리즘
# Cycle Detection (Linked Lists) [문제] [코드] bool has_cycle(SinglyLinkedListNode* head) { if(head == NULL) return 0; SinglyLinkedListNode* fast = head; SinglyLinkedListNode* slow = head; while(fast != NULL && fast->next != NULL) { slow = slow->next; fast = fast->next->next; if(fast == slow) return 1; } return 0; } [코드설명] Linked List에서 cycle의 유무를 확인하는 문제다. 두 개의 포인터를 만들고, 하나는 +1만큼 다른 하나는 +2만큼 링크를 따라..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccUfTz%2FbtrfTGtbc1D%2FSA4wn2uQLkUkPpiBiXHyt1%2Fimg.png)
[Webhacking.kr] old-46
2021. 9. 25. 01:02
Study/Web Hacking
old-46은 SQL Injection문제다. level을 입력하는 form이 존재한다. 해당 문제에 존재하는 필터링과 query의 구조를 확인해보자. SQL INJECTION level : view-source 일단 lv파라미터의 값이 존재해야 한다. 그 아래 lv파라미터에 addslashes함수가 사용됐다. 그리고 공백, /, *, %가 empty string으로 대체된다. 다음으로 select, 0x, limit, cash가 preg_match로 필터링된다. 마지막으로 query는 다음과 같다. select id,cash from chall46 where lv=$_GET[lv] 이번 문제에서는 새로운 쿼리를 lv파라미터 위치에 Injection하면 될 것 같다. admin id를 불러오기 위해서는 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgGQJF%2FbtrfQEo9hZq%2F1NTMqcYwxSvDLaiquAZyhK%2Fimg.png)
[Webhacking.kr] old-45
2021. 9. 25. 00:14
Study/Web Hacking
old-45는 SQL Injection문제다. id와 pw를 입력하는 폼이 존재한다. 먼저 필터링과 query를 어떻게 구성했는지 확인해보자. SQL INJECTION id : pw : view-source
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpWGbF%2FbtrfpPwLwUx%2FNWrUgEQq2ccQAdUTsHNkE0%2Fimg.png)
[Webhacking.kr] old-08
2021. 9. 18. 20:35
Study/Web Hacking
아래는 old-08의 시작화면이다. hi guest 문구와 view-source 링크밖에 없다. 링크를 클릭하면 아래와 같은 소스코드가 나온다.
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrQzqD%2FbtrfoTfyvbR%2F1weEGVknnvPoyxhHcKojck%2Fimg.png)
[Webhacking.kr] old-03
2021. 9. 18. 18:54
Study/Web Hacking
아래는 old-03의 시작 화면이다. 스도쿠 문제가 있다. 아래와 같이 스도쿠 문제를 풀고 solve를 누르면 Clear!라는 문자열이 출력되고, 그 아래 form이 하나 존재하는 것을 볼 수 있다. form에 admin이라고 입력하고 submit해봤다. 아래와 같은 화면으로 이동하게 되는데, 아까 입력한 admin이 기록됐다. 이번엔 다른 문자열로 시도해봤다. name에 input이 기록되는 걸 확인할 수 있었고, answer의 값에는 변화가 없었다. form의 name부분을 통해 DB에 접근할 수 있는 것 같았다. 이번엔 ' or 1=1#을 입력해봤다. 확인 결과 input이 필터링되어 문자 그대로 입력됐다. 좀 더 힌트를 얻기 위해 개발자도구를 확인해봤다. 확인해보니 answer가 hidden으로 ..