Be myself :: Be myself

달력

32024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

peda 설치법

Reversing 2014. 10. 17. 17:34

gdb와 연계되는 peda 프레임워크 설치법이다.

gdb가 python 3.0이상버전과 연계되어 있으면 오류가 뜬다. 그래서 2점대 버전으로 gdb degrade 해야 하는데 이 때 방법은 다음과 같다.

1. synaptic packge manager 설치

2. 저장소에 다음 추가  deb http://kr.archive.ubuntu.com/ubuntu/ precise main (12.04의 저장소이다.)

3. 시냅틱 새로고침 후 gdb 검색하고 force version 메뉴 선택후 설치

4. echo "source ~/peda/peda.py" >> ~/.gdbinit

끝.

peda 설치는 다음에서 할 수 있다.

https://github.com/longld/peda

'Reversing' 카테고리의 다른 글

elf DWARF관련..  (0) 2015.05.08
vmware 디버깅  (0) 2015.01.28
지뢰 찾기 핵  (1) 2014.07.29
치트엔진을 활용한 환세취호전 핵  (2) 2014.07.28
DLL Injection  (1) 2014.05.17
Posted by flack3r
|

codegate 2014 4stone

Wargame 2014. 10. 17. 12:43


이 문제를 풀면서 got와 Plt사이의 관계에 대해 확실히 알게 되었다. 처음 GOT를 참고 할 때 _dl_runtime_resolve () 함수가 호출되지 않았기 때문에 GOT는 PLT의 다음주소를 가르키고 있다. 그 후 _dl_runtime_resolve()함수에 의해 라이브러리의 base주소를 얻어 오고 그 다음 오프셋을 더해 해당하는 함수의 주소 값을 받아 온다. 따라서 해당 라이브러리의 image base를 조작할 수 있다면 호출되는 함수의 주소 값 또한 변조되어 우리가 원하는 함수나 쉘을 실행 시킬수 있게 되는 것이다.
일단 문제를 보자.

게임에서 이기면 argv[1]에서 값을 가져와 이 값이 0x804 혹은 0xB로 시작이 되지 않으면 argv[1]에 해당하는 주소값에 4바이트 입력 값을 쓰는 문제이다. 일단 GOT 주소나 ret를 변조 할 수 없기 때문에 GOT의 함수 주소를 불러 올 때 사용되는 _dl_runtime_resolve ()함수에서 라이브러리의 base주소를 변조해서 쉘을 떨어뜨리는 방향으로 가자.


Dl_runtime_resolve함수의 전체이다. 여기서 _dl_fixup함수가 호출 된 이후를 보자.

호출된 직후 레지터터 상태를 보면 eax에 이미 exit함수의 주소가 찍혀있는 것을 볼 수 있다. 그렇다면 _dl_fixup함수를 살펴 보자.

위에 보이듯이 0x40071000에서 값을 받아 와서 거기에 0x2d1a만큼 더한 곳의 주소 값을 eax에 넣고 있다. 즉 호출되는 exit함수의 주소 값이 저렇게 결정된다는 것이다.
그렇다면 우린 0x40071000의 주소에 우리가 원하는 쉘코드 주소 – 0x2d1a 의 값을 써주면 쉘이 떨어 진다.

'Wargame' 카테고리의 다른 글

[pwnable.kr] tiny  (0) 2014.11.15
webhacking.kr 23  (6) 2014.11.13
bashshock~~!!  (0) 2014.10.13
[pwnable.kr]brain_fuck  (0) 2014.09.27
[pwnable.kr]input  (0) 2014.09.26
Posted by flack3r
|

bashshock~~!!

2014. 10. 13. 15:46

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.