일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알고리즘
- dsa
- C언어
- 인공지능
- 파일구조
- 보안
- RVA
- SQL_Injection
- 암호학
- ReflectedXSS
- 공개키
- RSA
- ImageBase
- 디피헬먼
- db
- dvwa
- Database
- 머신러닝
- 코드업
- 기계학습
- 프로그래머스
- StoredXSS
- 웹
- Cross Site Scripting
- XSS
- 심층학습
- injection
- 딥러닝
- SQL
- codeup
- Today
- Total
목록정보보안/워게임 (46)
Ye0ngJae
문제 풀이 더보기 아무런 코드 없이 그냥 대뜸 입력 창만 있다. 개발자 도구를 통해 힌트 같은 것이 있는지 살펴보자. 아니나 다를까 스크립트가 삽입되어 있었다. 해당 코드를 살펴보면, ul 변수에 현재 페이지의 URL을 저장한다. 그리고 바로 아래에서 .kr까지의 문자 길이를 센 값을 저장한다. 그리고 해당 값에 30을 곱한다. 그리고 이렇게 계산된 값과 사용자의 입력 값을 비교하여 만일 서로 같을 경우 ul*(사용자 입력값)을 파라미터로 넘겨준다. 우선 첫 비교문을 만족하기 위하여 개발자 도구의 콘솔을 통하여 ul 값을 바로 계산하여 보자. 540이라고 한다. 따라서 540을 입력칸 안에 넣어주고 check를 눌러준다면, 바로 문제가 해결되는 것을 확인할 수 있다.
문제 풀이 더보기 우선 view-source 버튼을 눌러 페이지의 소스코드를 확인하여 보자. 코드는 크게 base64 인코딩을 하여 쿠키 값에 저장을 하는 부분과 쿠키 값을 base64 디코딩하여 아래 조건문을 통해 비교를 하는 부분으로 나눌 수 있다. 우선 base64 인코딩 부분을 살펴보자면, var_id와 var_pw 값을 20번정도 base64 인코딩 한 후에 특수문자들을 각각 다른 숫자로 치환하는 것을 확인할 수 있다. 이렇게 인코딩과 문자열 치환작업을 거친 var_id와 var_pw 값은 password와 user 쿠키에 저장되게 된다. 다음으로 base64 디코딩 부분을 살펴보자면 아까 문자열을 base64 인코딩 한 코드의 역순으로 다시 디코딩하는 것을 확인할 수 있다. 따라서 위 코드의 ..
문제 풀이 더보기 우선 view-source를 통해 소스코드를 한 번 확인하여 보자. ---------------------
보호되어 있는 글입니다.
보호되어 있는 글입니다.
문제 풀이 더보기 우선 문제를 까줬다. main 함수부터 살펴보면 0xdeadbeef를 인자로 func함수를 호출하는 것을 볼 수 있다. 이제는 func 함수를 까보자. 위 어셈블리와 다른 정보를 섞어서 c언어로 바꾸어 보면 void func(??){ char overflowme[32]; printf("overflow me : "); gets(overflowme); if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah.."); } } 대충 이렇다고 볼 수 있다. 따라서 그냥 위 코드대로 익스 코드를 짜주면 될 것 같다. Flag 값이 정상적으로 확인된다.