加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 电商 > 正文

Python代码审计实战案例总结之SQL和ORM注入

发布时间:2019-12-18 19:44:17 所属栏目:电商 来源:站长网
导读:副标题#e# Python代码审计方法多种多样,但是总而言之是根据前人思路的迁移融合扩展而形成。目前Python代码审计思路,呈现分散和多样的趋势。Python微薄研发经验以及结合实际遇到的思路和技巧进行总结,以便于朋友们的学习和参考。 SQL注入和ORM注入 这两者

咱们继续看来 Django JSON SQL注入,关于这个漏洞已经有前人分析过了。这个分析有些难度需要咱们了解Django和PostgreSQL,如果感觉吃力不妨先去学习一番。了解在PostgreSQL之中关于JSON数据的查询主要使用ArrayField、JSONField、HStoreField,通过Django如何进行查询PostgreSQL,Json.objects.filter()和QuerySet.filter()实现,准备工作就绪。

查询使用方法如下:

# 查询方法 

# 查询data数据下名称为test的内容为'user'的整个字段 

Json.objects.filter(data__test='user') 

or 

Json.objects.filter(**{"data__test":'user'}) 

通过补丁判断实现方法使用了 self.key_name ,QuerySet.filter()的调用和self.key_name传递有关。

Python代码审计实战案例总结之SQL和ORM注入

紧接着发现类 KeyTransformFactory 调用了 KeyTransform 传入了 self.key_name ,后续是字符串拼接。这里不多详细阐述感兴趣的朋友跟下流程。

class KeyTextTransform(KeyTransform): 

    operator = '->>' 

    ... 

    # 字符串拼接 

    (%s %s %s)" % (lhs, self.operator, lookup) 

结合注入的知识进行实施测试,结果如下。

# 使用注入 

# 拼接补全SQL语法 

Json.objects.filter(**{"""data__breed'='"a"') OR 11=1 OR('d""":'x',}) 

总结

本次总结Python的SQL注入和ORM注入的挖掘方法和相关案例,SQL注入方面没有找到对应的实际案例,咱们编写简单的案例作为参考。ORM注入为两个案例,分别是关于模块和框架。综合作为实战挖掘的参考,个人之力,恐有疏漏,盼斧正。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读