mgchem's log
article thumbnail
Lab2: Bomblab (phase 2)
Study/CS 2023. 10. 8. 01:46

Overview (gdb) disas phase_2 phase_2 함수의 구성을 살펴보자. Disassembled code를 보고 대략적인 흐름을 파악한다. 1. 0x132d에서 read_six_numbers 함수를 call한다. 숫자 6개를 입력하면 될 것이고, 실질적으로 우리가 집중해서 봐야 할 부분은 입력값을 받은 이 이후가 될 것이다. 2. stack의 가장 앞에 저장된 값이 1 이하면 폭탄이 터진다. 3. 0x1349 ~ 0x1361은 loop이다. 4. %rbx는 index로 초기값은 0x1338에서 1로 주어졌다. stack 내에 저장된 값(아마 우리가 입력한 숫자 6개?)과 loop 내 과정을 통해 만들어진 %eax에 저장된 값을 비교하여 다를 경우 0x1363으로 넘어가 폭탄이 터진다. ..

article thumbnail
Lab2: Bomblab (phase 1)
Study/CS 2023. 10. 7. 13:00

Bomblab bomb-quiet를 해결했으니 이제 본게임으로. Bomblab은 phase 1 ~ phase 6 (+secret phase?) 로 구성되어 있다. 전체 코드를 disassemble하여 읽어보기에는 너무 길기에, gdb를 실행하고 disas phase_1처럼 특정 함수 부분만 disassemble하여 살펴보는 편이 효율적이다. Defusing phase 1 phase_1 처음부터 한 줄씩 실행시키기 위해 phase_1에 breakpoint를 설정한다. phase 1을 해결하면 바로 phase 2로 넘어갈테니 혹시나 실수로 터뜨리는 일을 방지하기 위해 phase_2와 explode_bomb에도 break를 걸어준다. strings_not_equal로 가기 전 0x12f8에서는 %rsi에 0x..

article thumbnail
Lab2: Bomblab (bomb-quiet)
Study/CS 2023. 10. 7. 05:04

Bomblab 시스템프로그래밍 Lab2 Bomblab이 나왔다. 나온지는 지난 9/26부터 시작하여 열흘도 넘었지만 ... 어셈블리어 해석과 gdb 사용이 처음인터라 익숙해지는데 오래도 걸렸다. 학생이 본인의 학번과 이메일 주소를 입력하여 bomb 파일을 요청하면 bomb1, bomb2, bomb3, ... 순으로 배정되는 방식이었다. 직전 과제였던 Lab1: Datalab 제출 마감된 날에 바로 열렸던 것으로 기억하는데, 나는 공지 올라오자마자 배정받았지만 도무지 진도가 나가질 않았다. datalab에서 skeleton code에 내용을 채워넣던 것을 생각하던 내겐 굉장히 당황스러운 과제였다. 배정받은 binary 형식 bomb 파일은 phase_1 ~ phase_6 (+secret phase)로 구성..