美文网首页
web安全-SQL注入

web安全-SQL注入

作者: lattr | 来源:发表于2018-12-21 15:16 被阅读31次

    本篇为web安全第一篇,例子是掌控安全提供的供学员实践用的。

    通过第一题,学习SQL注入,总结记录在此。

    下面,对靶场进行SQL注入。

    点击查看新闻后发现网址为http://117.41.229.122:8003/?id=1

    1、首先判断该网址是否存在SQL注入漏洞。
    在网址后拼接and 1=1,即结果为http://117.41.229.122:8003/?id=1 and 1=1。发现页面可以正常显示,则说明页面存在漏洞。

    2、猜测注入点有多少个(就是表的字段数是多少)。
    在网址后拼接order by 10,意思就是以第10个字段进行升序排序。默认的ASC可不写。DESC是降序。如果页面正常显示,则表明,所查的表中的字段数大于等于10。如果返回异常,则表明,所查的表中的字段数小于10,然后通过二分法,改变数字。通过多次测试,最终可找到一个最大的数字,使得页面返回正常。该靶场的注入点为2。

    3、查数据库版本。
    在网址后拼接and 1=2 union select 1,2,3...n-1, version()。其中n为注入点个数。前面的查询语句与上一个false查询出一个空表,然后在联合查询,由于第二步得到注入点为2,则查询语句为select 1,version()

    4.查出数据库名。
    在网址后拼接and 1=2 union select 1,database()。可查出当前正在使用的数据库的名称。该靶场的数据库名为maoshe

    5.查出表名。
    在网址后拼接and 1=2 union select 1,table_name from information_schema.tables where table_schema=database()
    该靶场数据库中,第一张表则显示在页面上,为admin

    information_schema.png

    information_schema数据库是MySQL系统自带的数据库,它提供了数据库元数据的访问方式。感觉information_schema就像是MySQL实例的一个百科全书,记录了数据库当中大部分我们需要了结的信息,比如字符集,权限相关,数据库实体对象信息,外检约束,分区,压缩表,表信息,索引信息,参数,优化,锁和事物等等。通过information_schema我们可以窥透整个MySQL实例的运行情况,可以了结MySQL实例的基本信息,甚至优化调优,维护数据库等。

    6、查询密码。
    由于表名为admin,我们可以猜测有密码,字段一般为password。可尝试在网址后拼接and 1=2 union select 1,password from admin
    即可拿到管理员密码。

    问题:

    • 如果第五步中查出的第一张表不为admin,则这种方法就无法获得我们想要的表名。
    • 如果第六步我们猜测字段名错误,不为password则这种方法也无法获得密码。

    附上查询字段名的语句。
    and 1=2 union select column_name from information_schema.columns where table_name='table_name' and table_schema='db_name'

    columns.png

    相关文章

      网友评论

          本文标题:web安全-SQL注入

          本文链接:https://www.haomeiwen.com/subject/ngmmkqtx.html