1580, 8/79 회원가입  로그인  
   bugfixer2
   ;cat 을 사용하는 이유 .

http://www.hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&no=732 [복사]


결론은 , '|' 때문에 ;cat 을 붙여야만 되는 겁니다.

ㄱ) (  A 명령  ) | ./attackme   이런 입력을 했다면.

(perl -e 'print "\x32\xff\xff\xbf . . ..";cat)|./attackme 라는 예를 들죠.

ㄱ) 과 같은 방법을 통해서..

인자전달 방식이 아닌, 표준입력(키보드)을 통해 따로 입력을 받는

attackme 프로그램 같은 경우라도  '|' 을 통해 변수에 내가 원하는 값을 넣어서

오버플로우를 시킬수는 있었지만.

attackme 의 코드 중에 system("/bin/sh") 에 의해 생성되는 프로세스 또한

| 기준을 왼쪽에 있는. 다시말해서 ( A ) 자리의 프로세스의 표준 출력 내용을  

입력받으려고 하는거죠..


*원래 쉘(/bin/sh) 는 프롬프트 $ 를 띄우고 표준입력(키보드) 로부터
입력을 기다리는 것이지만...  위의 경우에는 | 때문에
키보드 대신 ( A ) 자리의 프로세스의 표준출력 내용을
입력받으려 한다는 거죠..


헌데, ( A )자리에 있던 프로세스가 종료되면 더이상 입력받을 내용이 없기 때문에 종료 됩니다.

따라서 ,파이프 연결을 지속적으로 유지시키기 위해서

cat 을 하나 더 집어넣어서 계속적으로 ( A ) 자리에서 표준출력을 시킬수 있도록

만들어 주는거죠.. 그게 바로 ;cat 의 역할 입니다.


그림으로 나타내어 보자면..

perl  ===================    attackme (fget( ); 파이프로 넘어온걸 받겠죠.)
|       ( 파이프 )             |
|                              |
출력마치고 종료.           system("/bin/sh"); 때문에 쉘 프로세스 실행.
                                |
(X없음.) =  =   =  =  = =  =    {새로운 쉘}
          (연결끊김)              => 이 쉘은 표준입력(키보드) 대신에
                                  파이프를 통해 입력을 받으려한다.
                                  하지만, perl은 종료되고, 더이상
                                  입력받을값이 없으므로, terminate된다.

그래서...  ( ) 부분에 ;cat 을넣게 되면.

perl  ===================    attackme (fget();)
|       ( 파이프 )             |
|                              |
출력마치고 종료.           system("/bin/sh"); 때문에 쉘 프로세스 실행.
|                              |
cat   ====================  {새로운 쉘}

;cat 때문에
cat실행되고 키보드로부터 입력기다리면서
입력받은내용을 표준출력으로
보내고 , 이것은 파이프를 따라 전해집니다.



참고로..

(perl -e ' ';cat)|./attackme   이런 형태를 디버깅하려면

perl -e '...') > arg   명령으로 출력내용을 파일에다 저장한다음

(gdb) r < ./arg  하면 됩니다.

도움주신 IDNED 님 감사합니다.ㅎ

  Hit : 9901     Date : 2007/05/18 09:57



    
pinode 짝짝짝 2007/08/12  
소울 짝짝짝(2) 2010/05/04  
3rdlifer 오오 대박 ㄳㄳ요 2012/01/09  
1440   letmein 님 해캠 전까지 풀면 된다고 했던 문제요     blueh4g
02/03 6425
1439   해킹방법[12]     bongcheur
07/07 12760
1438   컴퓨터해커[4]     bongcheur
07/07 8977
1437   Windows NetBios 를 악용한 해킹방법의 예와 대처방법[3]     bongcheur
07/07 10281
1436   키보드해킹(보안)에 대해     bongcheur
07/07 7034
1435   nProtect 키보드 해킹방지 프로그램 설치[5]     bongcheur
07/07 9891
1434   해킹툴[5]     bongcheur
07/08 10017
1433   원격종료....[39]     bsjzzz
01/02 11343
1432   리눅스 방화벽의 종류...[4]     bsjzzz
01/12 13412
1431   제가 직접 작성한 Sql Injection 문서입니다 .[9]     buff3r
10/29 7547
1430   [자작]간단히 Netcat을 이용하여 윈도우XP 갖고놀기[11]     buff3r
01/03 7520
1429   Start of SQL Injection (매우 기초) 1[6]     buff3r
01/11 7007
1428   Ready to Make a Sql injection tool[5]     buff3r
01/15 7059
1427   [BASE]Making SQL injection tool 1/3[3]     buff3r
01/20 6362
1426   [BT4_han.iso]USB부팅하는 방법 For 별빛을담아[5]     buff3r
02/22 9479
1425   [자작] M4k3 Xploits :D[2]     buff3r
03/06 6338
1424   [자작]RedHat 6.2 환경에서 BOF exploit 만들기[6]     buff3r
03/17 12615
1423   [자작]RedHat 6.2 환경에서 BOF exploit 만들기 -The Second -[5]     buff3r
03/18 7012
1422   Fedora Core 3 local based buffer overflow[3]     buff3r
08/22 6908
  ;cat 을 사용하는 이유 .[3]     bugfixer2
05/18 9900
[1][2][3][4][5][6][7] 8 [9][10]..[79]

Copyright 1999-2023 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org & Wowhacker.com