Sqli-labs5
Less-12 基于错误的双引号POST型字符型变形的注入
POST-Error Based-Double Quotes-String-with twist
首先尝试username+单引号,无回显
再尝试username+双引号,报错回显
可以看出对输入变量还加了括号,故使用username+")来注入
成功返回我们所需信息,接下来和Less-11相同
Less-13 单引号POST型字符型变形双注入
POST-Double Injection-Single Quotes-String-with twist
联想到Less-5中get方式注入,有几种方法
法一 布尔盲注
首先我们尝试如下,可以看出需要+')来闭合,同时有报错回显
如果我们的语句正确,是无法显示的
所以我们要通过报错信息来获取数据库各种信息
需要注意的是,这里我们可能不知道用户名,所以要想正确需要使用or,如图
提示我们登陆成功,说明数据库长度为8,以此类推来个盲注
法二 时间延迟注入
同上,换成if(length(database())=8,sleep(5),1),如果出现延迟,说明正确
法三 双注入法(题目提示)
我们采用之前Less-5的模板即可,可以看到出现我们的数据库名。接下来想知道啥就改concat里的第一个参数就可
Less-14 单引号POST型字符型变形双注入
POST-Double Injection-Single quotes-String-tiwst
Less-13、14标题一样,做法差不多,试了几下,发现不需要括号,用双引号即可闭合
Less-15 基于布尔/时间延迟的单引号POST型盲注
POST-Blind- Boolian/time Based- Single quotes
都可以采用Less-13的方法
Less-16 基于布尔/时间延迟的双引号POST型盲注
POST-Blind- Boolian/Time Based- Double quotes
Less-15改成双引号+)即可
Less-17 基于错误的更新查询POST注入
POST-Update Query- Error based - String
这个很明显,只有你输入的用户名在数据库中存在才可以修改,密码无所谓,改后数据库也会发生相应变化
这里就要对username动手了,需要我们对mysql的数据更新语法有所了解
我先去瞅瞅源码长啥样,下面是对数据输入的处理
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;
}
// take the variables
if(isset($_POST['uname']) && isset($_POST['passwd']))
{
//making sure uname is not injectable
$uname=check_input($_POST['uname']);
$passwd=$_POST['passwd'];
可以看到对输入的uname进行了一堆复杂的验证,包含在check_input函数中
php get_magic_quotes_gpc() stripslashes()和addslashes()的关系_blue5blue的博客-CSDN博客
首先判断是否为空,不为空截取前十五个字符,接着get_magic_quotes_gpc函数判断解析用户提示的数据,如包括有post、get、cookie过来的数据增加转义字符“”,以确保这些数据不会引起程序,特别是数据库语句因为特殊字符引起的污染而出现致命的错误,这时magic_quotes_gpc = On,添加了反斜杠,这时候有需要去除,使用stripslashes
总之经过一连串处理,我们的SQL注入几乎不可能了,但是可以看到他没有处理password的输入,所以这次从password处注入
一时半会搞不定这个双注入法,但是看到了一篇很好的文章,明天学习下
Sqli-labs之Less-17_→_→-CSDN博客&spm=1018.2226.3001.4450)