워게임 풀다가 윈도우용 pwntools를 찾아보게되었고 역시 생각하는건 다 있는듯ㅋ
경험을 공유하고자 간단히 정리하겠다
•
우선 python27, python37 둘다 깔기
gdb.attach() 하면 리눅스에선 일반적으로 터미널 창 하나 띄워서 디버깅 조졌음. but 윈도우에선 어떤 디버거를 사용할 지 정해야함. 항목은 아래와 같음
1.
windbg preview
2.
windbg
3.
x64dbg, x32dbg
4.
mingw gdb
1~3번은 python3 버전대에서 해야 에러없이 진행되고 4번은 python2 버전만 호환됨. 1~3은 다해밨는데 4번은 에러떠서 시도 못함. ㅅㅂ
4번 mingw gdb는
저렇게 실제 리눅스 peda 마냥 쓸수 있다고함. 후에 저것도 성공해서 수정하겠음
일단 python3 기준으로 설치법
•
git clone https://github.com/Byzero512/winpwn.git
•
python -m pip install winpwn
•
winpwn 폴더안에 보며 setup.py 있음
python setup.py install
•
만약에 에러나면 (안나면 스킵)
◦
◦
python -m pip install PythonForWindows
◦
python setup.py install
•
•
•
winpwn 폴더들어가보면 .winpwn파일이 있음
{
"debugger":{
"i386": {
"x64dbg": "E:\\etc\\reversing\\snapshot_2020-08-16_04-47\\release\\x32\\x32dbg.exe",
"gdb": "C:\\Users\\wogh8732\\Documents\\gdb-6.8-mingw-3\\bin\\gdb.exe",
"windbg": "C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x86\\windbg.exe",
"windbgx": "C:\\Users\\wogh8732\\AppData\\Local\\Microsoft\\WindowsApps\\Microsoft.WinDbg_8wekyb3d8bbwe\\WinDbgX.exe"
},
"amd64": {
"x64dbg": "E:\\etc\\reversing\\snapshot_2020-08-16_04-47\\release\\x32\\x32dbg.exe",
"gdb": "F:\\etc\\x86_64-w64-mingw32-gdb-7.1.90.20100730\\mingw64\\bin\\gdb.exe",
"windbg": "C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x64\\windbg.exe", //난 얘는 안씀 무시하셈
"windbgx": "C:\\Users\\wogh8732\\AppData\\Local\\Microsoft\\WindowsApps\\Microsoft.WinDbg_8wekyb3d8bbwe\\WinDbgX.exe"
}
},
"debugger_init": {
"i386": {
"x64dbg": "E:\\etc\\reversing\\snapshot_2020-08-16_04-47\\release\\x32\\x32dbg.exe",
"gdb": "C:\\Users\\wogh8732\\Documents\\gdb-6.8-mingw-3\\bin\\gdb.exe",
"windbg": ".load E:\\ShareDir\\building\\bywin\\pykd_ext_2.0.0.24\\x86\\pykd.dll;!py -g E:\\ShareDir\\building\\bywin\\byinit.py;", // 난 얘는 안씀 무시하셈
"windbgx": ".load E:\\etc\\pykd-0.3.3.3-cp27-win32\\pykd\\pykd.pyd;!py -g E:\\etc\\peda-windows-master\\peda-windows-master\\windbg\\bywin\\byinit.py;"
},
"amd64": {
"x64dbg": "E:\\etc\\reversing\\snapshot_2020-08-16_04-47\\release\\x32\\x32dbg.exe",
"gdb": ":\\etc\\x86_64-w64-mingw32-gdb-7.1.90.20100730\\mingw64\\bin\\gdb.exe",
"windbg": ".load E:\\ShareDir\\building\\bywin\\pykd_ext_2.0.0.24\\x64\\pykd.dll;!py -g E:\\ShareDir\\building\\bywin\\byinit.py;",
"windbgx": ".load E:\\ShareDir\\building\\bywin\\pykd_ext_2.0.0.24\\x64\\pykd.dll;!py -g E:\\ShareDir\\building\\bywin\\byinit.py;"
}
}
}
JSON
복사
◦
바이너리 아키텍처에 따라서 디버거를 붙일 수 있음. debugger 에는 걍 자신 환경에 존재하는 디버거 경로 적어주면됨
◦
debugger_init 에서 x64dbg에는 걍 동일하게 디버거 경로적어주고, windbg랑 windbgx에는 windbg에서 파이썬 스크립트 실행을 위해 모듈을 로드해야한다. pkyd.pyd 다운로드했으면 해당 파일 경로 맞춰서 적어주고 ; 뒤에 !py -g "아까 기억하라는 byinit.py 경로 적기"
◦
작대기한 부분은 저거 안써서 수정안했음. 만약 am64로 조질 사람은 위에꺼 보고 적절히 세팅하면 됌
예제코드
from winpwn import *
context.debugger = "windbgx"
context.arch = "i386"
context.log_level = "debug"
p = process("09.exe")
windbgx.attach(p, script="bp 0xe613f4")
#p.recv(100)
p.recvuntil("Username: ")
p.sendline('123')
p.recvuntil("Password: ")
# p.recv(30)
p.sendline("8921743")
p.interactive()
Python
복사
저렇게 하고 실행하면 windbg preview 가 실행됨
이제 g를 누르면 실행되면서 bp에 딱걸림