pwnable.kr 3번 문제임 


문제를 보면 BOF 문제임을 알수 있음 




접속해서 실행시켜 보면 다음과 같음 




제공된 코드 까보아씀 !




간단한 코드임  main에서 func 로 0xdeadbeef 를 인자로 넘겨주고 


func에서는 key값과 0xcafebabe를 비교함 


문제는 0xdeadbeef를 key 로 넘겨 주었는데 어떻게 0xcafebabe랑 같게 만드느냐임 ... 


bof 문제니까 스택보려고 일단 gdb ㄱㄱ 싱 


분명 메모리 상에 넘겨주는 0xdeadbeef 가 이쓸꺼임 gets 함수 호출하고 cmp 하기 전에 일단 브포 걸고 실행시킴



그 후 인자로 a값을 배열의 크기만큼 32개 넘겨 주어 봤음 



보면 0x61616161 이 정확히 32바이트 만큼 들어간걸 확인할 수 있고 20바이트 뒤에 0xdeadbeef가 있는걸 확인 할 수 있음


저 deadbeef 값(key)을 cafebabe로 수정하면 될 것 같다고 생각함 


그렇게 하기 위해선 52바이트 뒤에 (배열 32바이트 + 20바이트) cafebabe가 들어가야 함


그래서 첨에 `python -c 'print "a"*52 + \xbe\xba\xfe\xca"'` | nc pwnable.kr 9000 하면 될거 같았는데 안댐 ...


