목록분류 전체보기 (15)
학습 기록일지
드디어 포너블 레벨2로 넘어옴 checksec 명령어로 확인시 NX bit와 RELRO Partial 보호기법이 걸려있는걸 확인할 수 있음 문제의 C언어 소스이다. 2레벨로 넘어오자마자 코드가 길어진 기분이든다. 소스를 분석해보자 Line 7 : 전역 cp_name을 256크기로 설정 Line 9 ~ 12 : 전편과 마찬가지로 쉘에 접근할 수 있는 get_shell 함수 존재 Line 14 ~ 27 : 기본 세팅값. 일정시간이 지나면 연결종료 Line 29 ~ 35 : 함수명 cpy. 내부에서 real_name이란 256크기의 버퍼를 세팅하고, cp_name에 있는 값을 real_name으로 복사한다. 리턴. Line 36 ~ 47 : 진입하자마자 알람설정. 최대 cp_name 의 크기만큼(256) 값을..
포너블 1레벨 마지막 문제이다. 생각보다 시간이 많이 안나고 머리도 안좋아서 문제푸는 속도가 갈수록 느려지고있다... 전 문제와 마찬가지로 FSB문제 gdb 로 checksec 확인시 NX-bit와 RELRO 보호기법이 걸려있는걸 확인할 수 있다. 소스코드를 확인해보면 initialize로 알람을 걸어준다. 전편과 마찬가지로 get_shell 함수가 존재하며, heap_buf를 0x80만큼 할당하였다. 입력해준 값이 sprintf 함수를 통해 0x90 만큼 stack_buf 에 저장해준다. 이때 sprintf 가 길이제한과 서식지정자가 없어 FSB취약점이 발생한다. sprintf함수를 이용하여 printf 함수의 got 주소를 get_shell 주소로 덮거나 return 주소를 get_shell로 덮으면..
포너블 3번째문제 gdb에서 확인해보면 RELRO, NX bit가 활성화 되어있다. RELRO (출처 : https://howd4ys.github.io/2019-01-02/RELRO-is-fun1) - No RELRO 는 ELF 기본헤더 , 코드영역 를 제외한 거의 모든 부분에 Read , Write 권한을 주는 것 - Partial RELRO 는 NO RELRO와 매우 비슷하지만 차이점이 있다면 _DYNAMIC 섹션에 쓰기 권한이 없어짐 - FULL RELRO 는 bss 영역을 제외한 모든 부분에서 write권한이 없어짐 (bss란 ELF섹션중 하나) 위 코드는 basic_2 문제의 소스코드이다. 확인해보면 앞에 문제와 마찬가지로 initialize() 라는 함수로 타이머를 걸어주며, 친절하게 쉘을 얻..
드림핵 포너블 두번째문제 NX bit 보호기법을 우회하는 기본적인 RTL 문제이다. 삽질한 문제. 삽질 안하는 문제 찾기가 더 힘들듯 위 명령어로 문제풀때 확인해보면 좋음 셸코드 작성시 활요하면 좋을거같다 디버깅 상태를 보여줌? > 리틀엔디언은 그대로 찍힘 (78 56 34 12 => 78 56 34 12) 문제시작 문제의 소스코드이다. main 함수에 gets(buf)로 취약점이 존재하는걸 확인할 수 있다. buf의 크기는 0x80이며, 친절하게도 read_flag라는 함수가 존재한다. 따라서 목적은 저 함수를 호출하는것 서버 접속시 몇초 뒤 종료되며, 종료되기 전 인자를 입력해줄 수 있다. 디버깅 상태에서 read_flag 함수의 주소는 0x80485b9 이다 >> \xb9 \x85 \x04 \x08..
포너블 기초문제 basic exploition 000 풀이 삽질 4일째 실행환경 > 다음에 파이썬 2.x로 실행해보자 - 데비안 64비트 - python 3.9+ - pwntools 4.5.0 파이썬 3.9에선 문자열을 전송할 때 byte로 전송해줘야 한다. 예를들어 \x90 같은 의미없는 값을 넣을때에도... "", '' 앞에 b를 붙여 b"" 로 사용하면 바이트 객체가된다. ex) b"\x11\x22\x33\x44\x55" OR "asdf".encode('euc-kr') "asdf".encode('utf-8') ex2) b"\x90"*120 p32함수는 Int형만 먹는다. p32("0x12345678") > equired argument is not an integer 에러 p32(0x12345678..
Telnet 원격 접속 서비스로서 사용자가 네트워크를 통해 다른 컴퓨터에 연결하여 서비스를 받는 인터넷 표준 프로토콜이다 일반적으로 텔넷 서버의 계정이 필요하며 파일 전송, 디렉토리 생성 등 자신의 컴퓨터처럼 이용 가능하다 보통 서버쪽 포트 오픈여부를 확인하기 위해 많이 사용한다 ex) telnet host-ip port / telnet 222.111.111.222 80 SSH(Secure Shell Protocol) 보안 텔넷 이라고도 불린다 네트워크 프로토콜 중 하나로 사용자가 네트워크를 통해 다른 컴퓨터에 연결할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜이다 ex) ssh host-ip port / ssh 222.111.111.222 22 공통점 원격 PC를 엑세스 하기 위해 사용된..
1. 보통 데이터베이스와 사용자 인터페이스 사이의 정보 교환을 처리하는 알고리즘을 설명할 때 사용하는 비기술적 용어이다. 2. 하나의 프로젝트나 프로그램중 업무와 관련된 처리를 하는 일부분을 뜻하는데, 프로젝트를 하면서 데이터베이스에서 어떠한 자료를 가져와서 웹에서 출력을 할때 데이터베이스 연결, 통신, 자료가공, 페이지 구성등 여러가지 작업을 하지만 그 중에서 사용자가 원하는 자료의 가공 부분을 의미한다. 예를 들어 자료를 저장할때는 부가세가 포함되지않고 자료가 저장이 되어있는데. 최종적으로 사용자에게는 부가세가 포함된 자료를 디스플레이해야 하는 업무를 처리해야 한다고 할 때 이를 처리하는 과정을 의미한다고 할 수 있다.