SQLol上面的挑战共有14关,接下来我们一关一关来突破. Challenge 0 目的是让查询返回所有的用户名,而不是只有一个. SELECT username FROM users WHERE username = ['1'] GROUP BY username ORDER BY username ASC 注入点在[1]处 构造POC:  1' or 1=1# 或者 1' and 1=2 union select username from users# 都可以查询到所有的用户名. Chal…
最近下载了SQLol测试了一下,感觉挺好玩的,做一下记录. SQLol是一个可配置得SQL注入测试平台,它包含了一系列的挑战任务,让你在挑战中测试和学习SQL注入语句,SQLol还是比较有创意的项目. SQLol is now part of the Magical Code Injection Rainbow framework at http://github.com/SpiderLabs/MCIR and the standalone version will no longer be m…
前面,我们已经安装好了SQLol,打开http://localhost/sql/,首先跳转到http://localhost/sql/select.php,我们先从select模块进行测试. 一条完成Select语句,大致可以这样表示: SELECT [username] FROM [users] WHERE username = ['1'] GROUP BY [username] ORDER BY [username ASC] [having [1=1] ][limit [0,1] ] 接收的…
访问首页的insert模块,http://127.0.0.1/sql/insert.php,开始对insert模块进行测试. insert语句: INSERT INTO [users] ([username], isadmin) VALUES (['1'], [0]) 接收的参数可能拼接到上述语句中[]的任一个位置. 在这里我们一般使用 1.报错注入 2.盲注(布尔类型.时间延迟类型) 有的注入点可以同时使用多种方法注入,这里只演示一种. 下面演示注入到不同位置的方法. 一.Value(stri…
访问首页的delete模块,http://127.0.0.1/sql/delete.php,开始对delete模块进行测试. delete语法: DELETE FROM [users] WHERE [username] = ['1'] 几个位置都可能存在注入,这里只演示一种. 下面演示注入到不同位置的方法. 一.String in WHERE clause 构造POC: ' or updatexml(1,concat(0x7e,(database()),0x7e),0) or ' 获取数据库 二…
访问首页的update模块http://127.0.0.1/sql/update.php,开始对update模块进行测试. update语法: UPDATE [users] SET [username] = ['haxotron9000'] WHERE username = ['1'] 接收的参数可能拼接到上述语句中[]的任一个位置,4个位置,共有5种不同的类型.下面开始演示: 一.String in WHERE clause 构造POC: ' or updatexml(1,concat(0x7…
在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还是值得关注部分,那什么是sql注入? SQL 注入是一种专门针对SQL语句的攻击方式.通过把SQL命令插入到web表单提交或输入域名或者页面请求的查询字符串中,利用现有的程序,讲这些恶意的SQL注入到后台的数据库中. SQL注入分2种,一种是平台层注入,一种是代码层注入.前者是因为数据库平台的漏洞或…
在进行java web 测试时,经常会忽略的测试种类就是sql注入测试,这类缺陷造成的原因是开发技术在这方面欠缺的表现,虽然不常见,但一旦有这类缺陷,就很因此对运营的数据造成很多不必要的损失,所以,还是值得关注部分,那什么是sql注入? SQL 注入是一种专门针对SQL语句的攻击方式.通过把SQL命令插入到web表单提交或输入域名或者页面请求的查询字符串中,利用现有的程序,讲这些恶意的SQL注入到后台的数据库中. SQL注入分2种,一种是平台层注入,一种是代码层注入.前者是因为数据库平台的漏洞或…
那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用拼接方式的sql,都可以防止该类问题的发生. 一般情况,如果测试人员了解dao层的具体设计,如果使用的就是非拼接方式的,基本是可以拦截大部分这些存在问题的sql了.而如果使用的是拼接方式,就可以好好的设计测试用例,进行测试了. 那又为什么非拼接方式就可以有效的防止SQL注入测试呢? 修改上部分核心代…
那为什么出现以上问题呢?这是程序代码层控制不当导致的.如果web前端对输入数据控制严格,会对数据库进行操作的字符串,在客户端做敏感字符转义处理,或者在操作数据库的dao层,使用动态参数的sql,不使用拼接方式的sql,都可以防止该类问题的发生. 一般情况,如果测试人员了解dao层的具体设计,如果使用的就是非拼接方式的,基本是可以拦截大部分这些存在问题的sql了.而如果使用的是拼接方式,就可以好好的设计测试用例,进行测试了. 那又为什么非拼接方式就可以有效的防止SQL注入测试呢? 修改上部分核心代…