달력

5

« 2024/5 »

  • 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

'input'에 해당되는 글 1

  1. 2017.07.09 [문제풀이] pwnable.kr - input
2017. 7. 9. 15:10

[문제풀이] pwnable.kr - input Wargames/pwnable.kr2017. 7. 9. 15:10








이 문제는 문제풀이를 바로 들어가는 게 설명하기가 더 쉬울 것 같다. 


문제의 요지는 프로그램에 다양한 방법으로 입력 값을 전달하는 방법을 알고있는지에 대해 물어보는 것이다. 

하나씩 나열해보자면 아래와 같다. 

 

1. 메인함수 파라미터로 전달

2. 파일 디스크립터를 이용한 전달 

3. 환경변수를 통한 전달

4. 파일을 통한 전달

5. 네트워크 통신을 통한 전달 


부분적으로 하나씩 알아보자. 


[문제]

위는 메인함수의 파라미터로 전달된 파라미터 중 'A' 번째와 'B' 번째의 값을 비교하는 것이다. 

이는 아래와 같은 방법으로 우회할 수 있다. 


[해답]


위 코드는 파라미터에 요구된 값을 설정하는 부분이다. 

그 다음 문제를 확인해보자. 순착적으로 위에서 언급한 2번과 3번 문제에 해당한다. 


[문제]



여기에는 파이프 함수를 이용하여 파일 디스크립터 쌍을 생성하고 쓰기 파일디스크립터에 문제에서 제시한 값을 작성하고 읽기 파일디스크립터를 문제에서 제시한 0, 2 파일디스크립터로 각각 변경해주는 것이다. 

이는 아래와 같다. 


[해답]


그리고 환경 변수 값을 설정해준 뒤 부모 프로세스에서 문제의 프로그램을 execve 함수를 사용하여 호출한다.


이어서 파일에 값이 존재하는지 비교하는 함수가 존재한다.


[문제]


이는 간단히 파일 쓰기로 우회가 가능하다.

[해답]


그리고 마지막 문제는 소켓 통신 관련 문제이다. 

[문제]


이 문제는 소켓 프로그래밍을 이용하여 오픈된 포트로 접근한 뒤 요구하는 값을 전달해주면 된다. 단 여기서 포트로 사용되는 값은 최초 메인 함수에 전달된 값 중 'C' 번째에 전달된 값을 기반으로 생성된다. 


[해결]


흐름을 잘 조합하면 해당 문제가 클리어될 것이다. 


문제풀이 끝!!!



프로세스에 다양한 방법으로 입력 값을 전달하는 방법에 대해 알아볼 수 있었다.  :)





Reference

[1] Pwnable.kr - input, https://werewblog.wordpress.com/2016/01/11/pwnable-kr-input/

'Wargames > pwnable.kr' 카테고리의 다른 글

[문제풀이] pwnable.kr - unlink  (0) 2017.07.09
[문제풀이] pwnable.kr - uaf  (0) 2017.07.09
[문제풀이] pwnable.kr - mistake  (0) 2017.07.09
[문제풀이] pwnable.kr - leg  (0) 2017.07.09
[문제풀이] pwnable.kr - passcode  (0) 2017.07.09
:
Posted by einai