레벨 해킹

 2839, 1/142 회원가입  로그인  
   vngkv123
   lob gremlin....

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=3358 [복사]


gremlin에서 16 + 4 + 환경변수 쉘코드주소 4 로 코드를 짜는데

쉘코드를 export shellcode=`python -c 'print"\x90"*100+"~~"'`로 넣고

/tmp에서 getenv함수로 환경변수 주소를 불러와서 코드를 짯는데

세그먼트폴트가 뜨네용... 뭐가 잘못된걸까요

또 argv에 인자를 주는거 말고 gets나 scanf로 주는거에서

공격명령을 (python -c 'print"~~~~"'; cat) | ~~~
이런식으로 뒤에 cat을 붙이던데 왜 붙이는건가요?

  Hit : 5158     Date : 2017/03/22 04:59



    
해쿨러 1. 공격할땐 ./gremlin `asdfasdf` 으로 하고 환경변수주소는 ./shell 이런식으로 얻어왔다면 환경변수의 주소는 다릅니다
프로세스 메모리에 argv[0]은 기본적으로 두번(argv[0], 스택 맨 끝)이 들어가고, 이에 의해서 환경변수의 주소가 밀릴 수 있습니다

2. cat을 붙이는 이유는 cat이 없는상태에서 파이프 오른쪽에서 쉘이 뜬다고 하더라도 왼쪽에서는 단발성으로 출력하고 끝나기 때문에 파이프가 이어지지 못합니다 (Broken Pipe)
저런식으로 파이프를 사용하면 유저입력은 파이프 왼쪽으로만 들어갈수 있고, 파이프 오른쪽의 프로그램은 파이프왼쪽의 프로그램이 출력하는것만 입력으로 받습니다
2017/03/24