先得到文章最后 flag 再说#(滑稽): moectf{0hhhhhhh_I_kn0w_hoW_t0_R3v3rs3!}
CTF TO LEARN, NOT LEARN TO CTF
为了拥有“能够 getshell 任意一台设备”的能力而努力吧!新生代的黑客们!
Baby pwn
100points
尝试实战一下
第一个 hint 是小贴士
实在没头绪就看看第二个 hint (分数减半)
题目地址:nc sec.eqqie.cn 10003
首先运行一下
1 2 3 4 5 6 7
$ ./pwn1 Tell me your name: framist Hello framist!
$ nc sec.eqqie.cn 10003 Tell me your name: arttnba3 Hello arttnba3!
:3 你好呀~
并没有 flag 相关的信息。
使用checksec指令查看程序的保护开启情况
1 2 3
checksec --file=pwn1 RELRO STACK CANARY NX PIE RPATH RUNPATH Symbols FORTIFY Fortified Fortifiable FILE Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH 73 Symbols No 0 pwn1
.text:08048080 ; =============== S U B R O U T I N E ======================================= .text:08048080 .text:08048080 .text:08048080 public _start .text:08048080 _start proc near ; DATA XREF: LOAD:08048018↑o .text:08048080 xor eax, eax .text:08048082 mov edx, 18h ; len .text:08048087 mov ecx, offset msg ; addr .text:0804808C mov ebx, 1 ; fd .text:08048091 mov eax, 4 .text:08048096 int 80h ; LINUX - sys_write .text:08048098 sub esp, 100h .text:0804809E mov ebx, 0 ; fd .text:080480A3 mov ecx, esp ; addr .text:080480A5 mov edx, 100h ; len .text:080480AA mov eax, 3 .text:080480AF int 80h ; LINUX - sys_read .text:080480B1 jmp esp .text:080480B1 _start endp .text:080480B1 .text:080480B1 ; --------------------------------------------------------------------------- .text:080480B3 db 0B8h .text:080480B4 dd 1 .text:080480B8 db 0CDh, 80h .text:080480B8 _text ends .text:080480B8 .data:080490BC ; =========================================================================== .data:080490BC .data:080490BC ; Segment type: Pure data .data:080490BC ; Segment permissions: Read/Write .data:080490BC _data segment dword public 'DATA' use32 .data:080490BC assume cs:_data .data:080490BC ;org 80490BCh .data:080490BC msg db 53h ; S ; DATA XREF: LOAD:0804805C↑o .data:080490BC ; _start+7↑o .data:080490BD db 68h ; h .data:080490BE db 6Fh ; o .data:080490BF db 77h ; w .data:080490C0 db 20h .data:080490C1 db 6Dh ; m .data:080490C2 db 65h ; e .data:080490C3 db 20h .data:080490C4 db 79h ; y .data:080490C5 db 6Fh ; o .data:080490C6 db 75h ; u .data:080490C7 db 72h ; r .data:080490C8 db 20h .data:080490C9 db 73h ; s .data:080490CA db 68h ; h .data:080490CB db 65h ; e .data:080490CC db 6Ch ; l .data:080490CD db 6Ch ; l .data:080490CE db 63h ; c .data:080490CF db 6Fh ; o .data:080490D0 db 64h ; d .data:080490D1 db 65h ; e .data:080490D2 db 3Ah ; : .data:080490D3 db 20h .data:080490D4 db 17h .data:080490D4 _data ends
试着反编译一下主程序:
1 2 3 4 5 6 7 8 9 10
voidstart() { int v0; // eax int v1; // eax int v2; // [esp-100h] [ebp-100h]