2012-10-13 2 views
4

교육 이유는 내가 programm에 먼저 EGID 다음 system("/usr/bin/..."); 명령과 취약점을 세트 C-코드C : IFS 시스템() 취약점

이용해야합니다. , export IFS='/'

Unfortunatelly :

그래서 난 내 홈 디렉토리에 'USR'하는 실행 파일을 만들어 홈 PATH=$HOME:$PATH

에 경로를 설정하고 난 /로 떠들썩한 파티에서 IFS 변수를 변경하려면 내가 C-Programm이라고 불렀을 때 : 나의 악용은 효과가 없다.

아무도 나에게 무엇이 잘못 됐는지 말할 수 있는가?

+0

스택 오버플로에 오신 것을 환영합니다. 이것은 SSCCE ([짧은, 자체 포함, 올바른 (컴파일) 예제] (http://sscce.org/))로 시도한 것을 보여야하는 상황 중 하나이며, 질문에 약간의 노력을 기울이면서 우리가하는 일을 볼 수있게 해줍니다. 곧 [자주 묻는 질문]을 읽어주십시오. –

답변

3

저는 현재 같은 문제에 직면하고 있기 때문에 같은 대학에서 공부하고 있다고 가정합니다. 너무 쉽기 때문에 전체 솔루션을 제공하고 싶지는 않습니다.)

IFS 변수는 무시되지 않지만 생각했던대로 작동하지 않습니다. C-Programm을 호출하면 lesspipe를 가리키는 쉘에 추가 출력이 있습니다. this linkand this german link의 정보를 사용하면 challenge1을 해결할 수 있습니다.)

+0

하나의 취약점이 있습니까? 나는 cat.c의 취약점을 보지 못한다. – Lichtamberg

+0

나는 정말로 그다지 .. 나는 너와 똑같은 일을하고 싶어한다. ... – Lichtamberg

+1

고양이의 예는 PATH 변수에 항목을 추가하면 쉽게 해결할 수있다. – boindiil

4

프로그램 호출의 일부로 IFS를 system()에 추가하십시오. 시스템은 /usr/bin/sh -c으로 코드를 실행합니다. 따라서 쉘 프롬프트에서와 비슷한 작업을 수행 할 수 있습니다.

system("export IFS='/'; /usr/bin/cmd"); 

일단 하위 프로세스가 종료되면 IFS 세트를 더 이상 부모에서 사용할 수 없습니다.

+0

시스템 명령에서 문자열을 변경할 수 없습니다. 나는 그것을 이용해야만한다. 그래서 주어진 시스템 ("/ usr/bin/...")이 my usr 실행 파일로 리디렉션되기를 원합니다. 비슷한 방식으로 시스템의 상대 경로 ("./ myProg")에서 작동합니다. IFS 변수를 변경해야합니다.이 경우에도이 작업을 수행 할 수 있습니까? 내가 잘못? – nikmaster

+0

전체 코드를 게시 할 수 있습니까? 정확히 무엇을 달성하기를 원하십니까? –