본문 바로가기

70ry

(167)
LOB LEVEL17 (zombie_assassin ==> succubus) 안녕하세요 소스가 엄청 길다 DO, GYE, GUL, YUT, MO의 함수가 있고 맨위에 있는 MO까지 호출해서 system(cmd) 함수로 쉘을 실행시켜야한다 메인을 보면 argv[1]을 사용해야하고argv[1]에서 strchr로 \x40을 사용하지못한다즉 argv[1]에 시스템 주소를 못넣는다 ret 함수의 주소가 DO함수의 주소가 아니면 안된다 ret뒤에 100만큼만 쓸수 있다 마지막으로 LD를 초기화 한다(공유라이브러리 못씀) 일단 주소를 구했다 dummy[44]&DO[4]&GYE[4]&YUT[4]&MO[4]dummy[4]&/bin/sh[4]/bin/sh[4] 이제 /bin/sh의 주소를 구하자core를 떨기고 해봅시다 주소는 0xbffffa98이다 실패다 다시 코어를 분석했다 주소가 바꼈다순간 ..
LOB LEVEL16 (assassin ==> zombie_assassin) 안녕하세요 strncpy 48로 제한됬다 stp와 ret까지만 덮어쓸수 있다 스택과 공유라이브러리를 못쓰고ret이후를 덮어쓸수 없다 Fake ebpret까지만 덮을 수 있고 특정 한 영역에 대해 필터링을 해놓았을 때 이때 fake ebp라는 기법을 사용한다RET를 leave-ret주소로 덮는것이다 system_address[4]dummy[4]/bin/sh_address[4]dummy[28]buffer(-4)_address[4]leave[4] 순서대로 구해보자 난 분명 6c로 나왔는데 주소를 바꿔가면서 하다보니깐 5C가 정답이다....주소찾는데 한참 걸린듯 하다 아무튼 성공을 했다.......
LOB LEVEL15 (gaint ==> assassin) 안녕하세요 소스를 보면 스택영역을 사용할 수 없다 공유라이브러리 주소도 사용할 수 없다 하지만 ret에 ret주소를 넣어주면 esp+4가된다즉 ret 값뒤에 4바이트를 사용할 수 있다 이 문제는 argv[2]영역을 사용할 것이다 우선 ret주소는 0x804851e 내가 쓸 주소는 0xbffffc2c이다 dummy[44] ret_address[4] NOP넣어주고 뒤에 쉘코드 성공했다 그리고 다른 방법이 하나 있는데dummy[44]ret_address[4]system_addres[4]dummy[4]/bin/sh_address[4]이렇게 하는 방법도 있다 ret: 0x804851esystem: 0x40058ae0/bin/sh: 0x400fbff9 성공 !! 끝
LOB LEVEL14 (bugbear ==> giant) 안녕하세요음 소스가 많이 길어졌다 응 진짜 길어지기만 했다 전과 똑같은 방법을 사용하면된다 execve_addr를 구하고 ret과 비교해서 다르면 문자열를 출력한다execve_addr은 라이브러리에서 execve의 주소값을 저장시킨다 구조를 설명하자면dummy[44] execve_address[4]system_address[4]exit_address (or) dummy[4]/bin/sh_address[4] 3개는 구했다한개를 더 구해야한다0x400fbff9exploit을 할 때0a를 00으로 인식하기 때문에 ""처리를 해줘야한다
LOB LEVEL13 (darkknight ==> bugbear) 안녕하세요 그냥 RTL 문제입니다 먼저 구해야 할 것들이 있습니다시스템 함수 주소와 bin/sh 주소 그럼 우선 시스템 함수 주소를 구했습니다0x40058ae0 bin/sh의 주소를 구해야합니다 주소를 구했습니다 그럼 exploit해봅시다 성공!!
LOB LEVEL12 (Golem ==> darkknight) 안녕하세요이번 레벨은 FPO라는 기법을 사용한다 FPO 조건메인함수외에 서브함수가 필요하다 소스를 보면 41바이트를 복사하는데여기서 SFP 부분이 1바이트 오버플로우 된다그럼 leave-ret에 EBP부분을 조작할 수 있다즉! proble_child 함수를 나올 때 main의 ebp를 바꿀수 있다 여기서 주소대로 했는데 제대로 안되서코어분석함;;;;; 코어를 보니 아까랑 주소가 다르다 leave(pop ebp)하면 esp값이 +4가 된다주소가 80인데 -4해줘서 7c이다 이걸로 성공함
LOB LEVEL11 (skeleton ==> golem) 안녕하세요 소스를 보면마지막 부분에 스택을 초기화 해버린다 우리가 사용할 방법은?공유라이브러리를 사용한다!!LD_PRELOAD 환경변수를 라이브러리에 등록한다등록을 하면 공유라이브러리보다 먼저 참조한다 -shared: 공유라이브러리를 우선으로 링크하도록 하는 옵션 -fPIC: so파일의 속도 개선을 위한 옵션 이제 환경변수에 라이브러리를 등록한다 환경변수에 등록했다(정확한 경로를 써야함) 등록된걸 확인했다 공유라이브러리의 주소를 찾아보자ㅇㅇㅇㅇㅇ 주소를 찾았다저기 0xbffff5cc를 이용해서 해봅시다 이런식으로 성공했다~!!
LOB LEVEL10 (Vampire ==> Skeleton) 안녕하세요ultra argv hunter! 부분을 보면argv[]를 초기화 한다모두 초기화 된다 해도 스택에 끝에 프로그램 경로는 남아있습니다 스택 메모리를 살펴보자 이름을 찾았다 초기화를 했지만 스택 끝에 argv[0]이 남아있는걸 확인했다 심볼릭 링크를 만든다코어를 분석해보자 사용할 주소는 0xbfffffd0 이다 여기서 쉘코드 때문에 고생했다왜 그런지는 모르겠지만 \x68\x8a\xe2\xce\x81\x68\xb1\x0c\x53\x54\x68\x6a\x6f\x8a\xe4\x68\x01\x69\x30\x63\x68\x69\x30\x74\x69\x6a\x14\x59\xfe\x0c\x0c\x49\x79\xfa\x41\xf7\xe1\x54\xc3이 쉘코드를 사용하니 됬다!! 아무튼 성공했다.....