Lampiao靶场一、信息收集
参考文章链接
Lampiao靶场https://blog.csdn.net/weixin_58666006/article/details/141863226
结果如图:
打开网站:
尝试Sql注入,由于该网页使用<script>alert()</script>进行报错,导致Sql注入难度太高,使用Sql注入入侵不现实。
御剑工具扫描:
每个都看下,看似最有用的就两个:
经过尝试发现,test.php可以下载源文件,如果能下载登录时的源文件就可以进行代码审计。
二、代码审计
1、下载
(1)锁定登录文件
(2)分析file是post还是get(火狐)
第一步:get请求方式
第二步:POST请求方式
确认是POST请求方式,保存源文件。
2、代码审计
(1)源代码(php)
<?php
session_start();
include('c.php');
include('head.php');
if(@$_SESSION['logged']!=true)
{
$_SESSION['logged']='';
}
if($_SESSION['logged']==true && $_SESSION['admin']!='')
{
echo "you are logged in :)";
header('Location: panel.php', true, 302);
}
else
{
echo '<div align=center style="margin:30px 0px 0px 0px;">
<font size=8 face="comic sans ms">--==[[ billu b0x ]]==--</font>
<br><br>
Show me your SQLI skills <br>
<form method=post>
Username :- <Input type=text name=un>   Password:- <input type=password name=ps> <br><br>
<input type=submit name=login value="let\'s login">';
}
if(isset($_POST['login']))
{
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
$run='select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'';
$result = mysqli_query($conn, $run);
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
echo "You are allowed<br>";
$_SESSION['logged']=true;
$_SESSION['admin']=$row['username'];
header('Location: panel.php', true, 302);
}
else
{
echo "<script>alert('Try again');</script>";
}
}
echo "<font size=5 face=\"comic sans ms\" style=\"left: 0;bottom: 0; position: absolute;margin: 0px 0px 5px;\">B0X Powered By <font color=#ff9933>Pirates</font> ";
?>
登录部分
if(isset($_POST['login']))
{
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
$run='select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'';
$result = mysqli_query($conn, $run);
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_assoc($result);
echo "You are allowed<br>";
$_SESSION['logged']=true;
$_SESSION['admin']=$row['username'];
header('Location: panel.php', true, 302);
}
else
{
echo "<script>alert('Try again');</script>";
}
分析:代码获取的是POST请求的数据,所以应该使用POST请求发送数据。
且代码对单引号进行了过滤处理,遇到单引号就使其变为空,因此我们不能再输入单引号了。
(2)修改源代码
我们修改源代码,让其输出拼接而成的Sql语句,这样会大大提高我们的效率。
修改部分代码,如图:
构建小靶场:
观察传入到数据库中的SQL语句:
select * from auth where pass='123' and uname='admin'
我们可以将计就计也使用转义的思想进行绕过。我们可以将pass的值赋值为123\,这样我们就能得到如下这串Sql语句:
Sql语句如下:
select * from auth where pass='123\' and uname='admin1'
然后将uname的值赋值为 or 1=1 -- - SQL语句如下:
到此位置,恶意的Sql语句就被我们注入成功,测试看看能不能成功进入。
三、文件上传
1、观察网站
(1)show user
没啥用。
(2)add user
观察到该网页对应的源文件是panel.php,我们用老方法下载源文件进行代码审计。
2、代码审计
panel.php源代码中的关键代码:
这样我们就能执行我们上传的木马文件了
3、上传并使用木马
(1)制作一句话图片木马并上传:
制作:
上传:
检测:
复制图像链接:
http://xxx.xxx.xxx.xxx/uploaded_images/3333.jpg
可以看出1111.png在uploaded_images目录下。所以load=/uploaded_images/1111.png
continue=123(随便填)
(2)执行上传过的一句话图片木马
木马执行成功。
(3)使用蚁键连接
要注意,panel.php想要连接成功是需要登录过的,因此要传递登录过的Cookie值。
连接成功:
四、拖库
参照文章:
Lampiao靶场https://blog.csdn.net/weixin_58666006/article/details/141863226