본문 바로가기

스터디/N0Named 스터디

(9)
[리버싱] exe파일 리버싱 기본적으로 함수의 호출과 실행완료는 스택프레임의 생성과 반환으로 볼 수 있다. 세부 명령들은 각 함수마다 다르지만 초반부의 프롤로그와 후반부의 에필로그는 모든 함수가 동일하게 갖고 있다. [함수 실행 시 스택의 변화]함수에서 사용할 파라미터를 스택에 넣어줌 -> 함수를 위한 스택프레임 설정(함수 프롤로그) -> 함수에 따라 다양한 명령어 실행 -> 함수의 스택프레임을 반환해주고 ret로 해당 함수 수행 다음의 코드로 돌아감(함수 에필로그) *프롤로그 : push ebp(스택에 원래의 베이스포인터 저장) -> mov ebp, esp(현재의 스택포인터를 베이스포인터로 설정) *에필로그 : mov esp, ebp(esp에 ebp_원래 함수 스택프레임 형성 전의 esp값 복구) -> pop ebp(스택에 저장해..
[리버싱] 디어셈블리, 어셈블리, 디컴파일, 컴파일 실행파일 생성 과정 컴퓨터가 수행할 작업을 소스코드로 작성하면 컴파일러가 file.s파일로 변환해준 뒤, 이를 어셈블러가 file.o파일(목적파일)로 변환해준다. 이후 링킹과정으로 필요한 시스템 자원을 사용하도록 해주어서 실행파일이 만들어진다. 컴파일 과정 후에 생성된 file.s파일은 어셈블리어와 가까운 언어로 내용이 구성되어있기 때문에, 파일의 내용 확인으로 주요 명령을 알 수 있다. 하지만 컴파일 후의 file.o파일은 기계어와 가까운 내용으로 구성되어있기 때문에 소스코드 작성자가 알아볼만한 코드를 거의 찾아볼 수 없다. 간단히 보면, 소스코드작성 -> (전처리 + )컴파일 -> 어셈블리 -> 링킹 의 과정으로 실행파일이 생성된다. 디컴파일 : 컴파일 과정의 반대(실행파일 -> 소스코드) 컴파일러와..
[리버싱] 정적분석, 동적분석과 이를 위한 툴 정적분석(SAST)과 동적분석(DAST)은 수행되는 시점과 발견할 수 있는 취약점의 종류가 다르기 때문에 둘다 보완해서 사용해야한다. 정적분석(SAST_static : 개발자 관점_구현 기반_화이트 박스 테스트) [개발에서의 활용] 잘 동작하는 소프트웨어에서도 버그가 존재할 수 있는데, 그 중 동적분석으로 발견하기 힘든 버그들은 정적분석으로 잡아내야한다. divide by zero, buffer overrun같이 예외처리에 대한 누락이 있을 경우의 버그나, memory leak같이 코딩실수로 발생할 수 있는 버그를 정적분석으로 잡아낼 수 있는데, 이미 많은 개발자들이 경험한 오류들에 대한 데이터를 기반으로 코드를 체크하는 프로그램을 이용할 수 있다. 개선할만한 코드들을 찾아준다는 장점이 있으며, 실행이 ..
board 조사내용계정 정보id : hackerpw : helloworldemail : hacker@hack.ctfnick : sellerex : hihiip주소 : 10.0.2.15 글의 내용[첫번째 글]제목 : flag 판매합니다.작성자 : seller내용 :각종 CTF flag 판매합니다.연락주세요 000-0000-0000 [두번째 글]제목 : flag 판매합니다.2작성자 : seller내용 :실수로 글 지워서 다시 올립니다.각종 ctf flag 판매합니다.NND{here_i_AM}연락주세요> 일반글 작성POST로 서버에 회원가입 정보를 담은 php파일을 전송했다. POST형식이라 세부내용들을 확인 가능했으며, GET형식으로 회원가입이 완료되었다는 html문서를 받았는데 성공이라는 의미로 200ok가 떴다.해..
[3주차 스터디 과제 3] 패킷 분석 및 네트워크 기본이론 1. 와이어샤크 컴퓨터 네트워크상에 흘러 다니는 트래픽은 수집하고 분석할 때(패킷 분석) 가장 많이 사용되는 프로그램은 Wire Shark이다. IP 필터링 , MAC 주소 필터링 수행 없이 랜 카드에 도달하는 모든 전기신호를 읽어 들임으로써 얻은 패킷의 정보를 읽는 것이며, 침해대응, 모의해킹, 포렌식 분석 등에도 사용된다. 1.스니핑하기 원하는 인터페이스를 지정해준 후 프로그램을 시작한다. 2.filter 영역에 수집한 패킷 정보에 해당하는 것(프로토콜의 종류, IP주소/다른 것을 검색해도 무방함)을 검색한다.(TCP프로토콜을 인터페이스로 지정했다면 TCP검색) 3.패킷 리스트 영역에서 지정한 인터페이스가 전송한 목록 중 가장 위에 있는 것 위에 커서를 두고 마우스 오른쪽을 클릭한 후 Follow T..
[3주차 스터디 과제 2] 리눅스 서버 구축(도커를 이용한 apm 구축) 리눅스 커널에서는 컨테이너 기술를 제공하는데, 이는 가상화보다 가벼운 기술이라고 한다. 가상머신에서 서버를 구동하는 것으로 미리 구축한 가상 머신 이미지를 이용해 여러서버를 만들어 낼 수 있다는 장점에 . 컨테이너 안에 가상공간을 만들고, 실행파일은 호스트에서 직접 실행하는 것인데, 이는 리눅스 커널의 cgroups와 namespaces가 제공하는 기술 덕분이다. 도커는 이미지 생성과 배포에 특화되어있어서 . 도커이미지는 서비스 운영에 필요한 서버 프로그램, 소스 코드, 컴파일된 실행 파일을 묶은 형태이다.(저장소에 올리고 받는다. by using push/pull) 컨테이너는 이미지를 실행한 상태로 이미지로 여러개의 컨테이너를 만들 수 있다고 한다. 운영체제로 치면 이미지는 실행파일, 컨테이너는 프로세..
[3주차 스터디 과제1] 리눅스 메모리구조(스택, 힙, BSS etc.) 컴퓨터에서는 대부분의 실행 단위가 프로그램인데, 프로그램의 실행은 결국 CPU가 메모리에 값을 저장하고, 계산하는 과정이라고 볼 수 있다. 동작을 가능하게 하는 응용프로그램에 하드웨어(CPU, 메모리)가 계산 결과를 주게 되는데, 이 둘 사이에서 인터페이스 역할을 하는 운영체제가 결국 자원을 관리하게 된다. 그 중 리눅스에서는 다중작업이 가능한데, 동시에 여러가지 프로그램을 돌리게 되어 각 프로그램별로 필요로하는 메모리 공간을 차지하게 되면, 금방 메모리 부족 문제를 겪게 된다. 하지만 리눅스가 다중작업을 한다고 해도, 컴퓨터가 한 순간에는 한 가지 작업만 가능하다는 점과, 프로그램 자체를 실행할 때에도 순간마다 실행에 필요한 메모리 공간은 전체 필요 메모리 공간의 일부라는 점을 고려하여 메모리를 효과적..
[2주차 스터디 과제2] pwntools을 이용한 간단한 문제풀이 1. question / nc 49.247.132.71 1234 [풀이과정] [문제파악] 바로 pwntools로 정답을 보내니 계속 메세지 전송에서 오류가 있었다. 데이터 타입의 문제인 듯 하여 그냥 리눅스 nc명령어로 nc포트에 접속해보았다. [정답 계산] 문제가 계속 같은 형식이므로 eval함수(문자열을 코드로 인식하는 함수)로 계산해준 뒤 답으로 보내야겠다. 문제는 형식인데 send()로 보낼 때 괄호 안에는 문자열이 들어가야하기 때문에 eval로 계산한 값이 어떤형태로 반환되나 확인해보니 int형이라고 한다. str()을 이용해 문자열로 변환해줘야겠다. [정답 송신] 일단 처음에 문제 받을 때 recvline()을 2번 해주었더니 2번째에는 오류가 났었다. 문제자체가 문장이 마무리 된 것이 아니기..