Python代码审计实战案例总结之SQL和ORM注入(2)
engine = create_engine('mysql://root:123456@192.168.56.101:3306/mysql?charset=utf8') DB_Session = sessionmaker(bind=engine) session = DB_Session() session.execute('use mysql;') print( session.execute( """ select * from user where User='root' and 11=1; """ ).fetchall() ) 这个是使用sqlalchemy的ORM注入,它存在任意执行SQL语句的接口。道理上讲这个是功能,实际情况大多数程序员都会认为ORM是能够防御SQL注入,这个可能会成为漏洞。通过转义可以更好的解决问题,但是官方可能并不重视。另外还有sqlalchemy几个问题利用order_by注入、利用”limit”和”offset”关键词向”select()”函数传递注入等等,方法一样利用模块过滤不严,暂不多论。 (2) Django JSON SQL注入(CVE-2019-14234) (编辑:ASP站长网) |