System hacking training
-
[Toddler's Bottle] random write-upSystem hacking training/pwnable.kr 2018. 7. 21. 20:50
pwnable.kr Toddler's Bottle 6번째 문제 random 을 풀이하였습니다. 아버님이 프로그래밍을 할때 random 값을 어떻게 사용하는지 가르쳐줬다고 하는것으로 보아 난수에 대한 문제로 추정을 했습니다. 그리고 ssh로 바로 접속을 하였고 바이너리의 소스 코드를 확인해보면 다음과 같습니다. rand()를 사용하여 난수를 생성하고 key값을 사용자로 부터 입력받아 xor 연산 후 0xdeadbeef와 같다면 쉘을 띄워줍니다. 만약 다르다면 2의 32제곱의 경우의 수를 생각해야될것이라고 언지를 해주면서 프로그램이 종료됩니다. rand()로 난수를 생성하는 것은 어쩌면 상관없을 것 같지만 이와 같이 key값을 인증하는곳에 쓰인다면 문제가 될 수 있습니다. 왜냐..! 저도 처음 알게된 사실이..
-
[Toddler's Bottle] passcode write upSystem hacking training/pwnable.kr 2018. 7. 21. 20:41
드디어 10pt passcode 문제를 풀었슴다..ㅎ 이 문제가 요구하는 선행지식은 다음과 같습니다. scanf() 에서 사용되는 &의 의미, linux에서 fflush(), got overwrite 위 개념들을 알고있어야 풀 수 있습니다. Mommy told me to make a passcode based login system. My initial C code was compiled without any error! Well, there was some compiler warning, but who cares about that? ssh passcode@pwnable.kr -p2222 (pw:guest) 문제는 위와 같고, ssh 로 접속해서 문제를 봅시다. #include #include void..
-
[Toddler's Bottle] shellshock write upSystem hacking training/pwnable.kr 2018. 7. 14. 19:39
오늘은 shellshock write up 을 작성해보겠습니다. Mommy, there was a shocking news about bash. I bet you already know, but lets just make it sure :) ssh shellshock@pwnable.kr -p2222 (pw:guest) shellshock 문제 이름에서도 알 수 있듯이 이 문제는 CVE-2014-6271, bash 쉘 4.3 이하 버전에서 원격 명령을 실행 할 수 있는 취약점을 다룹니다. 이 취약점이 bash shell 에 대한 취약점인만큼 bash에 대한 이해가 필요합니다. bash는 유닉스, 리눅스, 맥 계열에서 주로 사용되는 프로그램 명령어로 컴퓨터 작업을 할 수 있는 환경을 제공하는 소프트웨어입니다..
-
[Toddler's Bottle] mistake write upSystem hacking training/pwnable.kr 2018. 7. 11. 05:08
오늘은 mistake를 풀어봤습니다. input, passcode 문제를 풀이하려고 했는데 어렵네요.. 쉬운 1pt 문제입니다. We all make mistakes, let's move on. (don't take this too seriously, no fancy hacking skill is required at all) This task is based on real event Thanks to dhmonkey hint : operator priority ssh mistake@pwnable.kr -p2222 (pw:guest) Operator priority 즉 연산자 우선순위가 힌트로 주어졌습니다. ssh 접속 후 파일 목록을 확인하면 아래와 같습니다. mistake@ubuntu:~$ ls -a..
-
[Toddler's Bottle] flag write-upSystem hacking training/pwnable.kr 2018. 7. 4. 03:27
오늘은 toddler's bottle 4번째 문제인 flag를 풀이를 작성해보겠습니다. 어떤 아버지가 이런 선물을 줄까요... 다운로드 링크에 들어가면 flag 바이너리를 받으실 수 있습니다. ELF 64bit 실행파일이고, statically linked가 되어있네요. 그리고 stripped되어있습니다. stripped 되어있다는 것은 실행 가능한 이진 프로그램들과 목적 파일들로부터 모든 디버깅과 상징 정보가 지워졌다는 것을 의미합니다. 이로인해서 디버깅이 불가능한 상태입니다. gdb로 까봐도 소용없었습니다. checksec 으로 바이너리에 걸린 메모리 보호기법을 확인해보니 보통 보이지 않던 Packer라는것이 보였습니다. 내용은 UPX로 packed 되었다는군요. UPX(Ultimate Packer ..
-
[Toddler's Bottle] bof write-upSystem hacking training/pwnable.kr 2018. 7. 1. 22:57
toddler's bottle 의 세번째 문제 bof를 풀이하겠습니다. (사실 순서대로 풀이하려고 했는데 MD5 해쉬 충돌...? collision문제를 아직 풀지 못해서 먼저 작성하겠습니다.) 5pt로 간단한 문제입니다. buffer overflow 는 가장 일반적인 소프트웨어 취약점 중 하나라고 알려주면서 bof 바이너리와 소스코드를 줍니다. 먼저 소스코드를 확인해보면 아래와 같습니다. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ prin..
-
[Toddler's Bottle] collision write-upSystem hacking training/pwnable.kr 2018. 7. 1. 22:56
Toddler's Bottle의 두번째 문제 collision이라는 문제를 풀었다. Daddy told me about cool MD5 hash collision today. 라고 해서 해시 충돌 공격에 관한 문제인듯 했다. 그래서 열심히 구글링을 했고 얻은 결과는 MD5는 MD4를 대체하기 위해 나왔고 노트북 한 대의 계산 능력으로 1분 내에 해시 충돌을 찾을 정도로 빠른 알고리즘이 되었다는 사실 정도..? 이 해시 충돌이라는 것은 서로 다른 두 입력값에 대해 동일한 출력값을 내는 상황을 의미한다. 해시 함수가 무한 가짓수의 입력값을 받아 유한한 가짓수의 출력값을 생성하는 경우, 비둘기집 원리에 의해 해시 충돌은 항상 존재한다. https://ko.wikipedia.org/wiki/%ED%95%B4%E..
-
[Toddler's Bottle] fd write-upSystem hacking training/pwnable.kr 2018. 7. 1. 02:47
pwnable.kr fd 문제를 풀었습니다. file descriptor 에 대한 문제임을 예상할 수 있었습니다. ssh로 remote 연결을 하여 진행을 하는 방식입니다. 접속하여 ls 명령어로 어떤 파일들이 있는지 보니 fd라는 실행파일에 setuid가 걸려있습니다. fd.c는 fd에 대한 소스코드인듯 합니다. LOB와 비슷합니다 ㅎㅎ 바이너리 이름에서부터 알 수 있듯이 이 문제는 fd 즉 파일 디스크립터에 관한 문제입니다. 먼저 코드 분석을 해보았습니다. 1. argc 즉 인자가 파일명 빼고 하나 더 있어야 합니다. 2. fd라는 변수에 atoi()로 argv[1]을 받아 정수형으로 반환하고 0x1234를 뺀 뒤 저장합니다. 3. len 변수에 read()의 return 값을 저장합니다. 4. re..