之前参与“强网杯”,学到了不少姿态,其间的web题three hit形象深入,考的是二次注入的问题,这儿对二次注入测验做一个小结。
0×01什么是二次注入?
所谓二次注入是指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询句子中导致的注入。
二次注入是sql注入的一种,可是比一般sql注入运用愈加困难,运用门槛更高。一般注入数据直接进入到 SQL 查询中,而二次注入则是输入数据经处理后存储,取出后,再次进入到 SQL 查询。
0×02二次注入的原理
二次注入的原理,在之一次进行数据库刺进数据的时分,仅仅只是运用了 addslashes 或者是凭借 get_magic_quotes_gpc 对其间的特别字符进行了转义,在写入数据库的时分仍是保留了本来的数据,可是数据自身仍是脏数据。
在将数据存入到了数据库中之后,开发者就以为数据是可信的。鄙人一次进行需求进行查询的时分,直接从数据库中取出了脏数据,没有进行进一步的查验和处理,这样就会形成SQL的二次注入。比如在之一次刺进数据的时分,数据中带有单引号,直接刺进到了数据库中;然后鄙人一次运用中在凑集的过程中,就形成了二次注入。
0×03二次注入的实例——SQLIlab lesson-24
学习SQL注入,必定要刷SQLIlab,这儿以SQLIlab lesson-24为例,也是调查的二次注入的点。翻开标题
这题正常的流程是首要注册一个账号,然后登陆进去会让你修正新的暗码:
假如直接测验在登陆处测验SQL注入,payload: admin’# 发现失利:
看一下源代码:
登陆处的username和password都通过了mysql_real_escape_string函数的转义,直接履行SQL句子会转义’,所以该处无法形成SQL注入。
Ok,此刻咱们注册一个test’#的账号:
注册用户的时分用了mysql_escape_string过滤参数:
可是数据库中仍是刺进了问题数据test’#
也就是说通过mysql_escape_string转义的数据存入数据库后被复原,这儿做了一个测验:
回到标题,此刻,test用户的本来暗码为test,咱们以test’#用户登陆,再进行暗码修正
咱们无需填写current password即可修正test用户的暗码:
咱们再看一下test用户的暗码:
Ok,咱们看一下源代码:
Username直接从数据库中取出,没有通过转义处理。在更新用户暗码的时分其实履行了下面的指令:
“UPDATEusers SET PASSWORD=’22′ where username=’test’#‘ and password=’$curr_pass’”;
[1] [2] 黑客接单网
fdisk -l 检测是否现已存在: if(!$article){黑客seo,苹果id找黑客 厂商补丁:黑客seo,苹果id找黑客,找黑客在哪找RewriteCond %{REQ...
export AFLSMART=$(pwd)/aflsmart支撑在曩昔的APT要挟或许网络进犯活动中,运用邮件投递歹意的文档类载荷对错常常见的一种进犯办法,一般投进的文档大多为Office文档类型,...
原因浅析import java.util.HashSet;Ualpha表明26为大写字母 /// 显现远程桌面端口 /// </summary>0x01 一个...
#3 0x542960 in readGlyph afdko/c/public/lib/source/cffread/cffread.c:2927:14临时解决建议DC寻找黑客帮我找被偷的手机, Ve...
System Profiler用来获取一些体系信息,比方体系版别,Flash版别,浏览器版别等。 $value = $this->enCrypt($value); --script-tra...
3、在Windows 7, Windows Server 2008, and Windows Server 2008 R2 上启用网络身份认证接下来,我们探讨机器学习如何能为我们提供一些检测方面的优势...