当前位置: 首页 > news >正文

SQLI LABS | Less-39 GET-Stacked Query Injection-Intiger Based

关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客

0x01:过关流程

输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来):

 http://localhost/sqli-labs/Less-39/

本关是堆叠注入,先来看一下受害者原始数据(我们的目标就是篡改信息,或者删除信息?):

首先,用 BP 抓包,然后用时间盲注的字典去爆破后端 SQL 模板:

如下,是一个可以使用的 Payload 模板:

 1 and sleep(3)

通过上面的模板,我们可以推测出其后端的 SQL 模板为:

 select * from users where id=$_GET["id"];

我们可以使用如下 Payload 做一个测试,进行校验,看看我们上面的推测是否正确:

 1 and 1=1   => 若页面回显内容,则证明存在漏洞1 and 1=0   => 若页面回显为空,则证明存在漏洞

明确了漏洞存在,且知道 Payload 该怎么写后,就是收集数据库信息、收集数据表信息 。。。 这些笔者在这里节省时间就不说了,直接当作已知条件,下面直接开始上堆叠注入的 Payload:

 -- 修改 id = 1 的用户密码为 HACKER1;update users set password='HACKER' where id=1;#

如上,我们已经能够随意篡改用户密码了。至此,SQLI LABS Less-39 GET-Stacked Query Injection-Intiger Based 成功过关。

0x02:源码分析

下面是 SQLI LABS Less-39 GET-Stacked Query Injection-Intiger Based 后端的部分源码,以及笔者做的笔记:

<?php// take the variables if (isset($_GET['id'])) {$id = $_GET['id'];//logging the connection parameters to a file for analysis.$fp = fopen('result.txt', 'a');fwrite($fp, 'ID:' . $id . "\n");fclose($fp);​// connectivity//mysql connections for stacked query examples.$con1 = mysqli_connect($host, $dbuser, $dbpass, $dbname);// Check connectionif (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: $dbname");}​// 直接拼接进 SQL 模板中$sql = "SELECT * FROM users WHERE id=$id LIMIT 0,1";/* execute multi query */// mysqli_multi_query => 执行一个或多个针对数据库的查询,多个查询用分号进行分隔。 if (mysqli_multi_query($con1, $sql)) {/* store first result set */// mysqli_stroe_result => 转移将上一次查询返回的结果集(多个结果)if ($result = mysqli_store_result($con1)) {if ($row = mysqli_fetch_row($result)) {echo '<font size = "5" color= "#00FF00">';printf("Your Username is : %s", $row[1]);echo "<br>";printf("Your Password is : %s", $row[2]);echo "<br>";echo "</font>";}//            mysqli_free_result($result);}/* print divider */// mysqli_more_results => 如果当前执行的查询存在多个结果,返回 “真”,否则返回 “假”if (mysqli_more_results($con1)) {//printf("-----------------\n");}//while (mysqli_next_result($con1));} else {echo '<font size="5" color= "#FFFF00">';print_r(mysqli_error($con1));echo "</font>";}/* close connection */mysqli_close($con1);} else {echo "Please input the ID as parameter with numeric value";}?>
http://www.lryc.cn/news/482684.html

相关文章:

  • linux安装zookeeper和kafka集群
  • 洞悉 Linux 系统运行细节,使用 atop 监测和回看系统负载状态
  • “双十一”电商狂欢进行时,在AI的加持下看网易云信IM、RTC如何助力商家!
  • Python调用企业微信的扫一扫
  • 速盾:CDN和OBS能共用流量包吗?
  • 第8章 利用CSS制作导航菜单
  • C# 集合与泛型
  • el-date-picker 设置开始时间和结束时间
  • 【Docker】 常用命令
  • docker compose - 设置名字
  • 工业拍卖平台、信息发布、租赁商城平台系统适用于全行业解决方案。
  • 一个win32 / WTL下多线程库(CThread类)的使用心得
  • 使用wordpress搭建简易的信息查询系统
  • PAT甲级 1076 Forwards on Weibo(30)
  • 揭开 gRPC、RPC 、TCP和UDP 的通信奥秘
  • 使用Web Worker来处理多线程操作,以及如何避免主线程卡顿。
  • 杂谈:业务说的场景金融是什么?
  • 在vscode实现用和Chrome开发者工具中相同的快捷键进行面板切换
  • 【ESP32+MicroPython】硬件控制基础
  • Python学习从0到1 day26 第三阶段 Spark ① 数据输入
  • kafka消费者的消费分区策略有哪些,默认是哪个?
  • 前端常用时间操作汇总
  • 106. UE5 GAS RPG 使用MVVM
  • Elasticsearch中什么是倒排索引?
  • 深度学习:AT Decoder 详解
  • pythons工具——图像的随机增强变换(只是变换了图像,可用于分类训练数据的增强)
  • C++中volatile限定符详解
  • 如何关闭Python解释器
  • 《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项
  • 渗透测试---网络基础之HTTP协议与内外网划分