분류 전체보기 309

[DEFCON 2019] speedrun-003 풀이

문제 풀이 환경 : ubuntu 16.04.7 xor .. 의 의미..?..ㅎ 문제 푼 생각, 흐름 그대로 작성하려고 노력했다. Analysis 별거 없군.,.! 아이패드로 대충 색칠해왔다. read함수 반환값은 적은 바이트 수이다. 그래서 변수명을 size라고 임의로 내가 바꿨다. 결론은 입력할 때 30글자를 적어야 한다. 그리고 xor 함수가 보이는데 뭔가 xor 연산을 할 것 같다. 입력한 값 중 0xF만큼만 가져와서 xor 연산을 하는 것처럼 보인다. if문에서 그 뒤의 0xF만큼 xor 연산을 하고 윗줄에서 한 거랑 같은지 비교한다. 같으면 shellcode_it 함수를 호출하는데... 뭔가 수상쩍어 보여서 저 함수를 호출하려고 목표를 잡고 디버깅을 해보았다. 대충... if문 조건에 부합하려면..

Integer issue (정수의 범위, 묵시적 형변환, integer overflow)

ref : dreamhack.io 얼마전에 integer overflow를 마주했었다. 너무 대충 아는 것 같아서 드림핵 강의를 보면서 정리해보려고 한다. 정수의 범위 (signed) char : -2^7 ~ 2^7-1 unsigned char : 0 ~ 2^8-1 (only 양수) (signed) short : -2^15 ~ 2^15-1 unsigned short : 0 ~ 2^16-1 (only 양수) (signed) int : -2^31 ~ 2^31-1 unsigned int : 0 ~ 2^32-1 (only 양수) (signed) long long : -2^63 ~ 2^63-1 unsigned long long : 0 ~ 2^64-1 (only 양수) size_t와 long 자료형은 아키텍쳐에 따..

System Hacking 2021.01.27

[NOTE : linux] setting... '멋'에 대한 것...

원격 접속 툴 : xshell 설치 www.netsarang.com/ko/free-for-home-school/ 무료 라이선스 무료 라이선스 무료 사용자의 최고의 선택 Xshell과 Xftp 무료 라이선스는 성능이나 기능적인 면에서 이에 필적할 만한 것이 없습니다. 어떤 것도 따라올 수 없습니다. 가정에서 개인 서버를 관리 www.netsarang.com greenfishblog.tistory.com/34 VMWare에서 ubuntu 설치후 SSH 연결하기 이번 포스트는 다음의 내용을 포함하고 있습니다. VMWare의 Port-forwarding Ubuntu의 고정 IP 할당 Ubuntu의 SSH 설치하기 Ubuntu의 고정 IP 할당 하기 우선 VMWare의 네트워크 설정부터 가져와야 합니다. VMWa..

Note/linux 2021.01.27

[DEFCON 2019] speedrun-002 풀이

문제 풀이 환경 : ubuntu 16.04.7 slow slow slow run 마지막에 애먹은 문제다. Analysis 친절하게 이름이 main이라고 되어 있다. buf에 0x12C만큼 입력받고 아래 if문에서 buf를 확인하고 있다. "Everything intelligent is so boring." 문자열과 buf를 비교하고 있는데 0x24 길이만 비교한다. 같으면 if문 안으로 들어가서 v2를 인자로 sub_400705 함수로 이동하게 된다. 처음에 if문 들어가기 전 read에서 bof가 터져서 이걸로 어떻게 해볼까 했는데 이 문제를 풀려면 어쨌든 sub_400705 함수를 거쳐야 하기 때문에 if문 조건을 맞춰주어야 한다. 여기서도 bof가 터진다. 인자로 받은 a1에 0x7DA만큼 쓰는데 ..

[NOTE : coding] C에서 0과 NULL의 차이?

[DEFCON 2019] speedrun-001 풀이 이거 풀다가 execve 인자를 NULL로 주고 싶은데 NULL 이라는 값을 어떻게 줘야할 지 모르겠어서 한번 공부해봤다. #gcc -o test test.c #include int main() { char a = 0; char b = NULL; return 0; } a와 b에는 어떻게 값이 들어갈까? gdb를 통해 확인해보니 둘 다 0이 들어간다... 그리고 애초에 아스키 코드표를 보면 NULL이 0이다 ㅋㅋ 결론은 인자로 NULL 주고 싶을 때 걍 0 주면 된다. 근데 값은 같지만 의미는 살짝 다르니 조심

