靶场实战——Billu

Lampiao靶场一、信息收集

参考文章链接

Lampiao靶场icon-default.png?t=N7T8https://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> &nbsp 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靶场icon-default.png?t=N7T8https://blog.csdn.net/weixin_58666006/article/details/141863226

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值