Apr092020
Sqli-labs Less-42 堆叠注入
pass_change.php关键代码
$username= $_SESSION["username"];
$curr_pass= mysql_real_escape_string($_POST['current_password']);
$pass= mysql_real_escape_string($_POST['password']);
$re_pass= mysql_real_escape_string($_POST['re_password']);
$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
pdate更新数据后,经过mysq...阅读全文
抢沙发
Apr092020
Sqli-labs Background-8 堆叠注入
Stacked injections:堆叠注入。从名词的含义就可以看到应该是一堆sql语句(多条)一起执行。而在真实的运用中也是这样的,我们知道在mysql中,主要是命令行中,每一条语句结尾加 ; 表示语句结束。这样我们就想到了是不是可以多句一起使用。这个叫做stacked injection。
0x01 原理介绍
在SQL中,分号(;)是用来表示一条sql语句的结束。试想一下我们在 ; 结束一个sql语句后继续构造下一条语...阅读全文
Apr092020
Sqli-labs Less-37 利用 ‘ 的utf-16突破mysql_real_escape_string()函数转义
关键代码
$uname1=$_POST['uname'];
$passwd1=$_POST['passwd'];
$uname = mysql_real_escape_string($uname1);
$passwd= mysql_real_escape_string($passwd1);
mysql_query("SET NAMES gbk");
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
本关与34关是大致相似的,区别在于处理post内容用的是mysql_real_escape_string...阅读全文
Apr092020
Sqli-labs Less-36 宽字节注入 绕过mysql_real_escape_string()函数转义
关键代码
function check_quotes($string)
{
$string= mysql_real_escape_string($string);
return $string;
}
$id=check_quotes($_GET['id']);
mysql_query("SET NAMES gbk");
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
print_r(mysql_error());
上面的check_quotes()函数是利用了mysql_real_escape_string()函数进行的过滤。
mysql_real_escape_string() 函...阅读全文
Apr092020
Sqli-labs Less-35 addslashes()函数失效了
35关和33关是大致的一样的,唯一的区别在于sql语句的不同。
function check_addslashes($string)
{
$string = addslashes($string);
return $string;
}
$id=check_addslashes($_GET['id']);
mysql_query("SET NAMES gbk");
$sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
区别就是id没有被’ “符号包括起来,那我们就没有必要去考虑check_addslashes()函数的意义了,...阅读全文
Apr092020
Sqli-labs Less-34 利用 ‘ 的utf-16突破addslashes()函数转义
关键代码
$uname1=$_POST['uname'];
$passwd1=$_POST['passwd'];
$uname = addslashes($uname1);
$passwd= addslashes($passwd1);
mysql_query("SET NAMES gbk");
@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";
本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ‘ \ 的处理。由上面的例子可以看到我...阅读全文
Apr092020
Sqli-labs Less-33 宽字节注入 嵌套查询 绕过addslashes()函数转义
关键代码
function check_addslashes($string)
{
$string= addslashes($string);
return $string;
}
$id=check_addslashes($_GET['id']);
mysql_query("SET NAMES gbk");
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
print_r(mysql_error());
此处过滤使用函数addslashes()
addslashes() 函数返回在预定义字符之前添加反斜杠的字符串。
预定义字符是:
单引号...阅读全文
Apr092020
Sqli-labs Less-32 宽字节注入 嵌套查询
关键代码
function check_addslashes($string)
{
$string = preg_replace('/'. preg_quote('\\') .'/', "\\\\\\", $string); //escape any backslash
$string = preg_replace('/\'/i', '\\\'', $string); //escape single quote with a backslash
$string = preg_replace('/\"/', "\\\"", $string); ...阅读全文
Apr092020
Sqli-labs Background-7 宽字节注入
Less-32,33,34,35,36,37六关全部是针对’和\的过滤,所以我们放在一起来进行讨论。
我们在此介绍一下宽字节注入的原理和基本用法。
原理:mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%aa%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围)。我们在过滤 ‘ 的时候,往往利用的思路是将 ‘ 转换为 \’ (转换的函数或者思路会在每一关遇到的时候...阅读全文
Apr092020
Sqli-labs Background-6 服务器(两层)架构
首先介绍一下29,30,31这三关的基本情况:
服务器端有两个部分:第一部分为tomcat为引擎的jsp型服务器,第二部分为apache为引擎的php服务器,真正提供web服务的是php服务器。工作流程为:client访问服务器,能直接访问到tomcat服务器,然后tomcat服务器再向apache服务器请求数据。数据返回路径则相反。
此处简单介绍一下相关环境的搭建。环境为ubuntu14.04。此处以我搭建的环境为例,我们...阅读全文