본문 바로가기

CSE23

[BombLab] phase_4 해설 여러분 할 만 하신가요 지금 정말 슬프실텐데요.. 저도 작년에 밤랩 강의 들을 때 정말 슬펐어요따라오고 계신 분은 정말 잘하시고 계신거구요 아닌 분들도 좌절하지 마시길 바랍니다. 저도 1도 못따라갔었어요ㅎㅎ 그래서 그 시절을 생각하면서 최대한 교육이 끝나고도 공부를 해볼 수 있도록 최대한 열심히 쓰고 있습니다. 잘 전달되었으면 좋겠네요! 그럼 phase_4 시작하겠습니다 phase_4 disassemble phase_3과 비슷한 부분이 있다! 바로 sscanf 함수를 호출하기 전에 rsi에다가 어떤 값을 넣는 것이다. 이걸 까보면 phase_3과 마찬가지로 두 정수를 입력받고자 한다는 것을 알 수 있다. eax에는 입력받은 숫자의 갯수가 들어가니까 무조건 2이다. 그리고 0x8(%rsp)에 들어가는 값을.. 2024. 9. 9.
[BombLab] phase_3 해설 phase_3 disassemble전체 코드이다. 점점 길어진다... 우선 나는 임의로 숫자 4와 56을 입력했다. 4를 보면 함수에 파라미터로 주기 위한 부분인 rdi에 무언가 들어가는 것을 볼 수 있다. 해당 주소에 있는 값을 보면 이렇다. 이 값이 __isoc99_sscanf@plt에 들어간다는 것을 알 수 있고, 원하는 값은 정수 2개라는 것도 추측할 수 있다. 위 함수가 호출된 후 eax에는 입력받은 숫자의 갯수가 들어간다.jg는 앞에 수가 뒤에 수보다 작을 때 분기한다. 즉 eax에 있는 값이 1보다 커야한다는 것을 알 수있다. 우리는 어차피 2개의 숫자를 입력할 것이기 때문에 자연스럽게 넘어가자 39번을 보면 0x8(rsp)에 있는 값과 7을 비교하여, 7이 작으면 106번으로 분기하는 것을.. 2024. 9. 3.
[BombLab] phase_2 해설 phase_2는 6개의 숫자를 알아내야한다. phase_2 disassemble입력한 수가 들어간 레지스터 찾기phase_2를 disassemble하였다.를 보면 read_six_numbers 함수를 호출하는 것을 볼 수 있다. 근데 이번에는 굳이 저 함수를 뜯어보지 않을 것이다. 함수명으로 기능을 유추할 수 있으니까!대신 우리는 저 함수로 받은 6개의 숫자가 어느 레지스터에 들어갔는지를 알아보아야한다. 코드를 쭉 따라가보면 로 가는 것을 볼 수 있다. 부터 rsp에 있는 수를 건드는게 보인다. 이 안에 의미있는 데이터가 있는 것 같다. 그래서 우선 실행한 후 phase_2의 정답을 입력하는 부분에 아무런 6개의 숫자를 넣어본다.그 다음 ni로 까지 간다.0x4(%rsp)를 하는 것을 보니까 숫자가 .. 2024. 9. 2.
[BombLab] phase_1 해설 이제 본격적으로 문제를 풀어볼거다! 이렇게 bomb을 실행하고 r(run)명령어로 실행하면 환영 메세지가 나옵니다. 이제 이 밑에다가 phase_1의 정답을 찾아 입력하면 된다.이 때 bomb에 break 안걸고 오답을 입력하면 폭탄이 터진다! 주의!!phase_1 disassemble간단하게만 설명하자면맨 위와 아래에 sub와 add는 별 신경쓰지 않아도 된다에서 esi에 어떤 값이 들어갑니다. 이 값이 뭔지 한번 뜯어보겠다스포를 하자면 여기에는 문자열이 들어있다. 아마 모든 분들의 esi에는 문자열이 들어있을것이다 실행하면서 레지스터 값 확인하기밤랩의 핵심은 특정 instruction이 실행될 때의 레지스터값을 확인하는 것이다이를 위해서는 미리 phase_1에 breakpoint를 걸어두고 실행한 후.. 2024. 9. 2.
[BombLab] 환경설정 & 어셈블리어 서론스피지 교육의 하이라이트 밤랩교육이 다가왔다.사실 밤랩은 하다가 울뻔한 몇 안되는 과제이다. 그만큼 어렵고 낯설다. 이번 교육에서 최대한 잘 설명해보고자 노력할 것이긴 하지만 정말 어려울거다. 화이팅! 밤랩에 나오는 어셈블리어들을 전부 다 해석하는 것에는 어려움이 있다. 그래서 나는 이번에 disasemble 한 코드를 보고 어떻게 감을 잡고 정답을 유추할 수 있는지를 중심으로 알려줄 예정이다. 혹시 코드 한줄한줄을 알고싶다! 하시는 분이 계시다면https://ttl-blog.tistory.com/1009 [시스템 프로그래밍] 2022 BombLab(밤랩) 상세분석총 74장 분량이고, 전체 코드 한줄한줄 다 상세하게 적어뒀습니다. (화이팅하세요 :))ttl-blog.tistory.com갓말랑님의 블로.. 2024. 9. 1.