본문 바로가기

Pwnable.kr3

[Pwnable.kr] random 풀이 srand를 안쓰므로 실행 할 때마다 랜덤값이 고정이다. $rbp-0x8은 내가 입력한 0이고, $rbp-0x4는 고정 random 값이다. key ^ random 값이 0xdeadbeef와 같아야 하기 때문에 0xdeadbeef ^ 0x6b8b4567 을 하면 내가 입력해야할 값이 나온다. (0xB526FB88) int형으로 넣어줘야하기 떄문에 0xB526FB88을 정수로 바꾸면 3039230856이 된다. 2022. 2. 19.
[pwnable.kr] bof wget를 이용하여 다운로드를 받아준다. wget http://pwnable.kr/bin/bof wget http://pwnable.kr/bin/bof.c gets부분에서 오버플로우가 일어날 수 있고, func 함수의 인자값인 0xdeadbeef를 0xcafebabe로 바꿔야 한다. gdb로 func 함수를 확인해보면, overflowme의 시작지점이 ebp-0x2c라는것을 알 수 있다. 스택을 그리면 overflowme[32] dummy[12] sfp[4] ret[4] 0xdeadbeef[4] 이렇게 된다. (python -c 'print "A"*52+"\xbe\xba\xfe\xca"';cat) | nc pwnable.kr 9000 52바이트의 dummy값을 넣어주고, cafebabe를 리틀엔디언으로 .. 2022. 1. 9.
[pwnable.kr] col flag는 권한이 없어 읽지 못하고, col.c는 읽을 수 있다. 인자값으로 20바이트를 입력해야하며, 4바이트씩 읽어 res에 더하게 된다. 더한 결과값이 0x21DD09EC와 같으면 flag를 출력한다. 반복문을 5번 실행하므로, 0x21DD09EC를 5로 나누면 0x06C5CEC8이 나오고 나머지는 4이다. ./col `python -c 'print "\xc8\xce\xc5\x06"*4+"\xcc\xce\xc5\x06"'` 리틀엔디언으로 작성해야한다. flag : daddy! I just managed to create a hash collision :) 2022. 1. 9.