(本环境是在有后台账号的情况下进行的测试,主要目的是为了理解二次注入的基本方法,在其他环境里不可能一开始知道后台信息,就可以从留言板,发布等页面进行注入,想见留言板二次注入可以看文底的外链文章)
最近在学SQL注入,搞得我是头大的很,尤其是在盲注的学习中感觉很难,今天专门搭建了个本地的oa后台来检验盲注中的报错注入效果,闲话少说,具体过程走起;
本地搭建环境
首先自己搭建本地的oa系统,压缩包我传在云盘了(点我下载-密码: v5im),我用的是WAMP搭建环境,在www文件下新建OA文件夹,解压上面压缩包所有的文件到OA文件夹下
然后打开浏览器输入 http://127.0.0.1/OA/install/install.php 开始配置基本的信息
我这里因为配置过了就不演示,配置过程中要输入mysql的账号和密码,默认是root 密码为空,这个时候点击下一步会出现填写不了企业信息的情况,需要本地打开mysql控制台更改下mysql密码,更改密码教程点我;另外在填写数据库名称的时候要是已经存在咱们mysql中的库才行,我们可以提前添加数据库,并写入一些数据进入;创建数据库和表点我
后台配置
打开 http://127.0.0.1/OA/ 登录刚刚我们自己配置的管理员后台账号进入管理界面
OK,正式开搞
首先我们用另一个浏览器打开 http://127.0.0.1/OA/ ,登录我们刚刚新建的普通账号,点击行政办公中的会议申请,新建一个会议
接下来我们回到另一个浏览器的管理员后台点击行政办公,在会议审批里可以看到子账号提交的申请,看到没问题后点击系统设置回到账户管理,点击abc账户编辑按钮,准备进行注入;
系统设置里点击账户设置,点击test账户后面的编辑,在姓名栏 abc后面加上 ' 来达到命令注入的效果:
回到另一个浏览器的普通账户页面,点击会议审核后我们会发现原本的发表意见一栏报错,说明该地方存在注入点,通过报错得知我们语句中多出来 %' 这样的语句,我们需要把后面的分号注释掉,让语句闭合,所以格式应该改成 'abc# ,前面用但单引号和后面的井号闭合语句
管理员后台在用户姓名上加上#,我们回到用户后台 发现可以正常回显证明格式正确
按照这样的逻辑,我们在管理员后台的用户姓名栏开始相关的注入测试 首先我们通过order by来获取列长 ,最后得到值为1,格式是abc' order by 1# 可以爆值,接下来用 联合查询来查用户名,结果发现正常回想,说明普通注入不能切入,此时我们可以用报错注入来获取相关的值
在管理员界面进行报错语句查询 abc' and(extractvalue(1,concat(0x7e,(select user()),0x7e))) # ,可以得到user的账号,同理我们替换user()为database()可以获取到数据库名 sqltest
ok,至此我们已经把二次注入的流程过了一遍了,我们在其他网站一样可以用在用这样的注入方式,不如在购物网站没做好关键敏感词过滤添加商品的时候,论坛发言的时候...等等场景都可以适配;