草庐IT

学习笔记-SQL注入(SQLI-LABS第一关)

初学者掌握手工注入的过程:  (1)判断是否存在注入点     //(URL,POST表单,HTTP头部字段......)  (2)判断字段长度(字段数)    //(有可能保存在后台数据库某一个表当中,表当中的某一个或几个字段)  (3)判断字段回显位置    //  (4)判断数据库信息  (5)查找数据库名  (6)查找数据库表  (7)查找数据库表中所有字段以及字段值  (8)猜解账号密码  (9)登录管理员后台   (1)判断是否存在注入点  以SQLI-LABS第一关为例:  正常登录     URL后添加?id=1',回显错误,判断可能存在SQL注入漏洞, 进一步判断    添加

SQLI-LABS(Less-2)

Less-2(GET-Errorbased-Intigerbased)打开Less-2页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点注入语句:?id=1。可以看出传入id=1可以正常回显,那么试一下?id=1',发现在引号附近产生了歧义导致报错,并且可以看出这条SQL语句是不用引号闭合的。接着尝试注入语句?id=1and1=1--+和?id=1and1=2--+,发现注入第一条语句时正常回显,注入第二条语句时没有回显,由此判断存在注入点。判断数据表列数通过order

SQLI-LABS(Less-2)

Less-2(GET-Errorbased-Intigerbased)打开Less-2页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点注入语句:?id=1。可以看出传入id=1可以正常回显,那么试一下?id=1',发现在引号附近产生了歧义导致报错,并且可以看出这条SQL语句是不用引号闭合的。接着尝试注入语句?id=1and1=1--+和?id=1and1=2--+,发现注入第一条语句时正常回显,注入第二条语句时没有回显,由此判断存在注入点。判断数据表列数通过order

SQLI-LABS(Less-3)

Less-3(GET-Errorbased-Singlequoteswithtwist-string)打开Less-3页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点注入语句:?id=1。可以看出传入id=1可以正常回显,那么试一下?id=1',发现在引号附近产生了歧义导致报错。并且从上图报错中可以看出这条SQL语句的闭合方式为'),那么使用注入语句:?id=1')--+,看看是否能够正常闭合并注释,从下图看出是没有问题的。接着尝试注入语句?id=1')and1=1-

SQLI-LABS(Less-3)

Less-3(GET-Errorbased-Singlequoteswithtwist-string)打开Less-3页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点注入语句:?id=1。可以看出传入id=1可以正常回显,那么试一下?id=1',发现在引号附近产生了歧义导致报错。并且从上图报错中可以看出这条SQL语句的闭合方式为'),那么使用注入语句:?id=1')--+,看看是否能够正常闭合并注释,从下图看出是没有问题的。接着尝试注入语句?id=1')and1=1-

SQLI-LABS(Less-5)

Less-5(GET-Doubleinjection-SingleQuotes-String)打开Less-5页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点注入语句:?id=1。从上图可以看出传入id=1并没有回显查询结果,接着试一下?id=1',发现在引号附近产生歧义导致了报错。并且通过报错信息可以看出闭合SQL语句时用的是单引号。由于这里不回显查询结果,但是依然会显示报错信息,那么就不使用联合注入,而选择报错注入。使用注入语句:?id=1'--+看看是否能够正常

SQLI-LABS(Less-5)

Less-5(GET-Doubleinjection-SingleQuotes-String)打开Less-5页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点注入语句:?id=1。从上图可以看出传入id=1并没有回显查询结果,接着试一下?id=1',发现在引号附近产生歧义导致了报错。并且通过报错信息可以看出闭合SQL语句时用的是单引号。由于这里不回显查询结果,但是依然会显示报错信息,那么就不使用联合注入,而选择报错注入。使用注入语句:?id=1'--+看看是否能够正常

SQLI-LABS(Less-4)

Less-4(GET-Errorbased-DoubleQuotes-string)打开Less-4页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点注入语句:?id=1。可以看出传入id=1可以正常回显,那么试一下?id=1',发现也是可以正常回显的。接着尝试拼接?id=1",发现在双引号附近产生歧义导致了报错。并且从上图报错中可以看出这条SQL语句的闭合方式为"),那么使用注入语句:?id=1")--+,看看是否能够正常闭合并注释,从下图看出是没有问题的。接着尝试注

SQLI-LABS(Less-4)

Less-4(GET-Errorbased-DoubleQuotes-string)打开Less-4页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点注入语句:?id=1。可以看出传入id=1可以正常回显,那么试一下?id=1',发现也是可以正常回显的。接着尝试拼接?id=1",发现在双引号附近产生歧义导致了报错。并且从上图报错中可以看出这条SQL语句的闭合方式为"),那么使用注入语句:?id=1")--+,看看是否能够正常闭合并注释,从下图看出是没有问题的。接着尝试注

SQLI-LABS(Less-1)

Less-1(GET-Error-Singlequotes-String)打开Less-1页面,可以看到页面中间有一句PleaseinputtheIDasparameterwithnumericvalue,那么先使用ID这个参数通过GET方式传入一个数值。确定注入点通过传入id=1看到页面上查询结果是有回显的,接着尝试一下?id=1'可以看到页面报错了,说明id=1'导致SQL语句产生了歧义。通过报错信息可以看出闭合SQL语句时用的是单引号。关于在HTTP请求中的注释问题:在浏览器的GET请求中,URL中#号是用来指导浏览器动作的(例如锚点),对服务器端无用。所以,HTTP请求中不包括#,因此