일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- recursion
- data_structure
- 수 정렬하기
- C++
- 파이썬머신러닝완벽가이드
- Numpy
- Counting cells in a blob
- 2750
- baekjun
- centuryFromYear
- markdown
- 백준
- 2015 봄학기 알고리즘
- cpp
- 파이썬 포렌식
- Python
- adjacentElementsProduct
- Sequential Search
- shapeArea
- All Longest Strings
- til
- 피보나치 수
- 10953
- Daily Commit
- matrixElementsSum
- codesingal
- codesignal
- collections.deque
- flask
- almostIncreasingSequence
- Today
- Total
목록Hobby 32
Introfor
6번 문제이다. 힌트로 base64 있는 것을 보니 base64인코딩/디코딩을 활용하는 문제인 듯하다. password와 user 쿠키가 있는 것을 확인했다. user 쿠키 값이 없으면 val_id에 guest값을 넣고, val_pw에 123qwe값을 넣는다. val_id와 val_pw를 각각 base64인코딩을 한 후 숫자를 특수문자로 바꾸고 쿠키값으로 저장을 한다.user와 password 쿠키값을 받아서 특수문자를 숫자로 바꾸는 동작을 수행하고, base64 디코딩을 합니다. 마지막 if문장을 보면 base64로 디코딩을 했을 때 id와 password 값이 admin이면 문제 풀리는 것을 알 수 있다.그러므로 admin을 base64로 인코딩한 값을 id, password 쿠키값으로 넣으면 문제가..
39번 문제이다. 소스코드를 보자. "index.phps"가 주석으로 되어있고, post 방식으로 index.php로 입력값을 전송하는 것을 알 수 있다. index.phps로 접속해본다.$_POST는 클라이언트로 부터 폼 데이터를 갖고와서 PHP스크립트 내의 변수에 값을 넣을 때 사용str_replace로 필터링을 하며, substr로 입력값 길이 제한을 두었다. (0~15에 해당되는 문자열 반환)자세히 보면 id='$_POST[id]"로 싱글쿼터(')가 없는 것을 확인할 수 있다. 그럼 싱글쿼터 값을 넣어서 쿼리 전송을 하면 되지만 ''으로 변환되는 것을 알 수 있다.문제를 풀어보면 15번째 자리에 싱글쿼터를 사용해서 ''로 바뀌더라도 15번째까지만 반환하기 때문에 문제가 없다. good ' 문제가 ..
38번 문제이다. Log injection에 대한 문제인 것 같다. 소스코드를 보면 "admin.php"가 주석 처리 되어있다. "admin.php"로 들어가게 되면 로그들이 나온다. "admin.php"에서 소스코드를 보면 힌트가 admin인 것을 알 수 있다."admin" 입력했더니 위와 같이 "you are not admin"이 index.php에서 나왔다. ("admin"값을 넣을 시 index.php로 가는 것을 주소창에서 알 수 있음)임의의 값 "aaaaa"를 입력해본다. admin.php에 자신의 아이피와 입력값이 출력되는 것을 확인할 수 있다. 다른 로그 값과 비교해보면 로깅 형식은 'IP:입력값'인 것 같다. 자신의 IP:admin이렇게 값을 입력했더니 문제가 풀렸다.
25번 문제 화면입니다. url을 보면 "?file=hello"입니다. 이 부분에 "hello" 대신 "password.php"로 해주면 문제가 풀릴 것 같다. "password.php"를 입력했지만 값의 변화가 없다. 파일명을 보면 "hello.txt"에서 .txt가 생략 되었다는 것을 보면 "password.php.txt"로 변환되는 것을 짐작할 수 있다.메모리에 text가 저장이 될 때 저장되는 값은 test\0 \0은 NULL값을 의미한다.그러므로 password.php에 NULL값을 주면 되므로 URL 인코딩에서 %00을 사용하면 문제는 풀린다.
27번 문제 화면이다. 이 문제는 SQL INJECTION을 사용하는 문제인 듯하다.우선 소스 코드를 본다. index.phps로 들어가본다. no 값에 따라 guest가 되거나, admin인 되는 것 같다. id는 guest로 정해져 있지만 no의 값을 admin의 no로 바꿔보자.1과 2를 입력 했을 때 no=1 일 때 guest라는 것을 알 수 있다. 그럼 no=2일 때 admin이 될거라고 가정해서 문제를 풀어보자.쿼리문을 사용하여 no가 2일 때를 만들면 2 or no like 2 위 처럼 실행을 하면 query error가 뜨는 것을 알 수 있다.2) or no like 2 -- select id from challenge27_table where id=’guest’ and no=(2) or ..
14번 문제를 들어가면 위와 같은 화면이 나온다.어떤 값을 넣어도 Wrong의 값이 나온다.소스코드 창에 들어가본다. ck() 함수를 풀면 문제가 풀릴 것 같다. var ul=document.URL; // 현재 URL 정보를 ul에 넣음 (document.URL-현재 HTML문서에 URL 정보를 가져옴)ul=ul.indexOf(" .kr"); // ul의 값에 있는 문자열에서 .kr의 위치 값을 ul에 넣음 (indexOf("검사할 문자", 시작순서) 0부터 순서를 정함)ul=ul*30; // ul에 있는 값을 30과 곱하고, 결과값을 ul에 넣음if(ul==pw.input_pwd.value) { alert("Password is "+ul*pw.input_pwd.value); } else { alert(..