Archive for January, 2005

정태영

블로그에도 몇 번 관련된 내용을 남겼지만.. 현재 내가 쓰고 있는 서버는.. 임대형 서버인데.. 업그레이드가 필요함에도 -_-;; 업그레이드 후 다달이 늘어나는 가격등에.. 두려움을 느껴서.. 무언의 압박을 받고 있었다..

거기다가.. 2년전에.. 레드햇 7.3 을 설치해놨었는데.. 어느 날 갑자기.. up2date 의 지원도 끊기고… Fedora Legacy 의 지원도 이제 끝날 쯤 된 듯 해서.. 나한테 익숙하지 않은 레드햇은 이제 빠이빠이 하고.. 내 손에 익숙한 젠투와 함께 -_-!! 새로운 둥지를 찾아나서기로 결심!!

SmartServer 921 을 질렀는데.. cpu도.. P3 1.13 * 2개 이고.. Memory 도.. 256MB*2개.. 하드도.. 18.2GB*2개다 헤헤.. 메모리 512MB*2개 더 달고 -_-;; 하드 36기가 하나 더 단 다음에.. 원래 있던 하드들은 백업용으로 쓰면 될 듯.. 꺄르르르

드디어 월말의 호스팅비 압박에서 벗어날 때가!!

p.s) 코로케이션 믿을만하고 싼데 추천해주세요 ㅠ_ㅠ
p.s2) 내일은 내 생일~ 올해 생일엔 기분 나쁜 일이 안 생겼음 좋겠다..

정태영

The art of exploitation 에 나오는.. 간단한 stack overflow 예제를 시도해봤는데 꺄홋! static 버퍼에.. strcpy 나.. gets등의 길이를 체크하지 않는 함수들을 이용해서.. stack 을 넘치게 해서.. 함수의 return address 를 내 맘대로 조작하고.. 그 return address 가 가리키는 곳에 프로그램 코드를 집어넣는 방식인데... 생각보다 어렵지도 않고.. 꽤 재밌다 -_-!!

execl( "/bin/sh", "sh", NULL ); 앞 뒤로.. __asm__( "nop"); 을 400개 정도씩 추가해주고.. 컴파일해서 얻은 코드를 hexeditor 로 열고, 0x90 사이에 숨어있는 코드를 복사해다가 해봤는데.. 이걸로는 쉘실행에 실패했다.. 중간에.. 0x00 이 들어가기 때문에.. strcpy에서.. 모든 코드를 복사하지 않은 듯 싶은데.. ㅠ_ㅠ 흑흑흑.. system("/bin/sh"); 는.. \x00 은 나오지 않는데도 안된다.. 흠 링크는 시키지 말고.. 컴파일만 해봐도.. 역시 뭔가 알 수가 없다 -_ㅜ.. 쉘 코드를 어떻게 만들어내는지를 알아야 더 재밌을 텐데 ㅠ_ㅠ

그리고 redhat 9 에서는.. 뭔가 stack overflow 를 이용한 공격에 대비하기 위한 패치가 존재하는 듯 싶다.. stack 의 주소가 계속 조금씩 바뀌길래 -_-!! 대강.. 자주 나오는 위치 근처로 offset 을 조정해주고.. while [ 1 ] ; do ./attack ; done 을 돌렸더니 몇 번 실패하더니 결국 주입한 코드 실행에 성공 .. -_-v

BASH:
  1. while [ 1 ]; do
  2.     ./attack
  3. done

Stack pointer (ESP) : 0xbffff6b8
Offset from ESP : 0x5a8
Desired Return Addr: 0xbffff110
address of buffer = 0xbffff290
Segmentation fault
Stack pointer (ESP) : 0xbffff638
Offset from ESP : 0x528
Desired Return Addr: 0xbffff110
address of buffer = 0xbffff210
Segmentation fault
Stack pointer (ESP) : 0xbffff538
Offset from ESP : 0x428
Desired Return Addr: 0xbffff110
address of buffer = 0xbffff110
sh-2.05b# whoami
root
sh-2.05b#

젠투에는 그런 패치가 없는지 그냥 잘 된다 헤헤.. 하튼 잼난다 잼난다 꺄홋~

정태영

언제나 학기말이 되면.. "요번 방학 때는 뭘 해볼까" 라는 즐거운 상상을 하며.. 방학을 기다리지만.. 막상 개강할 때가 되면.. 방학동안 이룬 건 거의 없는 듯 싶다.. 새로운 목표 상실 증후군인가?

세상에 재밌는 일이 너무나도 많다 보니.. 그 중 어떤 걸 하면서 살까라는 행복한 상상 속에.. 결국 이도저도 아니게.. 하루하루를 낭비하며 살고 있는게 아닐지..

