Web安全学习笔记 SQL注入中
阅读原文时间:2022年05月14日阅读:1

Web安全学习笔记 SQL注入中

繁枝插云欣 ——ICML8


  1. 权限提升
  2. 数据库检测
  3. 绕过技巧

一.权限提升

UDF

User Defined Function,用户自定义函数

是MySQL提供的一个功能

可以通过编写DLL扩展为MySQL添加新函数

扩充其功能

当获得MySQL权限之后

即可通过这种方式上传自定义的扩展文件

从MySQL中执行系统命令


二.数据库检测

sleep sleep(1)

benchmark BENCHMARK(5000000, MD5('test'))

字符串连接

SELECT 'a' 'b'

SELECT CONCAT('some','string')

version

SELECT @@version

SELECT version()

识别用函数

connection_id()

last_insert_id()

row_count()

字符串连接

'a'||'oracle' --

SELECT CONCAT('some','string')

version

SELECT banner FROM v$version

SELECT banner FROM v$version WHERE rownum=1

WAITFOR WAITFOR DELAY '00:00:10';

SERVERNAME SELECT @@SERVERNAME

version SELECT @@version

字符串连接

SELECT 'some'+'string'

常量

@@pack_received

@@rowcount

sleep pg_sleep(1)


三. 绕过技巧

1.编码绕过

大小写

url编码

html编码

十六进制编码

unicode编码

2.注释

// -- -- + -- - # /**/ ;%00

内联注释用的更多

它有一个特性 /!**/

只有MySQL能识别

e.g. index.php?id=-1 /*!UNION*/ /*!SELECT*/ 1,2,3

3.只过滤了一次时

union => ununionion

4.相同功能替换

  1. 函数替换

substring / mid / sub

ascii / hex / bin

benchmark / sleep

  1. 变量替换

user() / @@user

  1. 符号和关键字

and/ &

or / |

5.HTTP参数

  1. HTTP参数污染

id=1&id=2&id=3

根据容器不同会有不同的结果

  1. HTTP分割注入

6.缓冲区溢出

一些C语言的WAF处理的字符串长度有限超出某个长度后的payload可能不会被处理

二次注入有长度限制时通过多句执行的方法改掉数据库该字段的长度绕过