-
level 19. 풀이System hacking training/Hackerschool F.T.Z 2018. 1. 6. 20:52
all clear 까지 얼마 안남았네용 ㅎ 풀이 시작합니다. 로그인 후 힌트파일을 열어보면 이와 같은 소스코드가 출력됩니다. 기존 문제와 다른 부분은 setreuid()함수가 없는것입니다. 하지만 ls -al attackme 로 attackme의 권한을 확인해 보면 이렇게 setuid가 걸려있는것을 확인 할 수 있습니다. 또한 gets()함수에서 문자열의 길이를 지정하지 않는점을 이용하여 bof 공격을 할 수 있습니다. 스택구조를 확인하기 위해 gdb로 disassemble 해보면 힌트파일의 소스코드와는 다른 40을 할당한것을 알 수 있습니다. dummy 값이 20이 들어간것이죠. 이제 공격 시나리오를 생각해보면 의미 없는 값을 40바이트로 dummy와 버퍼를 덮어고, SFP 를 4바이트로 덮고, 마지막..
-
1026번 보물 풀이Programming/[BAEKJOON] acmicpc 2018. 1. 3. 06:03
1026번 보물 풀이 시작합니다. 문제는 이러합니다. 이 문제의 정답 비율이 60%가 넘는다는 사실을 잊고 너무 어렵게 생각을 해서..시간을 낭비했습니다ㅠ [힌트]중요한건 어렵게 생각하지 않는것인것 같습니다. ㅎ 문제의 요지는 단순하게 A를 재배열하고, B를 재배열하면 안됩니다. 이 문제에서는 단순히 입력을 받는 B배열을 재배열하면 틀리게끔 해놓은것 같습니다. 그렇다면 정말 단순하지만 B의 배열에 있는 원소를 고대로! 다른 배열을 만들어 그 배열에 똑같이 넣어주고 정렬하면 되겠죠? 정렬은 A배열은 작은수 순서대로, B는 큰수 순서대로 정렬해주면 문제가 요구한 정답이 나오게됩니다. 네 그러면 됩니다. ㅎ 풀이 공개합니다. [풀이 소스코드] #include int main(){int input,i,j,tmp..
-
1037번 약수 풀이Programming/[BAEKJOON] acmicpc 2018. 1. 2. 01:25
4시간 삽질을 해버렸네요... [문제] [풀이] #include int main(void){int input,i,j,temp;scanf("%d",&input);int arr[input];for(i = 0; i arr[j+1]){temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}printf("%d",arr[0] * arr[input-1]);return 0;} 허무하지만 예외처리 필요없고 정렬 잘해서 첫번째 값과 마지막 값 곱해주면 됩니다. ㅠㅋㅋㅋ 그리고 혹시 이 문제를 푸신 분..
-
백준 1037번 약수tmp/[?] trouble [!] 2018. 1. 2. 01:02
[풀이를 위한 소스코드 작성] [소스코드] #include int main(void){int input,i,j,temp,result;scanf("%d",&input);int arr[input];if(input == 0)return 0;else if(input == 1){scanf("%d",&input);printf("%d",input);}else if(input >= 2){for(i = 0; i arr[j+1]){temp = arr[j]; arr[j] = arr..
-
1002번 터렛 풀이Programming/[BAEKJOON] acmicpc 2017. 12. 30. 18:11
이 문제를 풀기 위해 꼬박 하루가 걸렸네요. 풀이를 한 후 맞으면 성취감이 너무 크네욯ㅎㅎㅎ 문제는 이러합니다. 문제 풀이를 위해 r을 반지름으로 생각하시면 문제에 대한 이해는 가능합니다. 좌표를 그려보고 원의 접점을 확인해보고, 접점이 어떻게해야 나오는지(두 점 사이의 거리와 반지름의 관계)를 파악한다면 코딩은 쉽습니다. 바로 풀이한 소스를 공개합니다. [답안] #include #include int func(int x1, int y1, int r1, int x2, int y2, int r2);int main(void){int input;int i;int x1,y1,r1,x2,y2,r2;scanf("%d",&input);int result[input];for(i = 0; i < input; i++){s..
-
[BAEKJOON] 1008번 출력 결과tmp/[?] trouble [!] 2017. 12. 27. 23:39
문제풀이를 위해 컴파일을 하였고 원래의 정답 출력 결과였다면 0.33333333333333333333333.. 이렇게 3의 연속이여야했다. 하지만 중간에 보다시피 1과 0이 있다. 그리하여 구글을 통해 알아본 결과 소수점은 원래 10자리 정도로 늘려서 출력을 시키면 소수점이 정확하게 나오지 않는다고 한다. 이유는 컴퓨터가 2진수 (0,1)로 구성되어 있어 소수점인 10진수를 정확하게 표현할 수 없기 때문이라네용 저 코드를 그대로 복사해서 제출하니.. 정답으로 채점이 되었습니다.ㅎㅎ https://dojang.io/mod/page/view.php?id=738 여기 url 타고 가시면 이에 대한 내용이 있습니당~!
-
1008번 A/B 풀이Programming/[BAEKJOON] acmicpc 2017. 12. 27. 23:18
오늘부터 코딩문제를 풀기로 하였습니다. 해킹 원리를 학습함에 있어서 프로그래밍 능력이 필수적이라고 생각합니다. 아주 어처구니 없는 문제부터 시작하겠지만 저에게는 10문제 빼고는 다 어려울듯 싶습니다. ㅠ.ㅠ 그럼 허접한 풀이를 시작합니다. 이렇게 문제가 주어졌습니다. 간단하쥬? [답안] 바로 공개합니다. ㅎㅎ 아 물론 제가 쓴 답안입니다. ㅎㅎㅎㅎㅎ [답안] #include int main(void){double i,j;scanf("%lf %lf",&i,&j);printf("%.30f",i/j); return 0;} 의외로 이 문제의 정답비율이 낮더라구요. 저도 생각해내는데 있어 조금 시간이 걸렸지만 기초가 튼튼하신 여러분은 실패없이 풀이 하셨을것이라 믿습니다. 중요한 부분은 빨간색을 해놨습니다. 피연산..
-
level 18. 풀이System hacking training/Hackerschool F.T.Z 2017. 12. 24. 20:40
안녕하세요 살충제입니다. 오랜만에 f.t.z를 풀어보네요.. 시험기간+프로젝트+발표준비로 너무 바쁜 하루를 보내왔습니다.ㅎㅎ 시험은 끝났지만 여전히 바쁘네요..ㅠ_ㅠ 아무튼 오늘 level 18을 풀이해보았는데요. 풀이를 시작합니다. ^____________^ 로그인 후 hint 파일을 열어보시면.. 소스코드가 아주 길게 나옵니다.....ㅎ #include #include #include #include void shellout(void);int main(){ char string[100]; int check; int x = 0; int count = 0; fd_set fds;-> 구조체/FD == 파일 디스크립터의 줄임 표현 printf("Enter your command: "); fflush(stdo..