전체 글

코딩테스트/HackerRank

Hackerrank-Staircase

https://www.hackerrank.com/challenges/staircase/problem Staircase | HackerRank Print a right-aligned staircase with n steps. www.hackerrank.com sample input과 output 과 같이 값을 입력하면 그에 맞게 계단이 나타나면 된다. 6을 입력하면 6개의 계단이 나타나는 것이다. 계단을 출력하는 함수 각 계단에서 맨 앞에서 빈칸이 출력되어야 하니 빈칸 부터 출력하도록 한다. j=0부터 n-1-i전까지 빈칸을 출력한다. n-1-i개 만큼 빈칸이 출력되는 것이다. 그리고 k가 0부터 i까지 #을 출력을 한다. 즉 i+1개 만큼 #이 출력이 된다. 이런식으로 코드를 짜면 계단을 만들 수 있다.

System Hacking

TAMU CTF 2018 pwn3

파일을 실행해보자 뭔가가 계속 변한다. IDA로 수도코드를 확인하자 main함수에서 echo함수를 호출하고 echo함수에서 gets를 통해 s를 입력받고 s의 주소값을 출력한다. 위의 실행결과와 코드를 합쳐서 보았을때 s의 주소값이 계속 변하는 것을 알 수 있다. s의 크기는 238바이트이다. echo를 disas해서 살펴보면 버퍼의 크기가 0xee인 것을 확인할 수 있다. 이것은 s의 크기이고 따라서 dummy 값이 없음을 알 수 있다. (다른 방법) bp1 : echo 함수의 첫번째 명령어 - 최상위 스택의 주소를 구할 수 있고 여기에 return address가 들어있음 bp2 : gets함수를 호출하는 call명령어 - s 주소를 구할 수 있음 bp1에서 구한 주소값은 0xffffd03c이고 bp..

System Hacking

HITCON-Training lab3 ret2sc

ret2sc를 실행시켜 보자 이름을 입력받고 최선을 다하라고 한다. 보호기법이 무엇이 있는지 확인해보자 깔끔하다 이제 IDA로 뜯어보자 s의 크기는 ebp-14h로 알수 있다. 즉, s의 크기는 20바이트이다. name의 경우에는 read함수를 통해 50바이트까지 입력받을 수 있다. 그리고 gets함수를 통해 s에 길이 상관 없이 입력받을 수 있다. 여기서 취약점이 발생할 수 있다. name의 주소를 살펴보자 전역변수 name의 주소값은 0x0804A060이다. name변수에는 shellcode를 저장하고 gets함수로 payload를 전달해서 return address 영역에 &name을 저장하면 ret 명령어를 통해 쉘코드를 실행할 수 있다. main함수의 첫번째 명령어는 0x080484cd이고 이는..

코딩테스트/HackerRank

Hackerrank-Recursive Digit Sum

Recursive Digit Sum - https://www.hackerrank.com/challenges/recursive-digit-sum/problem Recursive Digit Sum | HackerRank recursively sum all digits in a number until there is only one left www.hackerrank.com 파라미터로 전달받는 숫자를 각 자리마다 더해서 일의 자리가 될 때 return 하는 함수를 만들면 된다. n=148, k=3일때를 예시로 들어보자. n은 파라미터로 전달하는 숫자이고 이를 k번 곱하면 P가 된다. 즉, P는 148148148이 된다. super_digit(P) = super_digit(148148148) = super_di..

System Hacking

HackCTF - 내 버퍼가 넘쳐흐른다!

prob1 파일을 다운받고 실행을 시켜보자 허가 거부라 뜬다. ls -al로 확인을 해보니 실행권한이 없는 것을 알 수 있다. 따라서 파일에 접근 권한을 주기 위해 chmod를 사용하였다. chmod는 기존 파일 또는 디렉토리에 대한 접근 권한(파일 모드)을 변경할 때 사용되고 root에서 사용할 수 있다. chmod +x prob1을 통해 prob1 파일에 실행권한을 부여하자 다시 ls -al을 통해 확인하자 (위에 보다 시간이 더 빠른 이유는 처음에 ls -al로 확인하지 않고 실행권한을 부여해서 다시 다운받아서 해서 그렇습니다.) user(파일의 소유자)는 rwx접근권한을 가지게 되고, 이는 group도 마찬가지이다. others는 r과 x만 가능하다. 즉, 실행권한이 모두 다 부여된 것을 확인할 ..

System Hacking

Pwntools 설치와 사용법

Pwntools Gallospled 팀이 개발한 파이썬 익스플로잇 프레임워크로, 익스플로잇을 할 때 유용한 여러 기능들을 제공해 준다 설치 $ apt-get update $ apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential $ pip install --upgrade pip $ pip install --upgrade pwntools 사용법 1. Connection remote 원격 서비에 접속하여 통신할 때 사용되는 클래스 p = remote("127.0.0.1", 5000) 위 코드는 127.0.0.1 주소에 열려있는 5000번 포트에 TCP 연결을 맺는다. 연결이 성공적으로 맺어지면 remot..

ankisile
노는게제일좋아