분류 전체보기
-
[Webhacking.kr] Challenge 25 풀이Wargame/Webhacking.kr 2019. 5. 12. 01:17
25번 문제로 들어가면 리눅스에서 ls -l 명령어를 사용했을 때의 결과 화면과 비슷한 화면이 나온다. 텍스트창에 hello world 문구가 있고 URL에 file=hello라고 되어있는 것으로 보아, GET 방식으로 hello.txt 파일이 전송되어 해당 파일이 실행된 것으로 추측된다. 즉, GET 방식으로 파일명을 전송하면 해당 파일이 실행된다는 것을 알 수 있다. 그래서 URL에 file=password.php와 file=index.php를 추가하여 실행해보았지만 아무 일도 일어나지 않았다. 오직 hello.txt 파일만 실행이 되었는데, 이때 .txt 확장자는 따로 URL에 표시되지 않는 것으로 보아, 내가 입력한 파일명에 .txt 문자열이 추가된 상태로 서버에 전송되는 것 같다. $file =..
-
[Webhacking.kr] Challenge 24 풀이Wargame/Webhacking.kr 2019. 5. 12. 00:33
24번 문제로 들어가면 내 ip와 user agent 정보가 나오고, Wrong IP라는 문구가 출력된다. 개발자도구를 실행해보면 index.phps에서 소스를 볼 수 있다고 나와있으므로, index.phps로 접속해보자. index.phps의 내용은 아래와 같다. extract: 배열 속의 키값을 변수화시켜주는 함수로, 위 코드에서는 $_SERVER와 $_COOKIE를 일반 변수처럼 사용할 수 있게 해주는 용도로 사용되었다. $_SERVER: 웹서버에 의해 만들어진 headers, paths, script locations와 같은 정보가 포함된 배열이다. $_COOKIE: name, value, expire 등의 쿠키 정보가 포함된 배열이다. $_SERVER[REMOTE_ADDR]: 현재 사이트에 접속..
-
[Webhacking.kr] Challenge 21 풀이Wargame/Webhacking.kr 2019. 5. 11. 00:22
21번 문제는 Blind SQL Injection 문제이다. 일단 아무 숫자나 입력해보면서 규칙을 찾아보자. 1이나 2를 입력했을 때에는 true가 출력되고, 3 이상의 정수를 입력했을 때에는 모두 false가 출력되는 것을 알 수 있다. 또한 숫자를 입력했을 때 URL은 아래와 같이 나타난다. 이 URL을 통해 테이블에는 최소 3개의 column(no, id, pw)이 있다는 것을 알 수 있다. 그 중 no 열은 정수형 데이터라는 것도 알 수 있다. 위 두 정보를 종합해보면, no열은 테이블 내 회원 정보를 구분해주는 열이고, 테이블 내 회원 수는 2명이라는 것을 알 수 있다. 이 정보를 통해 쿼리문도 유추해볼 수 있다. $q = mysql_fetch_array(mysql_query(select no,..
-
[딥러닝 #3] 백터화된 로지스틱 회귀/경사하강법, 인공신경망EVI$ION/DEEP LEARNING 2019. 5. 6. 22:55
[벡터화] 벡터화된 코드를 작성한다는 것은, 내부적인 연산을 병렬적으로 처리한다는 것을 의미한다. 그냥 쉽게 행렬처럼 계산한다고 생각하면 된다. 벡터화된 코드는 짧고 간결하며, 속도가 빠르고, 정규 수학 표현과 비슷하다는 장점이 있다. [학습률] 경사하강법 알고리즘에서 사용되는 초매개변수로, 프로그래머가 머신러닝 알고리즘에서 조정하는 값을 말한다. 즉, w를 얼마나 많이 이동시킬 것인지를 결정하는 것이 학습률이다. 학습률은 모델마다 다르게 설정된다. 예를 들어 기울기가 2.5이고 학습률이 0.01이라면, 경사하강법 알고리즘은 원래 지점에서 0.025(= 2.5*0.01) 떨어진 지점을 다음 지점으로 결정한다. (여기서 기울기(0.5)와 학습률(0.01)을 곱한 결과값을 경사 스탭(0.025)이라 한다.)..
-
[와이어샤크 #3] 와이어샤크 해석기, 각종 설정 및 기능EVI$ION/Wireshark 2019. 5. 6. 12:13
이번 시간에는 와이어샤크의 여러 기능에 대해 배웠다. 실습은 http-disney101.pcapng 파일로 진행했다. [Column에 HTTP 호스트 필드 추가] 와이어샤크에서는 분석 시간 단축을 위해 열의 추가 및 정렬이 중요하게 사용된다. 이 기능은 많은 네트워크 패킷들을 보기 편하게 정렬해준다. HTTP 프로토콜을 사용하는 프레임 15의 패킷 상세 창에서 HTTP의 Host를 선택한 후 우클릭하여 Apply as Column 메뉴를 클릭하면, Host 열이 추가된다. Host 열에는 클라이언트에게 요청을 보낸 모든 호스트, 즉 클라이언트와 통신한 모든 호스트의 정보가 출력된다. [와이어샤크 해석기] 와이어샤크에서는 먼저 수집 엔진을 통해 수집된 패킷이나 Wiretab 라이브러리에 저장된 패킷을 Co..
-
[시스템해킹 #3] 메모리 보호 기법, 쉘코드, 환경변수EVI$ION/SYSTEM HACKING 2019. 5. 6. 03:32
[메모리 보호 기법] ASLR (Address Space Layout Randomization) ASLR은 메모리 상의 공격을 어렵게 하기 위해 스택이나 힙, 라이브러리 등의 주소를 랜덤으로 프로세스 주소 공간에 배치함으로써 실행할 때마다 데이터의 주소가 바뀌게 하는 메모리 보호 기법이다. 주소가 완전히 랜덤으로 바뀌는 것은 아니고, 순서와 패턴은 어느 정도 유지한다. ASLR의 적용 여부는 cat /proc/self/maps 명령을 통해 알 수 있다. /proc는 process의 준말로, 프로세스의 정보들이 저장되는 디렉터리이다. /proc/self는 현재 실행되고 있는 프로세스의 정보가 저장되어 있는 디렉터리이고, /proc/self/maps는 현재 실행되고 있는 프로세스의 주소 맵을 가리킨다. 아래..
-
[시스템해킹 #2] 어셈블리어, 함수 프롤로그/에필로그, gdb, setUIDEVI$ION/SYSTEM HACKING 2019. 5. 5. 21:51
저번 시간에 했던 어셈블리어를 복습 겸 다시 되짚어보았다. [어셈블리어] CALL [접근할 함수 주소] PUSH EIP // 현재 EIP가 가리키는 값을 스택에 저장한 뒤 JMP [접근할 함수 주소] // [접근할 함수 주소]로 점프한다. PUSH [인자] 스택 영역에 4바이트 공간을 할당하고, [인자] 값을 스택에 저장한다. CALL 전에 PUSH가 나오는 경우, PUSH는 인자를 전달하는 역할을 한다. POP [인자] ESP가 가리키는 곳의 값을 [인자]에 저장한 후, ESP가 가리키는 곳이 4바이트 올라간다. RET POP EIP // ESP가 가리키는 값을 EIP에 저장하고 ESP가 4바이트 올라간다. JMP EIP // 방금 저장한 EIP 값으로 점프한다. SUB [인자1], [인자2] 인자1 ..
-
[시스템해킹 #1] 함수의 호출/복귀 원리, 메모리 구조, 스택 프레임, 함수 프롤로그/에필로그, 지역변수/전역변수 할당, 어셈블리어 기EVI$ION/SYSTEM HACKING 2019. 5. 5. 00:48
[함수의 호출/복귀 원리] 아래 코드의 메인 함수 내에서 정의된 함수(get_area)가 호출되면, 컴파일러는 해당 함수(get_area)의 시작점으로 간다는 의미의 기계어를 생성한다. 이 기계어로 인해 프로그램 실행 도중에 함수를 만나면(12번 라인) 프로그램은 함수의 시작점(1번 라인)으로 되돌아가 함수를 수행한다. 함수 수행을 모두 끝마치면 프로그램은 처음 함수가 호출된 곳으로 다시 되돌아가는데, 그 이유는 함수의 리턴값을 변수(area)에 저장해야 하기 때문이다. 그런데 같은 함수를 여러 번 사용하는 경우, 함수가 호출된 위치를 미리 기록해두지 않으면 함수 수행이 끝난 뒤 그 다음 코드로 되돌아갈 수 없기 때문에 프로그램이 무한 루프에 갇힐 위험이 있다. 그래서 프로그램은 함수가 호출되기 직전, ..