찾아보니까 


 (python -c 'print "A"*20 + "\x64\xff\xff\xbf";cat) | ./test 명령을 알아볼 필요가 있습니다. 


그냥 (python -c 'print "A"*20 + "\x64\xff\xff\xbf") | ./test명령을 하면 프로그램이 바로  종료 되기 때문에 cat명령어와 같이 표준 입력을 받아서 표준 출력을 해주는 명령어


를 같이 사용하므로써 cat 명령어가 파이프로 실행파일과 연결되어 있어 프로그램이 종료되지 않고 입력을 대기 하게 되기 때문에 my-pass 명령어를 사용할수 있게 됩니다.


라구 함 ... 이건 이해 잘 안갔음 더 자세히알아봐야 할듯 .. 


쨋든 그래서 위에 형식을 맞추어서 작성해주니 



플래그값을 딸 수 있었음 




'개인공부 > pwnable' 카테고리의 다른 글

[protostar] stack2 문제풀이  (0) 2018.10.14
[protostar] stack1 문제풀이  (0) 2018.09.16
[protostar] stack0 문제풀이  (0) 2018.09.16
[pwnable]pwnable.kr 2번  (0) 2018.09.09
[pwnable]pwnable.kr 1번  (0) 2018.08.24

2번 문제임당 MD5 해쉬 충돌에 관한 내용을 아빠가 말해주었나바염 


모르겠고 ssh접속합니당





접속해서 보면 col , col.c flag 파일이 있고 col 에 setuid 가 걸려있슴당 



일단 그냥 col을 한번 실행 시켜 봤씀당 


./col 했을경우 passcode 를 입력하라구 하고 ./col 11 하니까 20바이트여야 댄다고 하네염 


그래서 ./col a 20개 를 넣어주니 틀렸답니당 히히히히




풀기 위해서 소스코드를 보았어요 



가장 주의를 기울여서 봐야 할 부분은 check passcode 함수 부분이에염


저기서 char 형 포인터가 int 형 포인터로 형변환이 일어나고 이써염 이말이 뭐냐면 


AAAABBBBCCCCDDDDEEEE가 만약 입력값(argv[1]) 로 들어 왔다면 


0x41414141 0x42424242 0x43434343 0x44444444 0x45454545 로 변환이 된다는 거에요


그러면


ip[0] = 0x41414141

ip[1] = 0x42424242

ip[2] = 0x43434343

ip[3] = 0x444144444

ip[4] = 0x45454545


넹 ㅇㅇ


이렇게변환해서 포문 돌려서 다 더한값이 hashcode 랑 같아야 해여 


포문 보면 간단하게 5번 더해주고 있자나염 


그래서 여기서 고민을 했어염 어케 해야하나 ...... 그러다가 못풀겠어서 ..ㅠㅠ 인터넷 찾아봤는데 5번 더했으니까 5번 나누면 된다고 했어요


암튼 나눠보니까 0x6C5CEC8 값이 나오네염 


그럼 0x6C5CEC8 이 값을 넣어주면 될꺼라고 생각해써염 


넣어 줬는데 안대여 .. 그래서 또 인터넷 찾아보니까 0x6C5CEC8 이 값에 다시 5를 곱해보면 원래 해쉬코드 보다 4바이트 적게.. 나온다고 하네요 ㄷ ㄷ ㄷ ㄷ ㄷ 


이런거 어케 생각하고 하는거지 


암튼 그래서 0x6C5CEC8 값 *4 랑 0x6C5CECC 한개를 넘겨주면 대여 ! 



그래서 최종 스크립트는 !!!!!!!!!!!!!!!


./col `python -c 'print "\xC8\xCE\xC5\x06"*4 + "\xCC\xCE\xC5\x06"'`


뭐지 터미널에서 긁어오니까 일케대넹 ... 암튼 저거 입니다 !!!!!!!!!



 


'개인공부 > pwnable' 카테고리의 다른 글

[protostar] stack2 문제풀이  (0) 2018.10.14
[protostar] stack1 문제풀이  (0) 2018.09.16
[protostar] stack0 문제풀이  (0) 2018.09.16
[pwnable]pwnable.kr 3번  (0) 2018.09.09
[pwnable]pwnable.kr 1번  (0) 2018.08.24

포너블쩜케이알 1번 문제임 


로그인하면 저렇게 뜸 


터미널로 접속 ㄱㄱ (윈도우 쓰는사람은 putty로 접속,, 다른거 뭐 또 있었는데 뭐였찌 )



접속해서 파일들 보면 fd 랑 fd.c fd.c 랑 flag 이씀 ! 



fd.c 파일을 열어보면 본격적인 문제가 나옴 


코드 내용을 보면 



fd 에 입력값을 받아 atoi 하고 -0x1234(4660) 를 해주고 read 를 함


여기서 봐야할건 read 함수는 인수로 


int fd (파일디스크립터) void * buf (파일을 읽어들일 버퍼) size_t nbytes(버퍼의 크기)  를 가짐

 

//파일 디스크립터란 윈도우의서 HANDLE 처럼 파일에 접근하기 위한 값으로 이해했고 


조금더 사전적 의미로 정의하자면 시스템이 할당하여 준 파일이나 소켓을 대표하는 정수 라고 함 ㅋㅋㅋ 


값은 항상 정해져 있고


0은 표준입력 1은 표준 출력 2는 표준 에러 출력임


음 ....... 그래서 아래 흐름 쭉 보면 if 문을 실행시켜야 플래그값을 으니까 fd 는 0이 되어야 할 거 같고 그래서 표준 입력으로 


LETMEWIN 을 쳐주면 ! strcmp 해서 1이 될테니까 if 문이 실행될고임

 



'개인공부 > pwnable' 카테고리의 다른 글

[protostar] stack2 문제풀이  (0) 2018.10.14
[protostar] stack1 문제풀이  (0) 2018.09.16
[protostar] stack0 문제풀이  (0) 2018.09.16
[pwnable]pwnable.kr 3번  (0) 2018.09.09
[pwnable]pwnable.kr 2번  (0) 2018.09.09

윈도우가 실행되면서 내부적으로 실행되는 프로세스 생성 과정과, 어떤 프로세스가 실행되는지 정리 함 


먼저 윈도우 전체적인 실행 과정임 



메인 보드에 설치되어 있는 펌웨어 타입에 따라 (BIOS , EFI) 부팅 과정이 달라짐, 이 전체적인 부팅과정은  (http://elfmfl.tistory.com/entry/Windows-OS-부팅-과정) 여기에 잘 정리되어 있으니 여기를 필요할때마다 참고해야겠음 


노란 박스로 표시된 프로세스들 + 시작 프로세스 볼꺼임 


1. winload.exe

- Winload.exe는 Windows 운영 시스템을 위해 Microsoft에서 개발한 MSDN Disc 3613와(과) 관련된 EXE 파일 유형


2. smss.exe

- 마이크로소프트에서 제공하는 Windows NT 사용자의 세션을 관리하는 응용프로그램으로 사용자 세션의 시작을 담당하는 세션 관리자 하위 시스템.  

- 이 프로세스는 시스템 스레드에서 시작되며 Winlogon 및 Win32(Csrss.exe) 프로세스의 시작과 시스템 변수 설정을 비롯한 다양한 작업을 수행

- Smss.exe는 이러한 프로세스를 시작한 후 Winlogon이나 Csrss가 끝나기를 기다림. 

- 정상적으로 이루어지면 시스템이 종료되지만 예기치 않은 동작이 일어나면 Smss.exe는 시스템이 응답을 중지하도록 함
- 시스템구동에 필요한 핵심 프로그램이며, 중지할 수 없는 프로세스입니다. 


3. csrss.exe

srss.exe는 마이크로소프트사의 Client/Server Runtime Subsystem 응용프로그램

- 32비트 하위시스템의 윈도우콘솔을 관리하고, 커널모드의 드라이버 및 쓰레드를 생성/삭제
- 시스템구동에 필요한 핵심 프로그램이며, 중지할 수 없는 프로세스


4. Conhost.exe 

-윈도우 콘솔 I/O 관련 기능을 사용하는 어플리케이션 


5. Wininit.exe 

- 윈도우 로그 관리자 프로세스


6. services.exe 

-svchost.exe 를 실행시키고, 레지스트리를 참고하여 서비스 실행 


7. wmiprvSE.exe

- 윈도우 관리도구


8. dwn.exe 

- 데스크탑 윈도우 메니저


9. taskhost.exe 

- 윈도우 시작시, 레지스트리에 있는 service 관련 DLL 파일 로딩


10. lass.exe 

- 사용자 로그인을 확인하기 위해 사용되는 보안 메커니즘 


11. spoolsv.exe

- 프린트나 팩스 관련한 프로세스 ( 프린터 내에 스풀러 관련된듯)


12. cygrunsrv.exe 

- GNU tool for windwos 


13. msdtc.exe

- 메모리 관리 모니터


14. lsm.exe 

- 로컬 세션 관리자 서비스


15. sppsvc.exe 

- 소프트웨어 보호 플랫폼


16. winlogon.exe 

- windows logon application


17.explorer.exe 

- 윈도우 탐색기, 바탕화면에서 클릭하여 실행되는 프로세스는 이 프로세스 하위로 들어감 


(출처: http://yjpsky.tistory.com/entry/smssexe-프로세스란)

(출처 :http://blog.naver.com/sunkwang0307/221324637941)




'개인공부 > Malware Analysis' 카테고리의 다른 글

각종 툴을 이용한 network traffic 분석  (0) 2018.06.14

;;; 이거 나중에  귀차늠..

18번 문제는 


Name이 CodeEngn일때 Serial은 무엇인가임


쉽게 빨리 풀림 



실행화면임 


따라가다 보면 입력값이 5 글자 이상으로 들어가는지 확인하는 조건문이 있는데 그곳에 브포 걸고 들어감( 아 스트링 검색으로 해서 찾음)


브포 걸고 진행하다 보면.. lpString 1 과 lpString 2를 비교하고 성공 실패로 분기하는 구문이 있음



그래서 스트링 값 덤프해서 보니까 


시리얼 값이 나옴 






17번 문제임


Key 값이 BEDA-2F56-BC4F4368-8A71-870B 일때 Name은 무엇인가 

힌트 : Name은 한자리인데.. 알파벳일수도 있고 숫자일수도 있고.. 

정답인증은 Name의 MD5 해쉬값(대문자) 


애 먹었음 이거 ... 


네임 한자리라는데, 한자리 입력하면 더 입력하라고 함 ;; 



이거 수정하면 댐 


이거 수정하고 따라 가다보면 


성공 루틴으로 가기위해 하나 수정하는 값이 더 있음 



이거임 이거 수정해주고 



여기서 call 을 세번이나 하길래 다 들어가서 확인하느라 좀 헤맸음 ㅅㅂ 결국 보니까 마지막 콜에서 루틴 



이거 루틴 수행하는거 계싼하면 답 찾을수 이씀 











16번 


Name이 CodeEngn일때 Serial을 구하시오 임


패킹은 ㄴㄴ



실행화면 



저건 왜 생기는거지 ? 




ida gogo 





점점 설명이 짧아지네....  추가 설명 하자면 저기 분기점 찾아서 cmp eax , ebp+var_3c  dump 떠서 16진수 - > 10 진수 하면댐



세상에 잘하는 사람 존나 많음 


공부 열심히 해야겠음


흥미는 있었음


갓은 가까이에 있었음 .. 


그 갓 형이 엄청 많이 풀음


 


공부해야지




'개인공부' 카테고리의 다른 글

TJCTF 도전  (0) 2018.08.09

15번 문제 


Name이 CodeEngn일때 Serial을 구하시오임


시작하면 아래 화면처럼 출력되고 틀리면 Try Again! 이라는 스트링 출력됨



IDA 켜서 스트링 검색해봄 




You cracked the UBC blah blah 써있음 저부분 들어가서 봄 



cmp 문 보임 eax 랑 dword_45b844 랑 비교 해서 점프구문 수행



dword_45b844값 보니 6160h 임



10진수로 바꿔주면 이거임 



+ Recent posts