@ZZHow(ZZHow1024)
一、Low 级(基本没有做防护或者只是最简单的防护)
引用:
博客园 SQL注入注释符(#、-- 、//)使用条件及其他注释方式的探索 [ https://cnblogs.com/impulse-/p/13184023.html ]
含义:把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。
思路:判断是否存在注入,注入命令查询数据
实操:
1.先正常操作一次,观察URL变化
- 例如,输入2,点击Submit
- 观察到URL变为
- http://xxx.xxx.xxx.xxx:8000/vulnerabilities/sqli/?id=2&Submit=Submit#
- 分析URL,发现id=参数与输入的数字对应
2.判断是否存在注入
- 修改URL,id后加入1‘ and ‘1’ = ‘2判断注入类型
- http://xxx.xxx.xxx.xxx:8000/dvwa/vulnerabilities/sqli/?id=1’ and ‘1’='2&Submit=Submit#
- 完整的SQL语句:SELECT first_name,last_name FROM users WHERE user_id = ‘1’ and ‘1’='2’;(红色为添加的部分)
- 发现返回的结果为空,证明查询条件判断恒为假。
- 修改URL,id后加入1’ or ‘321’='321判断注入类型
- http://xxx.xxx.xxx.xxx:8000/dvwa/vulnerabilities/sqli/?id=1’ or ‘321’='321&Submit=Submit#
- 完整的SQL语句:SELECT first_name,last_name FROM users WHERE user_id = ‘1’ or ‘321’='321’;(红色为添加的部分)
- 发现返回的结果为users表中所有的用户数据,证明查询条件判断恒为真。
- 同时,由单引号判断,这是一个字符型SQL注入。
3.判断字段数
- 加入单引号’ ,且在语句末尾加上注释符–+(注意后面得跟上+)
- 存在注入点,且单引号闭合
插一句话:SQL语句中的两个注释符(#和–)在使用上有一些区别。如果你在Hackbar中使用了–那么你就需要跟上+,而且#不生效。而如果你在文本框中使用#那么是生效的。这是由于URL编码造成的。详见https:/