본문 바로가기
반응형

c언어5

[BOJ/백준 알고리즘] 5596 시험 점수 Baekjoon Online Judge 문제를 풀어보자! 첫 문제는 아주 간단한 문제 입니다. 시험 점수 성공출처다국어분류 한국어 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초 128 MB 3900 3215 3026 83.823% 문제 대한고등학교에 재학 중인 민국이와 만세는 4과목(정보, 수학, 과학, 영어)에 대한 시험을 봤습니다. 민국이와 만세가 본 4과목의 점수를 입력하면, 민국이의 총점 S와 만세의 총점 T 중에서 큰 점수를 출력하는 프로그램을 작성하세요. 다만, 서로 동점일 때는 민국이의 총점 S를 출력하세요. 입력 입력은 2줄로 이루어져 있습니다. 1번째 줄에는 순서대로 민국이의 정보, 수학, 과학, 영어 점수(정수형)를 입력하는데, 이때 공백을 끊어서 구분합니다. 2번째 줄에는 마찬.. 2021. 1. 15.
[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.
반응형