System Hacking(48)
-
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 -
ROP (64byte) 문제 2번
안녕하세요!오늘은 ROP 64bit 2번 문제를 풀어보도록 하겠습니다!파일은 위에 있습니다! 소스코드는 1번문제와 크게 달라진 것은 없습니다!vuln 함수는 여전히 버퍼 크기가 16byte인데256 byte를 읽어서 오버플로우가 일어나고 저희는 run 함수로 return 합니다!근데 run 함수에 이번에는 인자 arg가 있네요!arg의 값이 0x31337이여야 쉘이 따지네요! payload를 작성하기 전에checksec 명령어를 통해서 prob2 파일의 보호기법을 확인해보겠습니다! 근데 1번과 같이Partial RELRO (GOT overwrite 가능)Canary X (canary 기법 없음) NX enabled (스택의 실행권한 없음)NO PIE (바이너리 영역을 랜덤하게 배치) 보호기법은 똑같이 걸..
2019.04.24 -
ROP (64byte) 문제 1번
안녕하세요!오늘은 ROP(Return Oriented Programming)에 대해서알아보도록 할게요! 64bit의 ROP는32bit의 ROP와 방법이 조금 달라서문제를 통해서 알려드릴려고 해요!(이번 문제는 32bit 방식으로도 풀려요) 문제 파일은 제가 여기에 업로드 해놓았습니다!리눅스에서 wget명령어로 다운받으시면 됩니다!소스코드는 아래와 같아요! 되게 간단하죠? run이라는 함수가 불러지면system("/bin/sh") => 쉘을 시켜주는 놈알아서 쉘이 떨궈지죠? vuln 함수는buf에 16byte만 선언했는데!read 함수로 256byte을 읽어오니당연히 overflow가 발생하겠죠?main 함수에서 vuln 함수를 call 하고요! 어떻게 exploit 하실지 보이시나요? 일단 리눅스에서 아..
2019.04.22 -
[어설픈] 공주대학교 wargame pwnable 1 문제풀이
안녕하세요!오늘은 http://wargame_sec.kongju.ac.kr에 있는pwnable1 100점짜리 문제를풀어보도록 하겠습니다! 문제에 접속하면 아래와 같이 뜹니다!그래서 download를 하여서 바이너리를 다운로드 받을 수 있습니다! 그래서 바이너리를 다운로드 한 후에!IDA를 통해서 아래와 같이 열어주면! 변수가 상당히 많이 있네요!char 형 변수가 s1 부터 v5, v6 ,v7 ....(이후 생략) 그리고 각각의 변수에숫자가 입력이 알아서 되네요! v16까지 숫자가 잘 들어간 다음에! Input password: 라는 문장을 printf 함수를 통해서 출력하네요!그리고 scanf로 s2 변수에 값을 입력합니다! 그리고 strcmp을 통해서 s1과 s2의 값이 같지 않으면!wrong이라고 ..
2019.04.20 -
[어설픈] 해커스쿨 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