일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dvwa
- SQL_Injection
- codeup
- 인공지능
- 심층학습
- SQL
- RSA
- 머신러닝
- 웹
- 코드업
- 암호학
- 공개키
- dsa
- StoredXSS
- 딥러닝
- ImageBase
- C언어
- db
- 디피헬먼
- 파일구조
- 기계학습
- Cross Site Scripting
- 프로그래머스
- ReflectedXSS
- 보안
- Database
- injection
- 알고리즘
- RVA
- XSS
- Today
- Total
목록정보보안 (66)
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를 통해 소스코드를 한 번 확인하여 보자. ---------------------
PLT(Procedure Linkage Table) & GOT(Global Offset Table) C언어 프로그램은 컴파일을 진행할 때 링크라는 과정을 거친다. 목적 파일들끼리의 링킹이면 코드만 넣어주면 된다. 하지만 라이브러리를 링킹 할 때에는 이렇게 할 수 없다. 따라서 정적 링킹(Static Link)과 동적 링킹(Dynamic Link)이 있다. 동적 링킹은 프로그램에서 사용하는 모든 라이브러리 모듈들을 프로그램을 컴파일할 때 복사하지 않고 해당 모듈의 주소 값을 가지고 있다가 프로그램이 실행되어서 실행 파일과 라이브러리가 메모리에 로드될 때 해당 주소 값을 이용하여 특정 함수를 불러오는 방식이다. 이러한 방식으로 컴파일을 하면 라이브러리가 프로그램 외부에 있기 때문에, 함수의 주소 값을 알아내..
보호되어 있는 글입니다.
PLT와 GOT를 모른다면 아래 게시물을 한 번 보고 오자 2022.10.20 - [정보보안/포너블] - [Pwnable] PLT & GOT Libc leak Libc란? printf, scanf 등을 비롯한 C언어의 여러 함수들이 들어있는 라이브러리이다. Libc는 C언어의 표준 라이브러리인데 이 Libc 라이브러리는 로딩될 때 항상 일정한 규칙을 가진다. 바로 하위 1.5바이트가 0이라는 것이다. 이것은 Libc base라고 부른다. 즉, Libc base는 메모리에 매핑되어 있는 Libc의 시작 주소이다. Libc의 각 함수들에게는 오프셋이라는 것이 있는데 이 offset은 Libc base에 더해져서 실제 함수의 주소가 된다. ASLR 보호 기법에 의하여 여러 주소들이 랜덤화 되는데 Libc ba..