<문제 유형>
blackcon@bk:~/def/code$nc catwestern_631d7907670909fc4df2defc13f2057c.quals.shallweplayaga.me 9999
****Initial Register State****
rax=0x408ac14d14c91041
rbx=0x92b94f86512d81f7
rcx=0x27e130edb33ed938
rdx=0x4908d46be209ea22
rsi=0x46544d33f066a612
rdi=0x7917f07f5de389fd
r8=0x1be4f02013a8e1bd
r9=0xa30f7795d3397ee3
r10=0x2bce7d9563e73db2
r11=0x75aabcc891d0be75
r12=0x65f56eb6f0aea8a0
r13=0xfb79336eaae8f23a
r14=0xfe3972f02bb89884
r15=0x43aa67d92fe69f90
****Send Solution In The Same Format****
About to send 62 bytes:
L��I��H��M�I��0�PqI���I��H�� L��
****Improperly formatted solution
****Improperly formatted solution
->64bit 레지스터를 제공
->쓰레기값처럼 보이지만 64bit Opcode를 제공
<풀이 순서>
1. 레지스터값을 저장하는 asm.s를 생성( ex: mov rax, 0x12345678 ,,, )
-> 코드를 생성 후 nasm -f elf64 -o ./asm ./asm.s 로 컴파일
2. OPcode를 실행할 수 있는 바이너리 생성( gcc -o exec exec.c -z execstack )
3. 레지스터와 opcode를 파일로 저장 후 실행
4. 그 결과를 받아와서 서버로 전송.
[+] exec.c
[+] go.py
댓글0