요즘들어 뭘 만든다거나.. 다른 사람이 만든 걸 뜯어고친다거나.. 하는 일은 거의 없고.. 코드를 작성하거나 남의 코드를 뜯어보는 일은 그 이상으로 없으니.. 눈에 보이는 결과물은 하나도 없고...

맨날 눈에 보이지도 않는 기반 지식 관련 책들만 쌓아놓고 보다 보니.. 지루하기도 하고.. 하튼.. 하루하루가 묘하게 빨리 흘러가네.. 이제 시간도 별로 없는데..

날씨 탓 인가.. 가슴 속이 텅 빈 것 같아..

정태영

스팸이 점점 늘어나고 있어서 뭔가 대책을 세워야 할 듯 싶다. 글이 쌓이다보니 워드프레스가 점점 느려지는게 느껴진다. 베이시안 필터를 구현하고, 간단한 블로그를 직접 만들어서 쓸까 하는 생각도 들고...

베이시안 필터를 구현하기 전에 테스트를 좀 해보려고 간단한 프로그램을 짜봤다.

특수문자를 제거하고, 태그를 지워버린 뒤 특정 seperator 기준으로 토큰을 만들어주는 프로그램인데... 이 프로그램에 몇 가지 스팸들을 넣어본 결과 꽤 효율적일 듯 하다는 생각이 들었다.

저렇게 단순한 토큰들 말고 정규표현식을 통해 url 만 뽑아낸 다음에 host 정보를 이용해서 점수를 메기면 더 유용하게도 이용이 가능하지 않을까 싶다.

p.s) 근데 스팸으로 분류된 걸 보고, 제거하고 하는 기능을 넣으려면 역시 회원관리 모듈도 작성해야 하는건가... 귀찮은데... -_-!!

정태영

UTF-8

  • 0xxx xxxx: 1Byte
  • 110x xxxx 10xx xxxx: 2Byte
  • 1110 xxxx 10xx xxxx 10xx xxxx: 3Byte
  • 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx: 4Byte

UTF8 은.. 위와 같은 규칙을 가지게 되는데.. (맨 앞에 나오는 1의 개수가.. 한 글자를 이루는 바이트 수) 심심해서.. utf8_get_next_char 을.. 손수 구현을 해보는 도중!! 아니 결과가 이상!!

"가" 라는 글자는.. UCS-2 로 표현하면.. 0xAC00 으로 표현되고.. 2진수로 바꾸면.. "B1010 1100 0000 0000" 이며.. 이걸 UTF-8 로 변환하면.. "1110 1010 1011 0000 1000 0000" 이 되므로 0xEAB080 이 되야 하는데.. 이게.. 아키텍쳐마다 결과가 달랐다.. 흑흑.. 저 순서로 되는게 더 편한데 ㅠ_ㅠ

aqua@unfix aqua $ echo 가|hexdump
0000000 b0ea 0a80
0000004

aqua@Macintosh aqua $ echo 가|hexdump
0000000 eab0 800a
0000004

위의 unfix 머신은.. intel pentium 이고.. 아래 매킨토시라고 나오는 녀석은.. ppc :) 바이트 오더 차이가!! 꺄홋~! (0x0A는.. new line 이려나...) 그나저나 순서가 묘함;; -_-!!

정태영

요새들어 자주 느끼는 것 중 하나지만.. wordpress 는 너무 느리다.. 최적화 되지 못한.. 테이블 구조로.. 매번 external sorting 이나 하고 있고 -_-!! 느려느려!!

그거보다.. 더 싫은 건.. 읽기도 싫은 외국 스팸들이 쏟아진다는 거겠지..

정태영

이전엔.. 정규표현식으로 했었는데.. 정규표현식 난무가 시작되면.. 프로그램이 상당히 느려지고.. 또 여러가지 예외 상황들에 적절히 대처를 못하는 일들이 생기는터라.. 잠깐 짬내서 오토마타를 그리고.. autolink 함수를 재작성 했다 -_-v

img, a 태그 등에서.. url 이 나온 경우.. 충돌을 일으키는 일이 없도록 하고.. '나 " 등으로 인해서 생길만한 문제도 없게 깔끔하게 만들고.. 대강 몇가지 스트링으로 테스트해봤는데 잘 도는거 같다 :) 헤헤

소스는 http://mytears.org/resources/mysrc/php/urlautolink/autolink.php 여기서 보시면 됩니다

p.s) 한 가지 버그라면... [a href=url] url [/a] 식의 경우를 전혀 고려하지 않고 있다는 점이지만... 역시나 고치자니 손도 많이 가고 귀찮다...