티스토리

혁준
검색하기

블로그 홈

혁준

jhyuxxk.tistory.com/m

jhyuxxk 님의 블로그입니다.

구독자
2
방명록 방문하기

주요 글 목록

  • DreamHack 2단계 php-1 DreamHack 2단계 php-1 문제를 풀어보겠다. 플래그가 /var/www/uploads/flag.php 에 있다는 것을 알 수 있다. index.php 에서 main.php 를 include 함수를 통해 GET 방식으로 불러온다는 것을 볼 수 있다. view.php 에서 flag 문자열을 필터링하여 접속할 수 없게 해놓은 것을 볼 수 있다. flag.php 파일은 Permission denied 되어있는 것을 볼 수 있다. flag 필터링을 우회하는 기법중 php wrapper 가 있다.. 여기서 파일에 대한 filter 를 사용하여 flag.php 파일을 출력할 것이다. http://host1.dreamhack.games:9636/?page=php://filter/convert.base64-en.. 공감수 0 댓글수 0 2021. 8. 7.
  • DreamHack 2단계 image-storage DreamHack 2단계 image-storage 문제를 풀어보겠다. 파일 upload 는 upload.php 에서 동작하는데, 필터링에 대한 부분이 없다는 것을 볼 수 있다. 업로드를 하면, list 에서 업로드 한 파일을 볼 수 있는데, 이는 list.php 를 보면, 값을 출력해준다는 것을 볼 수 있다. 위 그림과 같이 flag.txt 를 출력하기 위해서 system 함수를 활용한다. 파일을 저장하고 업로드를 한다. list.php 로 이동하면, 업로드 한 파일들이 나오는데, upload.php 를 보면, 이렇게 FLAG 가 출력된다. 공감수 0 댓글수 0 2021. 8. 6.
  • DreamHack 2단계 csrf-1 DreamHack 2단계 csrf-1 문제를 풀어보겠다. 접속을 하면 네 페이지가 나오는데, vuln 함수에서 script 문이 * 로 필터링 된다는 것을 볼 수 있다. memo 함수는 flag 에 입력한 값이 성공시 출력되는 페이지이다. 왜냐하면, memo 함수에서 이미 hello 라는 문자열이 있기 때문에 쿠기 값이 존재한다고 생각할 수 있다. notice flag 함수는 admin 계정 권한에 속한다는 것을 알 수 있다. flag 함수는 스크리브 언어를 기입하여, 공격하는 페이지이다. 이렇게, 각각의 페이지를 확인할 수 있다. read_url 함수를 보면 이 함수에서 쿠키가 생성되고, domain 이 127.0.0.1:8000 이다. 우리가 제공받은 주소와 포트도 다르기 때문에 쿠키 값에는 저장되어.. 공감수 1 댓글수 0 2021. 8. 3.
  • DreamHack 1단계 basic_exploitation_003 DreamHack 1단계 basic_exploitation_003 문제를 풀어보겠다. 위 그림에서 NX 보호 기법이 활성화 되어있음에 따라 쉘 코드가 실행되지 않다는 것을 알 수 있다. 또한, RELRO 가 Partial 로 되어있는 것으로 보아 GOT Overwrite 가 가능하다는 것을 알 수 있다. 특징으로 함수 호출 시, 해당 함수의 주소를 알아와서 쓰기가 가능하다는 것이다. - PLT 는 코드, GOT 는 주소 값이 저장된 공간 main 함수 : heap_buf 에 0x80만큼 사이즈가 동적 할당되는데, 128 바이트가 동적 할당되고, stack_buf 에 0x90만큼 할당되는데, 144 바이트가 할당된다. 그리고 initialize 함수가 실행되고, gets 로 buf 를 입력을 받는다. in.. 공감수 0 댓글수 0 2021. 7. 30.
  • DreamHack 1단계 basic_exploitation_002 DreamHack 1단계 basic_exploitation_002 문제를 풀어보겠다. 위 그림에서 NX 보호 기법이 활성화 되어있음에 따라 쉘 코드가 실행되지 않다는 것을 알 수 있다. 또한, RELRO 가 Partial 로 되어있는 것으로 보아 GOT Overwrite 가 가능하다는 것을 알 수 있다. 특징으로 함수 호출 시, 해당 함수의 주소를 알아와서 쓰기가 가능하다는 것이다. - PLT 는 코드, GOT 는 주소 값이 저장된 공간 main 함수 : buf 에 0x80만큼 사이즈가 할당되는데, 128 바이트가 할당된다. 그리고 initialize 함수가 실행되고, gets 로 buf 를 입력을 받는다. initialize 함수를 보면, 실행되고 30초가 지나면 Time Out 메시지를 출력하고 프로.. 공감수 0 댓글수 0 2021. 7. 15.
  • DreamHack 1단계 basic_exploitation_001 DreamHack 1단계 basic_exploitation_001 문제를 풀어보겠다. 위 그림에서 NX 보호 기법이 활성화 되어있음에 따라 쉘 코드가 실행되지 않다는 것을 알 수 있다. main 함수 : buf 에 0x80만큼 사이즈가 할당되는데, 128 바이트가 할당된다. 그리고 initialize 함수가 실행되고, gets 로 buf 를 입력을 받는다. initialize 함수를 보면, 실행되고 30초가 지나면 Time Out 메시지를 출력하고 프로그램을 종료한다. read_flag 함수 : system 명령어로 flag 값을 보여준다는 것을 알 수 있다. 즉, 호출하는 부분이 없으므로, 강제로 호출해야 한다. 스택의 기본 구조는 Buffer + SFP (4Byte) + RET (4Byte) 이다. .. 공감수 1 댓글수 0 2021. 7. 14.
  • DreamHack 1단계 basic_exploitation_000 DreamHack 1단계 basic_exploitation_000 문제를 풀어보겠다. main 함수 : buf 에 0x80만큼 사이즈가 할당되는데, 128 바이트가 할당된다. 그리고 initialize 함수가 실행되고, printf 로 buf 의 주소를 출력해주고, scanf 를 통해서 입력을 받는다. initialize 함수를 보면, 실행되고 30초가 지나면 Time Out 메시지를 출력하고 프로그램을 종료한다. buf 의 크기는 128 바이트가 할당되는데 scanf 로 입력받는 바이트는 141 바이트이므로, 버퍼 오버플로우(BOF) 가 발생할 수 있다. 스택의 기본 구조는 Buffer + SFP (4Byte) + RET (4Byte) 이다. buf 의 크기는 128 Byte 이고 SFP 의 크기는 4.. 공감수 1 댓글수 0 2021. 7. 14.
  • DreamHack 1단계 path traversal DreamHack 1단계 path traversal 문제를 풀어보겠다. Path traversal 취약점은 디렉터리 인덱싱과 비슷한 문제이다. 입력된 userid 값은 위 그림에서 볼 수 있듯이, /api/user/{userid} 에 저장된다. FLAG 는 /api/flag 에 저장이 된다. 저장된 값은 /api/user/{userid} 에 FLAG 값은 /api/flag 에 저장이 되기 때문에, ../flag 를 입력해보겠다. ../flag 을 입력하고 보면, 실패한 것을 알 수 있다. 실패한 이유를 보기 위해, Burp Suite 를 실행시키고 Intercept ON 으로 한다. View 를 클릭하면, userid = undefined 로 되어있는 것을 알 수 있다. undefined 를 ../fla.. 공감수 0 댓글수 0 2021. 7. 11.
  • DreamHack 1단계 xss-1 DreamHack 1단계 xss-1 문제를 풀어보겠다. 접속을 하면 세 페이지가 나오는데, vuln 함수는 필터링이 없어서 xss 가 가능하다. memo 함수는 flag 에 입력한 값이 성공시 출력되는 페이지이다. 왜냐하면, memo 함수에서 이미 hello 라는 문자열이 있기 때문에 쿠키 값이 존재한다고 생각할 수 있다. flag 함수는 스크립트 언어를 기입하여, 공격하는 페이지이다. 이렇게, 각각의 페이지를 확인할 수 있다. read_url 함수를 보면 이 함수에서 쿠키가 생성이 되고, domain 이 127.0.0.1:8000 이다. 우리가 제공받은 주소와 포트도 다르기 때문에 쿠키 값에는 저장되어 있지 않다. 따라서 127.0.0.1:8000 에서 확인을 해야한다. check_xss 함수를 보면 .. 공감수 4 댓글수 0 2021. 7. 11.
  • DreamHack 1단계 file-download-1 DreamHack 1단계 file-download-1 문제를 풀어보겠다. flag.py 를 다운받는 문제인데, 우선 file 이 어떻게 Upload 되는지 확인하기 위해 임의로 Upload 를 수행해보겠다. 임의로 만든 flag.py 를 다운받은 URL 을보면, read 함수에서 name 파라미터에 Filename = flag.py 인 Memo 를 다운한 것을 볼 수 있다. 또한, read 함수에서 try 문에서 open 메소드 안에 " UPLOAD_DIR / filename " 을 확인할 수 있듯이, 업로드 된 파일들의 디렉터리가 filename 바로 위 디렉터리인 것을 알 수 있다. 그러므로 URL 에서 name=../flag.py 로 수정하겠다. FLAG 값이 출력되는 것을 볼 수 있다. 공감수 0 댓글수 0 2021. 7. 11.
  • DreamHack 1단계 simple_sqli DreamHack 1단계 simple_sqli 문제를 풀어보겠다. 문제 파일을 보면, guest, admin 계정이 있다는 것을 알 수 있고, login 함수에서 "을 기준으로 문자열을 구별한다는 것을 알 수 있다. userid = admin 으로 로그인 시, FLAG 가 출력된다. 따라서, userpassword 는 모르는 상태이고, userid = admin 으로 SQL Injection 을 통해 FLAG 를 얻어야 한다. SQL Injection 방법은 여러가지가 있는데, 그 중에서 --를 통해 뒤쪽 쿼리문을 주석처리하는 방법과 or "1" = "1" 을 통해 항상 참이 되게 하는 방법 또는 UNION 을 쓰는 방법 등등 여러가지 방법이 있다. 그 중에서 주석처리 방법을 사용하겠다. Burp Sui.. 공감수 0 댓글수 0 2021. 7. 11.
  • DreamHack 1단계 cookie DreamHack 1단계 cookie 문제를 풀어보겠다. 문제 파일에서 users 는 guest, admin 두 개로 있다는 것을 알 수 있다. 접속하고 guest로 로그인이 가능한지 확인을 해본다. 페이지 소스 보기를 통해 guest / guest 로 로그인이 가능하다는 것을 볼 수 있다. guest / guest 로 로그인을 수행해보겠다. guest 로그인을 통해 쿠키 값이 생긴 것을 볼 수 있다. 쿠키 값을 얻었으니 value를 admin 으로 수정을 해보겠다. 그 후, 새로 고침을 하면 FLAG 값이 나오는 것을 볼 수 있다. 공감수 1 댓글수 0 2021. 7. 11.
  • 모의해킹의 열두 번째 자바 역직렬화 취약점 공격 자바 역직렬화 취약점은 발견되면 공격자가 원격에서 코드를 실행할 수 있는 RCE(Remote Code Execution) 공격으로 이어지기 때문에 매우 심각한 영향을 줄 수 있는 취약점이다. 자바 프로그램상에서 어떤 객체가 생성되면 그 객체는 메모리에 상주하게 되고, 프로그램이 실행되는 동안 필요에 따라 사용된다. 그런데 프로그램이 종료되면 메모리에 있던 객체는 사라지게 된다. 객체에는 저장한 데이터가 있는데, 그 데이터를 다음 번에 계속 사용해야 한다면, 메모리에 상주하던 객체와 그 데이터를 파일이나 데이터베이스 등에 저장해 두어야 할 것이다. 이때 저장을 하기 위해 객체르르 바이트 스트림이라는 순차적인 데이터로 변환하는 과정을 거치는데, 이것을 직렬화라고 한다. 역직렬화는 반대로 저장되어 있는 바이트.. 공감수 1 댓글수 0 2021. 3. 25.
  • 모의해킹의 열한 번째 알려진 취약점을 이용한 공격 최근 개발 환경 추세에서는 오픈소스 라이브러리를 사용하는데, 오픈소스에서 발생하는 대부분의 취약점은 CVE 데이터베이스를 통해 공개된다. 공격자는 CVE 데이터베이스를 통해 알려진 취약점에 대한 정보를 쉽게 찾고 공격에 사용한다. 원래 취약점이 공개되면 CVE-[발견연도]-[일련번호]와 같은 CVE ID가 지정되어 관리된다. 하트블리드 취약점 공격 실습 하트블리드 취약점을 이용하면 공격자가 웹 서버 호스트의 메모리를 읽을 수 있게되어 사용자의 로그인 정보 및 그 밖에 노출되면 안되는 민감한 정보들을 탈취할 수 있다. 위 그림의 8443포트는 HTTPS 프로토콜로 접속해야 하는 포트이다. 위 그림에서 Confirm Security Exception 버튼을 눌러 예외처리를 한다. 그리고 다시 bWAPP에 접.. 공감수 0 댓글수 0 2021. 3. 23.
  • 모의해킹의 열 번째 XXE 공격 XXE (XML eXternal Entity, XML 외부 엔티티) 취약점은 XML 타입의 데이터가 웹 요청을 통해 전송되고, 서버에서 XML 외부 엔티티를 처리할 수 있도록 설정된 경우 나타날 수 있다. 사용자가 웹 애플리케이션으로 전달되는 XML 데이터를 직접 업로드하거나 수정할 수 있는 경우, 공격자는 외부 엔티티를 참조하는 XML 데이터를 전송하여 파일과 같은 서버 내부의 정보를 탈취하거나 서비스 거부 공격, SSRF 등의 공격을 수행할 수 있다. XXE 공격 실습 위 버튼을 누르면 사용자의 시크릿이 버튼에 표시된 문자열로 초기화되는 기능이 구현되어 있다. 위 그림과 같이 Content-Type 헤더가 text/xml 타입으로 설정되어 있고, XML 데이터가 전송되고 있다. 앞에 bee는 로그인 .. 공감수 0 댓글수 0 2021. 3. 22.
  • 모의해킹의 아홉 번째 접근 통제 취약점 공격 우선 취약한 통제 리스크의 사례를 알아보겠다. - URL이나 파라미터를 조작하여 다른 사용자의 리소스에 접근하거나 허용되지 않은 기능을 실행할 수 있는 경우 - 적절한 인증 및 인가 과정을 거치지 않고 관리자 페이지 접근할 수 있는 경우 - 디렉토리 트래버셜 취약점과 같이 웹 디렉토리 경로를 벗어난 호스트 내부 경로의 리소스에 접근할 수 있는 경우 안전하지 않은 직접 객체 참조(IDOR 공격) 공격자가 요청 메세지의 URL이나 파라미터를 변경하여 정상적으로 혀용되지 않은 기능을 실행하거나 다른 사용자의 리소스에 접근할 수 있는 공격이다. 공격자는 항상 요청 메세지의 어떤 부분이든 마음대로 변경할 수 있다는 것을 항상 염두에 두어야한다. IDOR 공격 실습을 해보겠다. 버프 스위트의 인터셉트 기능을 이용하.. 공감수 0 댓글수 0 2021. 3. 19.
  • 모의해킹의 여덟 번째 민감한 데이터 노출 민감한 데이터에 포함되는 것들은 각종 개인정보, 로그인에 사용되는 정보, 업무상 기밀등 비공개로 관리되는 정보이다. 민감한 데이터 노출 리스크는 HTTP 프로토콜을 사용하여 전송되는 경우, 평문으로 저장되는 경우, 안전하지 않은 암호화 방식을 사용하는 경우에 발생한다. 네트워크 스니핑은 네트워크의 데이터들을 모니터링하는 기술이다. 네트워크 스니핑 프로그램 중 tcpdump와 와이어샤크가 있다. tcpdump 프로그램을 이용하여 HTTP 프로토콜로 전송되는 사용자 계정 정보를 확인하겠다. 위 명령어를 실행해둔 채로 bWAPP의 clear Text HTTP 메뉴로 가서 로그인한다. 웹 스토리지 기능은 웹 애플리케이션이 사용자의 웹 브라우저에 데이터를 저장할 수 있는 기능이다. 웹 스토리지 중 로컬 스토리지에.. 공감수 0 댓글수 0 2021. 3. 18.
  • 모의해킹의 일곱 번째 파일 공격 파일 공격중에서 파일 인클루전 공격은 주로 PHP 애플리케이션을 대상으로 발생한다.PHP는 인클루드 기능인 include() 함수를 이용하여 다른 파일을 소스 코드에 직접 포함시킬 수 있다. 이때 인클루드할 파일을 외부 사용자가 지정할 수 있는 경우 파일 인클루전 취약점이 존재하게 되고, 공격자는 본인이 원하는 파일을 인클루드시킬 수 있다. 파일 인클루전 공격은 공격자가 인클루드할 수 있는 파일이 각각 호스트 내부의 파일인지 외부의 파일인지에 따라 로컬 파일 인클루전(Local File Inclusion, LFI)과 리모트 파일 인클루전(Remote File Inclusion, RFI)의 두 종류로 구분할 수 있다. ../../../../../etc/passwd와 같이 입력하여 root 디렉토리까지 이동.. 공감수 0 댓글수 0 2021. 3. 17.
  • 모의해킹의 여섯 번째 CSRF 공격 CSRF는 Cross Site Request Forgery의 약자로, 크로스 사이트 요청 변조라고 한다. CSRF 취약점의 공격 방법은 공격자가 피싱을 이용하여 공격 대상이 되는 사용자에게 악성 링크를 누르게 하고, 링크를 클릭하면 사용자 모르게 사용자가 로그인되어 있는 웹사이트의 어떤 기능을 실해하는 것이다. 패스워드가 변경된다는 것이 하나의 예이다. CSRF 취약점은 크로스 사이트와 동일하고 두 공격 모두 공격 과정에서 피싱을 이용하는 특성이 있다. 패스워드 변경의 예로 CSRF 공격 순서를 보면, - 사용자가 웹사이트에 정상적으로 접속하여 로그인한다. - 웹사이트에 로그인되어 있는 동안, 공격자가 이메일을 보내 악성 코드를 포함하는 링크를 클릭하도록 피싱을 한다. - 사용자가 링크를 클릭하면, 공격.. 공감수 1 댓글수 1 2021. 3. 16.
  • 모의해킹의 다섯 번째 XSS 공격 XXS 공격은 크로스 사이트 스크립팅 공격이라고 하는데, 크로스 사이트 스크립팅 공격은 공격자가 악의적인 스크립트 코드를 웹 애플리케이션에 삽입한 후 웹 사용자의 웹 브라우저에서 해당 코드가 실행되도록 만드는 공격이다. 크로스 사이트 스크립팅 공격은 서버의 취약점을 이용하여 클라이언트 쪽을 공격한다는 특징이 있다. 주요 사례중 세션 쿠키를 탈취하는 사례가 있다. 이 역시 클라이언트의 웹 브라우저에 있는 세션 쿠키를 자바스크립트를 이용하여 읽어서 알아내는 것이다. 자바스크립트를 이용하여 공격을 수행하는 특징 때문에 자바스크립트에 따라 다양한 형태의 공격을 시도할 수 있다. 크로스 사이트 스크립팅 공격은 공격자가 삽입한 스크립트 코드가 언제 실행되는지에 따라 크게 리플렉티드 와 스토어드 크로스 사이트 스크립.. 공감수 0 댓글수 0 2021. 3. 15.
  • 모의해킹의 네 번째 커맨드 인젝션 공격 커맨드 인젝션 공격은 SQL 인젝션 공격과 더불어 인젝션 리스크와 관련된 주요 공격 기법이다. 커맨드 인젝션 공격의 결과로 호스트 내부의 명령어를 실행할 수 있기 때문에 대부분 심각한 영향을 초래할 수 있다. 커맨드 인젝션은 명령어를 삽입한다는 뜻으로, 웹 요청 메세지에 임의의 시스템 명령어를 삽입하고 전송하여 웹 서버에서 해당 명령어를 실행하도록 하는 공격이다. 커맨드 인젝션 실습을 해보겠다. 보안 레벨을 low로 설정하고 커맨드 인젝션 메뉴를 선택한다. 리눅스의 경우 shell_exec 함수가 호출된다. ping -c 4 는 ping을 보내는 횟수를 4번을 정한다는 의미이다. target은 ip이다. 만약 ping 뒤에 ;을 입력하고 다른 명령어를 추가하면 ping 명령어가 끝나면 ; 뒤 명령어가 실.. 공감수 0 댓글수 0 2021. 3. 14.
  • 모의해킹의 세 번째 SQL 인젝션 공격 SQL 인젝션 취약점은 웹 서버 영역의 데이터베이스로 전송되는 SQL 쿼리문을 사용자가 임의로 조작할 수 있는 경우를 말한다. 공격자는 이 취약점을 이용하여 데이터베이스에 저장되어 있는 다른 사용자의 개인정보를 허가되지 않은 정보에 접근하거나 데이터를 변조할 수 있다. SQL 인젝션 공격은 WHERE 구문 우회와 UNION 공격으로 나뉜다. WHERE 구문 우회 부터 보면, 쿼리문에 where 조건문이 있는데, 그 뒤에 or '1'='1' 과 같이 항상 참이 되는 조건을 추가하면 SQL 인젝션 공격이 성공할 수 있다. UNION 공격은 합집합으로 UNION 뒤에 구문을 같이 포함시켜 쿼리문을 실행시킨다. 쿼리문 끝에 #은 뒤에 오는 내용을 주석처리하고자 할 때 사용하는 특수문자고 만약 없다면, 가장 끝에.. 공감수 0 댓글수 0 2021. 3. 13.
  • 모의해킹의 두 번째 취약한 인증 공격 공격자는 사용자 계정 정보를 확인하거나 세션 토큰과 같은 인증에 사용되는 토큰 정보를 입수하여 인증과정을 우회한다. 취약한 인증 리스크는 인증 과정이 제대로 보호되어 있지 않아서 공격자가 인증 과정을 우회할 수 있는 경우 발생한다. 예) 로그인 시도에 제한을 하지 않는 경우, 브루트 포스 공격이 시도될 수 있다. 브루트 포스 공격은 특정 정보(주로 사용자의 패스워드)를 알아내기 위한 공격이다. 패스워드 크래킹을 위해 사용하기도 하며, 웹 어플리케이션을 대상으로 사용자의 패스워드를 알아낼 때 사용한다. 브루트 포스 공격의 첫 번째 방법은 일련의 문자들을 하나씩 입력하는 방법이 있다. 이 방법의 단점은 패스워드 길이가 길어지면 공격이 어렵다는 것이다. 브루트 포스 공격의 두 번째 방법은 사람들이 자주 쓰는 .. 공감수 0 댓글수 0 2021. 3. 10.
  • 모의해킹의 첫 번째 정보수집 정보 수집은 모의해킹의 대상을 정하고 가장 처음 수행하게 되는 단계이다. 정보 수집은 두 가지로 분류되는데, 웹 애플리케이션을 서비스하기 위한 호스트 환경에 대한 정보와 웹 어플리케이션 자체에 대한 정보로 나뉜다. 서버의 응답을 통해 정보를 수집하는 방법을 배너 그래빙이라하는데, 이 방법은 응답 메시지의 서버 헤더를 살펴보는 방법이다. 웹 브라우저에서는 F12 -> Network에서 확인할 수 있다. 웹 취약점 스캐닝이란 자동화된 프로그램을 이용하여 웹 사이트의 여러 가지 정보를 수집하고 이 정보들을 바탕으로 어떤 취약점이 있는지 알아내는 과정이다. 칼리 리눅스에 설치되어 있는 웹 스캐닝 프로그램 중 nikto라는 프로그램으로 정보를 쉽게 수집할 수 있다. 디렉터리 인덱싱 취약점은 웹 서버의 잘못된 설정.. 공감수 0 댓글수 0 2021. 3. 9.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.