본문 바로가기
반응형

pwnable.kr/[Toddler's Bottle]3

[pwnable.kr Toddler's Bottle] bof - write up 버퍼오버플로우에 대한 문제인 것 같다. 하지만 이전과의 문제와는 다르게, bof파일과 bof.c파일이 따로있고 Running at이 있는 걸로 보아 소스코드와 실행파일로 문제를 해결하고 그 값을 저기 nc로 던져주면 문제가 해결 될 것으로 보인다. 그럼 소스코드를 먼저 보도록 하자. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xd.. 2020. 3. 26.
[pwnable.kr Toddler's Bottle] collision - write up Proble 이번 문제를 보면, 해시코드의 충돌에 관한 내용인가? 라고 생각하고 MD5 즉 MD5는 128비트 암호화 해시 함수이다. 이런 걸 먼저 생각하고 col.c 를 열어보았다. hashcode와, check_password가 같으면 문제가 해결 되는 것으로 보인다. 그렇다면, hashcode와 check_password 함수를 살펴보자 총 5번의 반복이 돌아가고, 사용자가 입력한 20바이트를 4바이트 단위로 5번 읽어들인다고 생각하면 될 것 같다. 그 값이 res에 저장이 되고, 값이 같으면 해결이 되는데, 그렇다면 hashcode 값을 5번 나눠보자 그럼 0x6C5CEC8이 나온다. 확인을 위해 이 값이 다시 5를 곱해본다. 0x21DD09E8 0x21DD09EC 로 값이 서로 다르다. 그렇다면.. 2020. 3. 25.
[pwnable.kr Toddler's Bottle] fd - write up Problem 해당 ssh에 접속해 file descriptor 문제를 푸는 것 같다. fd 실행파일에, setid가 걸린 것을 확인 할 수 있다. 그럼 fd를 실행 시키면 루트 권한을 일시적으로 얻을 수 있다. 그럼 먼저 fd.c 소스 코드를 먼저 확인 해보도록 하자. atoi함수는, 성공하면 문자열을 정수로 바꾸고 실패하면 0을 반환하는 함수이다. 0x1234는 10진수로 4660이며 결국 argv[1] - 4660이 됩니다. 함수 read에 인자 값을 0으로 주면, 표준 입력이 가능하기 때문에 인자 값으로 4660으로 하고 난 후, LETMEWIN을 입력하면 문제가 해결 될 것이라고 판단했습니다. 2020. 3. 24.
반응형