System Hacking(48)
-
[디버거] PEDA, PWNDBG,gef 설정방법! (feat. gdbinit)
안녕하세요, 오랜만에 포스팅 하네요! 비오비에서 공부하느라 블로그에 소홀했네요.. 될때마다 틈틈히 올리도록 하겠습니다. 각설하고 오늘 포스팅 할 내용은, pwnable 할 때 쓰는 다양한 디버거를 어떻게 동시에 쓰냐! 에 관한 것입니다 저희가 CTF나 문제 풀때 gdb-peda, pwndbg, gef등 다양하게 디버깅 툴이 존재하고, 각각의 장점이 모두 있죠? 근데 사이트 찾아보면 다 이렇게 나오더라구요 너무 막 어렵게 나와서..... 저는 간단하게 알려드리겠습니다! -------------------------------------------------------------------------------------------------------------------------------- 준비물은 ..
2019.09.18 -
pwnable.kr [random] writeup
안녕하세요!오늘은 pwnable.kr random문제를풀어보도록 하겠습니다! 소스코드는 아래와 같습니다! 문제 제목에서부터 random이라고 명시해놨으니,random 한 것과 관련이 있는 문제겠죠? 우선 코드를 쭉 보고 어디가 취약한지 분석해보도록 하겠습니다! 맨 위에 random이라는 변수가 선언이 되었구요,random이라는 변수에 rand( )함수를 이용해서 값을 넣습니다!(랜덤한 값이겠죠..?) 그 다음에 key 변수를 선언하고 0으로 초기화 합니다!그다음에 이 key 값에scanf함수를 통해서 사용자에게 입력을 받아서key값에 기록합니다! 그리고 이 key에 적힌 값과 random에 적힌 값을 ^연산해서 (xor 연산)0xdeadbeef가 나오면문제가 풀리게됩니다! xor연산 : 두 값이 같으면 ..
2019.05.03 -
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 -
pwnable.kr [fd] writeup
안녕하세요!오늘은 pwnable.kr첫 번째 문제인 fd를 풀어보도록 하겠습니다! 문제를 클릭하면 아래와 같이 창이 뜹니다!그리고 리눅스를 키셔서 ssh fd@pwnable.kr -p2222를 복사, 붙여넣기 하시고 입력창에 guest라고 치시면!문제가 있는 폴더로 이동 되실겁니다! 이렇게 ls 명령어를 통해서fd 실행 파일과 fd 소스코드를 확인 할 수 있구요!flag 도 있네요!(물론 접근 권한은 없습니다..) 소스코드는 아래와 같습니다! 맨 위에 전역변수로 buf[32]가 선언되어있네요! 일단은 main에 인자가 argc랑 char* argv[ ]가 있는 걸보니input 방식이 argv 인 것 같네요! 그리고 argument가 2개보다 작으면안되구요!return 0; 하죠? 그리고 이제 fd라는 변..
2019.04.29 -
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