Note/coding 2021.01.25

[DEFCON 2019] speedrun-001 풀이

문제 풀이 환경 : ubuntu 16.04.7 빨리 풀 수 있어서 speedrun인데 난 slowrun이다.. 아무튼 문제를 풀어보자. Analysis static으로 컴파일해서 함수명이 다 이렇다. main을 찾아야 한다. start는 무조건 존재한다. 여기서 첫번 째 인자가 main의 주소이다... main의 주소는 0x400BC1 타고 들어가보자. 이 친구가 main이다. 그리고 아래 sub_400B60 함수 에서 bof가 일어난다. buf는 0x400이나... sub_440B60에서 0x750이나 읽어서 bof가 터진다. (read라고 추측 가능) 그리고 인자가 하나인 것으로 보아 sub_410390은 puts겠고.. 암튼 그런 느낌 음 보호기법은 NX가 걸려있고 Partial RELRO이다. g..

[linux kernel] (8) - Device Driver (디바이스 드라이버)

[linux kernel] (1) - 커널(kernel)이란? 에서 디바이스 드라이버에 대해 간단하게 알아보았었다. 너무 간단하게 알아본 것 같기도 하고... 내용을 더 추가하고 싶은데 이어서 쓰면 글이 너무 길어질 것 같아서 따로 빼서 써보려고 한다.. Device Driver user aplication이 정형화된 인터페이스를 통해 장치에 접근할 수 있도록 해주는 소프트웨어 커널이 컴파일 될 때부터 포함된 디바이스 드라이버/ 별도로 컴파일되어 커널 부팅 후에 로드되는 디바이스 드라이버 모듈의 일종, 디바이스 드라이버를 작성하는 것 = 모듈 프로그래밍, Makefile을 이용해 컴파일함 Character Device device를 파일처럼 접근하여 직접 read/write 수행 ex) keyboard...

[dreamhack : pwnable] basic_rop_x64 풀이

문제 풀이 환경 : ubuntu 16.04.7 64bit에서 ROP 문제이다. main에서 bof가 발생하고 있다. buf 크기는 0x40이지만 read로 0x400을 읽으려고 하고 있다. 페이로드를 총 두 번 짤 것이다. 첫 번째 페이로드는 libc_base를 구하기 위함이다. libc_base를 구하기 위해 read함수의 실제 주소를 leak한다. 그리고 RET를 main으로 줘서 main이 한 번 더 돌게 한다. 두 번 째 페이로드에서 RET에 system함수를 넣어 진짜 쉘을 딸 것이다. 첫 번째 payload : read 함수의 실제 주소 leak read 함수의 실제 주소를 leak하기 위해서는 어떻게 해야 할까? 출력하는 함수 인자로 read함수 got를 주면 read 함수의 실제 주소가 출..

WAR GAME/dreamhack 2021.01.20

[vmware escape] CVE-2020-3947 분석

가독성을 위해 노션에다가 글을 작성하였다. 근데 글을 다 작성하고 보니 가독성이 좋은지 잘 모르겠다. vmware escape를 이 문서를 통해 처음 접하였다. 이 문서를 택한 이유는.. 글이 짧았기 때문이다... 글이 너무 길었으면 읽다가 포기할 것 같아서 일부러 짧은 글을 선택하였다. 학교에서 배운 DHCP를 복습하는 느낌이 들었고, UAF도 얼마전에 복습을 해서그런지 생각한 것보다 쉽게 글이 읽혔다. 다만 영어 문서를 처음 보다보니 생각보다 시간이 오래걸렸다. 앞으로 영어문서를 보는 힘(?)을 조금 더 길러야 할 것 같다. 실습을 진행해보고 싶은데 어떻게 하는지 도통 모르겠어서 어쩔 수 없이 글만 읽어서 아쉬웠다. 글은 이 문서의 한글 번역판이라고 생각하면 편할 것 같다... www.notion.s..