목록분류 전체보기 (420)
외로운 Nova의 작업실
이번시간에는 웹해킹 마지막 blind-command 문제를 풀어보겠습니다. - 문제 인식 flag file을 읽으라고합니다. 확장자도 파일 이름도 주어지지않습니다. 먼저 문제 파일을 보겠습니다. #!/usr/bin/env python3 from flask import Flask, request import os app = Flask(__name__) @app.route('/' , methods=['GET']) def index(): cmd = request.args.get('cmd', '') if not cmd: return "?cmd=[cmd]" if request.method == 'GET': '' else: os.system(cmd) return cmd app.run(host='0.0.0.0', p..
이번시간에는 웹해킹 마지막 에필로그의 첫번째 문제 carve party를 풀어보겠습니다. 정답은 가려놓겠습니다. - 문제인식 호박을 10000번 클릭하라고합니다. 문제파일을 다운해보겠습니다. 호박이 있고 클릭을하면 아래 10000이 하나씩 줄어듭니다. 자바스크립트로 짜져있으니 자바스크립트를 수정해서 해당 문제를 풀어봅시다. - 문제 풀이 자바크스립트 부분을 봐봅시다. 호박을 클릭하면 counter 가 1씩 늘어나고 counter의 값이 %100 했을때 0이되면 pie값이 변하는 것을 볼 수 있습니다. 즉 마지막에 pie값과 counter 값이 어떠한 검증에 맞아야 제대로된 플래그값을 알 수 있을 것 같습니다. 따라서 %100을 했을때 pie값이 바뀌게하기위해 counter += 1을 counter += ..
- 호스트 설정과 호스트 설정 프로토콜 다른 망과 통신을 하기위해서는 아래와 같은 정보가 필요합니다. 컴퓨터의 주소 컴퓨터의 해당 서브넷 마스크 라우터의 IP주소 네임서버의 IP주소 RARP : MAC을 IP로 변환시키는 프로토콜로 4가지중 ip만 제공하므로 오늘날 사용하지않습니다. BOOTP(bootstrap) : IP주소를 포함하여 4가지를 모두 제공하지만 정적인 프로토콜입니다. DHCP : 처음으로 부팅한 컴퓨터나 디스크가 없는 컴퓨터에게 4가지 정보를 제공하기위해 설계된 프로토콜입니다. DHCP(dynamic host protocol)은 UDP 기반 프로토콜이며 서버가 네트워크 클라이언트에게 IP주소를 실시간으로 부여할 수 있도록 합니다. 응용 계층의 프로그램입니다. 아래는 DHCP 동작 절차입니..
이번시간에는 SSRF 함께 실습을 리뷰해보겠습니다. 정답은 가려져 있습니다. - 문제인식 url을 /으로 시작하면 자기자신의 파일시스템에서 파일을 가져오게됩니다. 이때 해당 웹서버는 /app이 아닌 다른 경로에 위치하게됩니다. 따라서 /flag.txt를 입력하면 /app이 아니기때문에 notfound가 뜹니다. 하지만 /으로 시작하지않고 http:127.0.0.1:1598로 시작하게되면 다른 서버가 해당 요청을 받게됩니다. 이 해당 서버는 /app에서 실행되고 있다고 합니다. 이번 실습을 위해 드림핵에서는 이 다른 서버를 실행시켜놓았고 1500~1800사이에 포트를 적용했습니다. - 포트 알아내기 포트 코드를 이용해서 주소부분을 변경하여 알아내줍니다. #!/usr/bin/python3 import req..
책이제 리버싱 입문 책 공부를 종료하려고합니다. 마지막으로 지뢰찾기 맵핵에대한 내용이 있지만 가상머신을 사용했을때 많이 느려서 실습이 어려울 것 같아 안하려고합니다. 노트북 사양도 좋지않아서.. 특히 지뢰찾기는 32비트 설치파일도 구하기 힘들다보니 실습이 어려워 안하겠습니다. 단, 마지막장에 있는 공부해야할 고급 기술들은 정리해볼까합니다. - 공부해야할 고급 기술 1. 64비트 아키텍처 및 64비트 응용프로그램 리버싱 2. IDA Pro : 전문적인 리버서는 ollydbg보다 IDA pro를 많이 사용합니다. 3. 언패킹 기술 : 반복적인 기술과 경험이 쌓이면 기술이 발전합니다. - 리버싱 활용분야 1. 악성코드 분석 2. 버그 헌팅 3. 해킹 4. 해킹 방어대회 다음에는 방독면 책을 공부해보도록 하겠습..
- 웹 보안 개요 웹 보안을 제공하는 방법은 IPSec을 이용하는 것과 TCP 바로위에 보안을 구현한 SSL, TLS를 이용하는 것입니다. - SSL/TLS SSL/TLS는 클라이언트/서버 환경에서 TCP 기반의 애플리케이션에대한 종단간 보안서비스를 제공하기위해 만들어진 전송 계층 보안 프로토콜입니다. . SSL은 네스케이프사이에서 1990년대 초 처음으로 제안되었으며 SSL/TLS는 현재 가장 많이 이용되고 있는 암호 통신 방법입니다. 그 후 SSL은 version 3/.0이 되었는데 POODLE 공격이 가능한 취약점이 발견되었습니다. 이때문에 IETF가 SSL 3.0을 기반으로 TLS를 만들었습니다. SSL/TLS에서는 대칭키 암호, 공개키 암호, 일방향 해시함수, 메시지 인증코드, 의사난수 생성기,..
shellcode란 기계어로 만들어진 크기가 작은 코드로 운영체제의 명령 쉘을 이용한 코드입니다. 코드 인젝션 기술은 PE파일의 빈 공간에 셸코드를 입력해서 실행하게 만드는 해킹기술로 코드 케이브 기술을 활용해서 만들 수 있습니다. 저는 여기서 코드 인젝션이 코드케이블기술과 같다고 생각하여 코드 인젝션 공격이 있고, 어떤 코드를 심느냐에따라 달라진다고 생각합니다. 코드 인젝션 개념은 아래와 같습니다. - 셸코드 예제 셸코드 예제는 아래 페이지에 들어가면 사용자(BroK3n)을 강제로 추가하는 기능을 가진 쉘코드가 있습니다. 아래 첨부하겠습니다. https://www.exploit-db.com/exploits/33836 Windows - Add Administrator User (BroK3n/BroK3n)..
rena 20강의 경우 언패킹을 하는 문제입니다. 즉, OEP를 찾는 문제이죠. hardware bp를 이용해 OEP를 찾아보겠습니다. - 문제 인식 먼저 실행시켜보도록 하겠습니다. 자신을 언패킹 해달라고합니다. 올리디버거로 열어봅시다. - reversing 한번 F8을 눌러 JMP해보겠습니다. PUSH EBP로 이제 unpacking 함수를 실행하려고하는 것 같습니다. 이 함수가 끝난다면 즉, EBP의 값이 POP된다면 이제 OEP로 JMP할 것임을 예상할 수 있습니다. 따라서 EBP값에 hardware bp를 걸어보겠습니다. 스택에서 follow in Dump를 해주고 메모리 부분에서 오른쪽마우스클릭 - BreakPoint - hardware 눌러주시고, 아래와 같이 설정해주고 OK를 눌러줍니다. 이..
- 이메일 관련 프로토콜 Alice는 Bob에게 메시지를 보내고자할때 사용자대행자(UA, user agent)프로그램을 호출하여 메일 서버에 있는 전송 대행자(MTA, message transfer agent)를 통해 메시지를 보냅니다. Bob은 메시지를 받기위해서는 사용자 대행자를 통해 메일 서버에 있는 접근 대행자(MAA, message access agent)를 통해 메시지를 받습니다. UA와 메일 서버는 LAN or WAN으로 연결되어 있습니다. SMTP(simple mail transfer protocol)은 인터넷에서 MTA 클라이언트와 서버를 규정하는 공식적인 프로토콜입니다. SMTP는 송신자와 송신자의 메일서버 사이 그리고 두 메일 서버들 사이에서 총 두번 사용됩니다. 메일서버는 SMTP ..
안녕하세요, 이번시간에는 file-vulnerability 혼자 실습편 file-download-1 문제를 풀어보겠습니다. 정답은 가려져있습니다. - 문제인식 이 문제는 file download 취약점이 존재하는 웹서비스로 flag.py를 다운로드 받으라고합니다. 일단 코드를 봐보겠습니다. - 코드 리뷰 app.py 코드를 리뷰하겠습니다. #!/usr/bin/env python3 import os import shutil from flask import Flask, request, render_template, redirect from flag import FLAG APP = Flask(__name__) UPLOAD_DIR = 'uploads' @APP.route('/') def index(): file..