pwnable.kr 4

pwnable.kr passcode write-up

접속해서 코드를 읽어봤다. 바이너리를 실행시켜보면, segmentation fault가 난다. 문제에서 compiler warning이 떴는데 무시했다고 한다. 그래서 로컬에 하나 만들어서 컴파일 해보았다. 보면 &가 빠져있다. 주소를 쓰는 게 아니라 값을 주소처럼 써버려서 segmentation fault가 나는 것 같다. 만약 이때 passcode1의 값을 변조할 수 있다면, 임의 주소에 마음대로 쓸 수 있다. PIE가 걸려있지 않고 Partial RELRO가 걸려있다. 카나리가 있으니 welcome 함수에서 bof를 터뜨려서 ret를 변조하는 것을 힘들어 보인다. base가 고정이라서 원하는 곳으로 eip를 변조하기 수월하고, Partial RELRO가 걸려있으니 got를 덮는 것을 고려해볼 수 있..

WARGAME/pwnable.kr 2022.08.16

pwnable.kr collision write-up

접속하면 col이랑 col.c, flag가 보인다. flag는 당연히 권한이 없어서 못 읽는다. col.c를 읽어보면, argv[1]로 받은 20바이트를 4바이트 int로 쪼개서 res에 더하는 것을 알 수 있다. res가 0x21dd09ec면 된다. 편하게 0x21dd09ec를 5로 나눠서 조건을 만족하게 만들어주면 된다. 나머지가 4니까 나중에 더해주면 된다. int로 쪼갤때마다 6c5cec8을 만족하면 조건문을 통과할 수 있다. 그리고 마지막에 나머지를 더해주면 hashcode와 같아진다. 0x6c5cec8을 리틀 엔디언으로 변환해주면, \xc8\xce\xc5\x06가 되고, 이걸 내게 복붙 한 다음, 마지막에 4를 더해주면 된다. \xc8\xce\xc5\x06\xc8\xce\xc5\x06\xc8\..

WARGAME/pwnable.kr 2022.08.15