시스템 해킹(22)
-
pwnable.kr [collision] writeup
안녕하세요!오늘은 pwnable.krcollision 문제를 풀어보도록 하겠습니다! 소스코드는 아래와 같습니다! 제일 위에hashcode라는 변수에 0x21DD09EC라는 값이 담겨있네요! 그리고 check_password라는 함수가 있습니다!인자로는 char형의 포인터가 들어갑니다!근데 이후에 바로 이 포인터가 형 변환이 일어납니다! char 형의 포인터에서 int형의 포인터로 말이죠!char* p -> int * p(이 바뀌는 부분이 끼칠 영향은 아래에서 더욱 자세하게 설명드릴게요) 왜냐하면 (int*)p라고 되어있잖아요!그리고 이 변환된 pointer는 ip의 포인터에 담기게 됩니다! 그리고 i라는 변수가 선언되고res라는 변수도 0으로 선언과 동시에 초기화가 됩니다 그리고 5번 for문을 돕니다!..
2019.05.02 -
pwnable.kr [bof] writeup
안녕하세요!오늘은 pwnable.krbof 문제를 풀어보도록 하겠습니다! 문제에 있는소스코드는 아래와 같습니다! 맨 위에 func이라는 함수가 보이네요!func의 인자로 key라는 인자가 들어갑니다! 그리고 overflowme[32]라는 건방진?! 버퍼가 있구요gets함수로(취약한 함수)overflowme 버퍼에 값을 씁니다! 주석에도 smash me라고 나와있듯,gets 함수가 얼만큼 받을지길이 제한이 안되기 때문에, 저희가 원하는 만큼 덮어 쓸 수 있습니다! 그리고 if 문으로key 값이 cafebabe가 되었는지확인을 합니다! cafebebe인 경우 shell이 획득되며, cafebabe를 제외한 모든 값들은모두 nah...(아니야..)를출력하게 됩니다 main함수를 보니fun함수에 0xdeadbe..
2019.05.01 -
ROP (64byte) 문제 4번
안녕하세요!오늘은 ROP 64byte문제 4번을 풀어보도록 하겠습니다!파일은 제가 위에 놓도록 하겠습니다! 코드를 보니 지난 3번 문제와 달라진 게 있죠? 3번 문제에선 맨처음에 /bin/sh 문자열을 가진sh[ ] 배열이 있었는데이번 문제는 /bin/sh 문자열이 사라졌습니다! 바로 nothing 함수가 있네요!asm volatile 함수는 제가 3번 문제에서 알려드렸듯이,c언어에서 aseembly 코딩을 할 때 쓰는 함수 입니다! 그리고 vuln 함수는3번 문제와 똑같네요! 버퍼는 16byte만 선언되었는데,read 함수로 읽어오는 byte가 무려 256byte나 읽어오네요! 3번과 마찬가지로 버퍼 overflow 문제인데요! 달라진 점은 (1) /bin/sh가 없다는 것과!(2) asm volati..
2019.04.27 -
ROP (64byte) 문제 3번
안녕하세요!오늘은 rop 64byte3번째 문제를 풀어보도록 할게요! 해당 문제는 제가 위에 올려놓았습니다!코드는 아래와 같습니다! char형의 배열 sh에는 "/bin/sh" 문자열이들어가있네요! 당연히 이를 활용하라고 던져준거겠죠? 그 밑에 nothing 이라는 함수가 있는데asm volatile("~~~~~~~ ") 이런 형식으로 적혀있죠? asm volatile( )은 c언어에서 assembly 코딩을 할 때쓰이는 함수에요! 그냥 push %rdi pop %rdi ret 이 3 가지 어셈블리 명령어가 실행된다고 보시면 되요!(당연히 이것도 활용을 하라는 것이겠죠?) 그리고 vuln( ) 함수가 있습니다!함수 안을 살펴보니buf가 16바이트이고system함수에서 echo(출력해라) "INPUT: "..
2019.04.26 -
[어설픈] 해커스쿨 FTZ Level 19 문제풀이(late upload)
안녕하세요!오늘도 까먹고 늦게 올린FTZ 문제 19번을 풀어보도록 할게요! 문제는 아래와 같이 더럽게 simple 합니다! main에 buf[20] 만큼 선언하고!gets함수로 overflow가 일어나게끔 해놓죠! 저도 맨 처음에 신나서 문제 풀었습니다! 근데... 문제를 풀어도 권한 상승이 일어나지 않고계속 level19의 권한이길래이상했습니다! 그리고 왜 이러지..?생각을 하고 다른 문제와 비교해보니!하나가 빠져있었습니다! 직전 문제에서 shellout( )함수 코드를 봐도setreuid(3099,3099)가 있었죠? setreuid( id 숫자 , id 숫자)함수를 이용하여 다음레벨로 권한상승을 시킨 후에쉘을 시켜야 저희가 원하는 문제가 풀리는 겁니다! 처음에 저는 그래서execve 함수를 이용해서..
2019.04.18 -
[어설픈] 해커스쿨 FTZ Level 18 문제풀이(late upload)
안녕하세요!올린다는 걸 깜빡하고이제서야 늦게 올립니다! 오늘은 FTZ level18번 문제를 풀어보겠습니다! main에 변수들도 많이 선언되어있고!코드도 상당히 기네요! 우선 변수들 먼저 볼까요?char형의 string이 제일 먼저 선언되어있네요!그 다음에 check 변수, x변수, count 변수, fd_set 구조체의 fds 하나많이도 선언되어 있네요! 다음으로, 밑에 이제 함수들을 보면!printf로 command를 입력하라는 문장을 출력하고stdout과 관련된(저희가 입력할 때 쓰는 stdin과 반대) 출력 버퍼를 fflush함수로 청소하네요!fflush는 버퍼를 클리닝, 초기화하는 함수입니다! 그리고 while(1)이니 무한 반복인 상태가 되는데어떤 함수들이 계속 실행 되는지 볼까요? 제일 먼저..
2019.04.16