목록분류 전체보기 (186)
Iriton's log
01. 서브쿼리하나의 쿼리 안에 존재하는 또 다른 쿼리서브쿼리는 위치에 따라 다음과 같이 나눌 수 있다.SELECT 절 - 스킬라 서브쿼리FROM 절 - 인라인 뷰WHERE 절, HAVING 절 - 중첩 서브쿼리(1) 스킬라 서브쿼리SELECT 절에 위치하지만 컬럼이 올 수 있는 대부분 위치에 사용할 수 있다.컬럼 대신 사용되므로 반드시 하나의 값만 반환해야 하며 그렇지 않은 경우 에러를 발생(2) 인라인 뷰FROM 절 등 테이블명이 올 수 있는 위치에 사용 가능(3) 중첩 서브쿼리WHERE 절과 HAVING 절에 사용할 수 있음.중첩 서브쿼리는 메인쿼리와의 관계에 따라 다음과 같이 나눌 수 있음.비연관 서브쿼리 - 서브쿼리 내에 메인쿼리의 컬럼이 존재하지 않음.연관 서브쿼리 - 서브쿼리 내에 메인쿼리의..
Description: 이 문제는 작동하고 있는 서비스(ssp_001)의 바이너리와 소스코드가 주어집니다.프로그램의 취약점을 찾고 SSP 방어 기법을 우회하여 익스플로잇해 셸을 획득한 후, "flag" 파일을 읽으세요."flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다. 취약점 분석#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); a..
프로그램을 실행해 보니 그림판처럼 사용자가 그림을 그릴 수 있다.Check 버튼을 누를 때 Wrong 이라고 뜨는 걸 보니,Flag와 연관이 있을 것이라 생각하고 올리디버거를 열었다. Wrong 문자열이 사용되는 함수로 이동하여 살펴 보기로 했다. 보니까 Wrong 메세지 박스를 띄우기 전에 어떤 분기문에 의해 점프한 것을 볼 수 있다.DL과 BL을 비교하는 비교연산자 CMP가 보인다.그럼 이 DL과 BL은 어디서 온 무슨 값인지 알아 보기 위해 코드를 역순으로 읽어보며 파헤쳐 봤다. 여기서 MOV 명령어로 오른쪽 값을 왼쪽에 넣는다. 즉 ECX와 EAX 값에 초점을 두면 된다.코드를 살펴 본 결과 EAX와 ESI의 대조를 추측했지만 그건 너무 복잡해져서 구글링을 해 봤다.그 결과 PEview가 필요해서..
1분 재생만 되는 MP3 Player를 1분 이상 재생시켜서 flag를 얻어야 한다. PEiD로 열어 보니 따로 패킹되진 않았다. 프로그램을 실행시켜서 원하는 MP3 파일을 열었더니 1분이 됐을 때 팝업창이 떴다. 이제 올리디버거로 파일을 열어 봐야겠다. 근데 올리디버거로 프로그램을 실행시켜서 MP3 파일을 열려고 할 때 프로그램이 정지되는 현상이 있었다.백신프로그램이랑 충돌해서 그렇다고 한다. 백신 프로그램을 꺼도 프로그램이 정지되는 걸 보아 코드나 연동 부분에 문제가 생긴 듯하다.그래서 open을 사용하지 않고 직접 경로를 입력해 주고 재생하였다.이렇게 했더니 이번엔 디버거가 멈췄다... 어쩔 수 없이 구글링 해서 다른 사람들이 찾아둔 주소로 이동해서 문제를 풀었다. CMP로 60000ms(올리디버거..
*본 포스트는 Dreamhack - Systemhacking Lecture 을 참고하여 작성되었습니다.분석보호기법 탐지보호기법을 파악할 때 주로 사용하는 툴이 checksec다.pwntools를 설치할 때 같이 설치되어 ~/.local/bin/checksec에 위치한다.checksec을 사용하면 간단한 커맨드 하나로 바이너리에 적용된 보호기법들을 파악할 수 있다.만약 해당 커맨드를 사용했을 때 command not found 에러가 발생한다면, ~/.bashrc 파일의 마지막 줄에 다음 줄을 추가한다.export PATH="$HOME/.local/bin/:$PATH" 취약점 탐색1. buf의 주소이 예제에서는 실습의 편의를 위해 buf 의 주소 및 rbp 와 buf 사이의 주소 차이를 알려준다.print..
해당 글은 노트북+공공 WIFI를 사용하는 입장으로써 어댑터에 브릿지 설정을 하지 않고 Proxmox 서버를 구축하는 방법을 찾기 위해 기나긴 삽질하다가 찾은 (그나마) 최적의 방법인 것이지 정답이 아닐 수 있단 것을 참고하길 바랍니다.(데스크탑과 랜선을 사용한다면 그냥 브릿지 설정을 하고 하시길...)1. ISO 다운로드DataCenter의 pve - local(pve) - ISO images - Download from URL여기서 URL은 https://releases.ubuntu.com/focal/ubuntu-20.04.6-live-server-amd64.iso 을 사용하여 Ubuntu 20.04를 다운로드 했다. 이외 버전을 가져오고 싶다면 우분투 홈페이지에서 서버 설치 image url을 우클..
*본 포스트는 Dreamhack - Systemhacking Lecture 을 참고하여 작성되었습니다. Stack Canary함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법이다.카나리 값의 변조가 확인되면 프로세스는 강제 종료된다.스택 버퍼 오버플로우로 반환 주소를 덮으려면 반드시 카나리를 먼저 덮어야 하므로 카나리 값을 모르는 공격자는 반환 주소를 덮을 때 카나리 값을 변조하게 된다.이 경우, 에필로그에서 변조가 확인되어 공격자는 실행 흐름을 획득하지 못합니다. Canary의 작동 원리정적 분석스택 버퍼 오버플로우가 발생하는 예제 코드// Name: canary.c#include int main() { char buf[..
Description이 문제는 서버에서 작동하고 있는 서비스(basic_exploitation_001)의 바이너리와 소스 코드가 주어집니다.프로그램의 취약점을 찾고 익스플로잇해 "flag" 파일을 읽으세요."flag" 파일의 내용을 워게임 사이트에 인증하면 점수를 획득할 수 있습니다.플래그의 형식은 DH{...} 입니다. 취약점 분석#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm..