navicat中oracle手工注入,SQL手工注入基础篇

favicon.ico摘要:

t1,user(),database(),4,5#,结果如下:     同样在最开始的时候我们提到了MySql的几个系统表,我们也可以从这些系统表中获取所有表名,列数,字段名等数据。  例如查询所有表名,提交lisi'and1=2unionselect1,2,3,4,TABLE_NAMEfromINFORMATION_SCHEMA.TABLESwhereTABLE_SCHEMA=

0.前言

本篇博文是对SQL手工注入进行基础知识的讲解,更多进阶知识请参考进阶篇(咕咕),文中有误之处,还请各位师傅指出来。学习本篇之前,请先确保以及掌握了以下知识:

基本的SQL语句

HTTP的GET、POST请求,URL编码

文中所有例题选自sqlilab,可以先配置好一起边看边操作。因为虚拟机炸了,所以我自己搭建了一个简陋的平台,sqlilab可自行进行搭建练习,在后面的博客也会写一些关于sqlilab的wp。

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

1.准备工作

在开始SQL注入之前,我们首要需要了解SQL注入的原理,对于一个新安装好的MySql数据库,你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示

0815de97-e923-4b4f-a50e-a3a9dfc53c7f.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

而SQL注入要干的,这些系统数据库中存储了MySql各个数据库的属性以及用户信息,我们要做的就是绕过过滤再来利用这些系统表进行查询。

了解了这个之后我们还要了解一点就是PHP的GET方法和POST方法传参的区别,如果使用GET方法,则会自动进行一次url解码,例如传入%23实际得到‘#’,而POST则会将数据原封不动的传输。下面我们开始进入正式的SQL注入阶段。

2.判断注入类型

一般的对于SQL的查询语句,有字符型和数值型查询,而这两者的区别就是是否有单引号,这决定了我们接下来应该如何构造SQL注入语句。

判断方法有如下几种,

骤:标记-整理-清除如下图所示然后将右面的进行删除计科达到回收效果。7、分代收集算法分代收集算法是根据内存的分代选择不同的算法。对于新生代,一般选择复制算法。对于老年代,一般选择标记-整理-清除算法。

+-数值,如果是数值型的,你可以尝试使用1+1,1+2,这样的语句,例如

d5c54da7-8620-4c83-8c49-48b2226f8a32.jpg看网页回显是否正确。

and 1=1,and 1=2,直接在后面添加“1 and 1=1”和“1 and 1=2”(前面有个空格)来进行查询,若1=1回显正确而1=2回显错误则为数值型。

加‘#,在后面添加"#进行查询,若回显正确则表明为字符型。

除了上述几种方法还可以用其他方法进行判断,但原理都是构造SQL语句进行判断。

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

3.查列数

通过上述方法知道了注入类型之后,我们就可以进行下一步的操作了,在这里我搭建了一个简易的存在字符型查询漏洞的页面,大家可以在本地搭建一下一边学习一边练习。

入类型之后,就是进行确定一些数据表的信息,方便后面的盲注,最后在从这些注入点得到我们想要的信息。  对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不

SQL代码如下:

个问题。每次只能使用一半的内存。是不是有点少。。为了解决这个问题,我们对内存就进行了划分。我们对内存分为了三块区域。内存区域所占百分比Eden80%survivor10%TenuredGen一点点复制

3970ab90-8b99-441e-afbb-8ca6cb2e0cbb.jpg

05497969-d757-45d4-a15f-856664c42886.jpg

1 /*

2 Navicat MySQL Data Transfer3

4 Source Server : Mysql5 Source Server Version : 505536 Source Host : localhost:33067 Source Database : test8

9 Target Server Type : MYSQL10 Target Server Version : 5055311 File Encoding : 6500112

13 Date: 2019-09-18 23:17:5314 */

15

16 SET FOREIGN_KEY_CHECKS=0;17

18 ------------------------------

19 --Table structure for secret_table

20 ------------------------------

21 DROP TABLE IF EXISTS`secret_table`;22 CREATE TABLE`secret_table` (23 `fl4g` varchar(32) DEFAULT NULL

24 ) ENGINE=MyISAM DEFAULT CHARSET=utf8;25

26 ------------------------------

27 --Records of secret_table

28 ------------------------------

29 INSERT INTO `secret_table` VALUES ("flag_is_here");30

31 ------------------------------

32 --Table structure for student

33 ------------------------------

34 DROP TABLE IF EXISTS`student`;35 CREATE TABLE`student` (36 `id` int(11) NOT NULLAUTO_INCREMENT,37 `name` varchar(255) DEFAULT NULL,38 `class` varchar(255) DEFAULT NULL,39 `age` int(11) DEFAULT NULL,40 `note` varchar(16) DEFAULT "",41 PRIMARY KEY(`id`)42 ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;43

44 ------------------------------

45 --Records of student

46 ------------------------------

47 INSERT INTO `student` VALUES ("1", "zhangsan", "nss", "18", "");48 INSERT INTO `student` VALUES ("2", "lisi", "nss", "19", "");49 INSERT INTO `student` VALUES ("3", "wangwu", "nss2", "20", "");50 INSERT INTO `student` VALUES ("4", "zhaoliu", "nss2", "21", "");51 INSERT INTO `student` VALUES ("5", "sunqi", "nss2", "22", "");52 INSERT INTO `student` VALUES ("6", "qianba", "nss", "23", "");53 INSERT INTO `student` VALUES ("7", "liujiu", "nss", "24", "");

View Code

PHP代码如下:

33067SourceDatabase:test89TargetServerType:MYSQL10TargetServerVersion:5055311FileEncoding:650011213D

3970ab90-8b99-441e-afbb-8ca6cb2e0cbb.jpg

05497969-d757-45d4-a15f-856664c42886.jpg

1 <?php2 if (!empty($_POST["st"])) {3 $conn = mysqli_connect("localhost","root","root","test");4 $name = $_POST["name"];5 $sql = "select * from student where name="".$name."";";6

7 $result = mysqli_query($conn,$sql);8

9 echo "

IdNameClassAgeNote

18 while($row = mysqli_fetch_array($result)) {19 echo "

";20 echo "" . $row["id"] . "";21 echo "" . $row["name"] . "";22 echo "" . $row["class"] . "";23 echo "" . $row["age"] . "";24 echo "" . $row["note"] . "";25 echo "";26 }27 echo "";28

29 mysqli_close($conn);30 }31 ?>

32

33

34

35

36

37 提交

38

39

40


41 Source

42

View Code

2d8b3d7c-220e-42f1-a195-5caf957b518e.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

通过上面的判断我们知道是字符型注入,现在我们需要查出这个数据表的列数来为后面的联合查询做铺垫。

当查询语句最后为where xx 的时候我们使用order by num;

当查询语句最后为limit xx的时候我们使用into @,@;

对于第一种order by num; num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下

78d215a5-69fc-4d9f-b24b-898a0ded44c0.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

09c6d31b-3cab-44cf-a2fe-ab89dcee548b.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

对于lisi" order by 6#,lisi是数据库中的正常数据,单引号是为了闭合前面的select语句,#是mysql的单行注释语句,提示报错,换成5则正确,说明该表有5列。

对于limit xx的情况,我会在另一篇额外讲解。

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

4.确定字段位置

当我们获得表的列数之后,就可以通过联合查询获得数据库的信息,但在此之前,我们还需要确定每个字段显示在网页上的位置,方便查看后面的数据。

Sql的几个系统表,我们也可以从这些系统表中获取所有表名,列数,字段名等数据。  例如查询所有表名,提交lisi"and1=2unionselect1,2,3,4,TABLE_NAMEfrom

对于例题,我们知道列数为5之后,构造参数lisi" and 1=2 union select 1,2,3,4,5#即可知道每个字段的位置

e29b05d1-d3f6-4a43-9379-e949e7786bbb.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

完整的SQL语句就是select * from student where name = ‘lisi’ and 1=2 union select 1,2,3,4,5#";

。 5.获取数据库信息  当列数和字段位置都知道后,我们就可以通过进一步的查询来获取数据库信息了,下面提供一些常用的数据库函数。  database():查看当前数据库名称  version

and 1=2是为了避免一些只显示一行的页面过滤掉后面的联合查询的数据,所以让前面的查询条件永远为false,这里你不加这个,但为了方便我们都加上这个。

000,0x0000000100000000)edenspace32768K,1%used[0x00000000d6000000,0x00000000d6052030,0x00000000d80000

union就是合并操作,完整语义就是使用union合并两个select的结果集,前者为空,后者结果为1,2,3,4,5,所以就会把这些结果合并然后显示到对应的字段。

能缩短停顿时间。分代收集(分成各种Region)空间整合(类似于标记清理算法)可预测的停顿()。步骤初始标记并发标记最终标记筛选回收13、小结:至此我们就已经掌握了大部分GC的知识。这可不是一个小工程

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

5.获取数据库信息

当列数和字段位置都知道后,我们就可以通过进一步的查询来获取数据库信息了,下面提供一些常用的数据库函数。

每个字段的位置    完整的SQL语句就是select*fromstudentwherename=‘lisi’and1=2unionselect1,2,3,

database():查看当前数据库名称

version():查看数据库版本信息

user():返回当前数据库连接的用户

char():将ASCII码转化成字符,用于分隔每个字段的内容

se,这里你不加这个,但为了方便我们都加上这个。  union就是合并操作,完整语义就是使用union合并两个select的结果集,前者为空,后者结果为1,2,3,4,5,所以就会把这些结果合并然后显

使用方法就是将函数放在列的位置,例如提交lisi" and 1=2 union select 1,user(),database(),4,5#,结果如下:

Times:user=0.02sys=0.00,real=0.01secs]HeapPSYoungGentotal37888K,used328K[0x00000000d6000000,0x000000

83aff2a3-75c5-434a-b273-9e79367b6865.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

同样在最开始的时候我们提到了MySql的几个系统表,我们也可以从这些系统表中获取所有表名,列数,字段名等数据。

得数据库的信息,但在此之前,我们还需要确定每个字段显示在网页上的位置,方便查看后面的数据。  对于例题,我们知道列数为5之后,构造参数lisi"and1=2unionselect1,2,3,4

例如查询所有表名,提交lisi" and 1=2 union select 1,2,3,4,TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_SCHEMA="test,结果如下

oungGen:22446K->648K(37888K)]42926K->21136K(123904K),0.0011193secs][Times:user=0.00sys=0.00,re

65cd72bb-4a9c-4ce6-bf12-e2ea637ebf2a.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为test的所有表名,MySql的表属性会存储在这个表中,因为后面还有一个单引号,所以这里右边就不要单引号了。

itxx的时候我们使用into@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下

这样我们就查询到了所有的表名,现在我们发现有个表叫做secret_table,猜测flag隐藏在其中,那么我们再来获取这个表所有的字段名。

个对象的所占内存扩大,因此我们声明一个大点的空间。测试实验代码如下:publicclassA{privateObjectinstance;publicA(){byte[]m=newbyte[20*10

提交lisi" and 1=2 union select 1,2,3,4,COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME="secret_table。结果如下

arNew收集器特点:由单线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:

be83f303-5829-4531-8412-fbe59d9ae58f.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

语义同上,这里就不在做解释了,现在我们可以看到这个表有一个叫fl4g的字段,那flag就藏在这里没错了。

Code  通过上面的判断我们知道是字符型注入,现在我们需要查出这个数据表的列数来为后面的联合查询做铺垫。当查询语句最后为wherexx的时候我们使用orderbynum;当查询语

接下来要做的就简单了,我们只需要提交lisi" and 1=2 union select 1,2,3,4,fl4g from secret_table#

们运行实例代码来看,JVM在循环引用时,是否能被收集(如果回收了就说明垃圾回收器用的不是引用计数法)。如果想打印日志信息,请填入如下参数。-verbose:gc-XX:+PrintGCDetails其

477a5ca5-cf86-442a-8fe1-e084afccdd79.jpg

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

到此我们就找到了最终的flag。

uttontype="submit"name="st"value="1">提交3839

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

6.总结

SQL手工注入的基础知识道驰就结束了,推荐看完了这篇再去学习SQLmap的知识,可以很快上手也可以了解其本质的东西,不推荐直接学习SQLmap成为脚本小子。

中进行复制与清除。这里我们即提高了效率,又减少了内存分配。如果Survivor不够放,那就扔到老年代里,或者其他方法,反正有内存担保。6、标记-整理算法复制算法主要针对新生代内存收集方法。标记-整理算

再梳理一遍上述知识,首先找到注入点,注入点一般是网页的某个提供查询的地方,然后确定是字符型还是数值型,当确定了注入类型之后,就是进行确定一些数据表的信息,方便后面的盲注,最后在从这些注入点得到我们想要的信息。

18------------------------------19--Tablestructureforsecret_table20------------------------------21D

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

.$row["note"]."";25echo"";26}27echo"";2829mysqli_close($

对于更多的SQL注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。

束了,推荐看完了这篇再去学习SQLmap的知识,可以很快上手也可以了解其本质的东西,不推荐直接学习SQLmap成为脚本小子。  再梳理一遍上述知识,首先找到注入点,注入点一般是网页的某个提供查询的地方

对于CTF题目来说,一般不是让你盲注,会将代码给你,这时候注入点肯定是会有诸多的过滤,这时候我们就不能直接执行上述语句了,我们就需要构造一些语句去绕过执行,但最终要达到的效果和上述内容是一致的。

注入知识,以及一些绕过技巧我将会在后面的进阶篇详解阐述。 深入理解JVM垃圾回收机制1、垃圾回收需要解决的问题及解决的办法总览1、如何判定对象为垃圾对象引用计数法可达性分析法2、如何回收回收

et_table28------------------------------29INSERTINTO`secret_table`VALUES("flag_is_here");303

,37`name`varchar(255)DEFAULTNULL,38`class`varchar(255)DEFAULTNULL,39`age`int(11)DEFAULTNULL,40`note`

(16)DEFAULT"",41PRIMARYKEY(`id`)42)ENGINE=MyISAMAUTO_INCREMENT=9DEFAULTCHARSET=utf8;4344----

48INSERTINTO`student`VALUES("2","lisi","nss","19","");49INSE

student`VALUES("3","wangwu","nss2","20","");50INSERTINTO`stu

;52INSERTINTO`student`VALUES("6","qianba","nss","23","");53I

你至少会包含三个已经建立好的数据库分别是user、infomation_schema、performance_schema如下图所示 而SQL注入要干的,这些系统数据库中存储了MySql各个

ocalhost","root","root","test");4$name=$_POST["name"];5$sql="select*fromstudentwherename=

000000,0x0000000082081fd8,0x0000000087400000)Metaspaceused2638K,capacity4486K,committed4864K,reserve

ION_SCHEMA.TABLESwhereTABLE_SCHEMA="test,结果如下     第五个位置也就是查询INFORMATION_SCHEMA.TABLES表中数据库为

例如  看网页回显是否正确。and1=1,and1=2,直接在后面添加“1and1=1”和“1and1=2”(前面有个空格)来进行查询,若1=1回显正确

oot结点开始向下搜索,路径称为引用链,当对象没有任何一条引用链链接的时候,就认为这个对象是垃圾,并进行回收。那么什么是GCroot呢(虚拟机在哪查找GCroot)。虚拟机栈(局部变量表)方法区的类属

ote"]."";25echo"";26}27echo"";2829mysqli_close($conn);30}31?

343536

线程变成了多线程垃圾收集器。如果要用CMS进行收集的话,最好采用ParNew收集器。实现原理都是复制算法。缺点:性能较慢10、ParallelScavenge收集器主用算法:复制算法(新生代收集器)吞

to@,@;对于第一种orderbynum;num代表数值,语义就是以第几列进行排序,当列不存在是就会报错,我们就可以用二分的方法找出正确的列数。如下    &

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值