web安全工程师--生长记载
环境:dvwa1.7数据库:mysql前置常识:sql句子(Click me) 在进行sql注入前,咱们先了解了解select句子。一、翻开咱们的sql终端
二、进入之后能够看到有mysql>咱们输入sql句子,即可回来咱们想要的成果,留意分号哟!咱们运用的dvwa,在咱们前几章设置的时分,会在数据库中生成一个dvwa的database;这儿咱们运用它来进行咱们的select 句子:(1)运用dvwa数据库use dvwa;(2)在users表里查询用户名为‘admin’的一切信息select * from users where user='admin';上面有三个关键,[1] '*':通配符表明匹配一切内容,也便是来者不拒[2] 'where':关键字作为条件限制。[3] 在数据库中字符串时一般由单引号包住的在这儿,select是从数据库检索数据的(3)咱们来看一下select句子别的一面,其实它相当于咱们编程言语的输出句子。不信,咱们来看看哈!select 'hello world!';(4)假使咱们有多个数据要输出怎么办,这个时分能够运用“,”来分隔每个内容。如:select user,user_id from users where user='admin';
扩展当咱们想要像上面仅仅输出多项数据,而不是检索数据的时分select 'hello','world';select 1,2,3;(5)union 联合便是将union前面那堆数据,和后边那堆数据放在一同,以便能在一个表显现。留意什么叫放在一同呢?请看比如:select 1,2,3 union select 4,5,6;解析,咱们知道select 1,2,3是输出三个数字,分别为1,2,3。后边的select也是相同输出3个数字。要是后边的输出的数据数目不一致,那么则会导致下列的过错The used SELECT statements have a different number of columns
而这个则是咱们之后进行sql注入的一个点(6)咱们接着持续来学习一个内容order by,这个是让咱们检索出来的数据进行升序或许降序摆放的。select user,user_id from users order by user;在这儿咱们,介绍一个概念便是“字段”。字段也便是一个表里边的数据列,每一个字段表明一列。如咱们这儿,咱们select句子检索user,user_id两个数据列。当咱们运用order by user的时分,会依据user数据列的的每一个数据的来进行排序,默许是升序asc。咱们看一下select user,user_id from users order by user_id;能够看到user_id的次序是递加的。要是递减的话,能够运用desc。
这儿还有一个小tips便是: 咱们除了运用字段名来作为order by的条件外,还能够运用数字。 1、表明的第一个字段 2、表明的第二个字段 如此类推就能够了,可是当不存在那个字段的时分,就会发生这样的过错。 unknown column name xx好了,到这儿。咱们这次需求的sql常识够了。下面咱们开端咱们的注入之旅三、“兔崽子mysql,看见你的尾巴了,还跑!”设置: 咱们把安全等级调整为low,先来让自己获得点决心,以免一来就被打脸。1、测验和剖析页面的功用咱们能够看到这儿有一个输入框,依据上面的提示是,输入用户的id。然后咱们输入之后,发现它回来了关于这个user的信息!这儿咱们输入“1”
这儿能够看到它回来三行数据,一行是咱们输入的用户ID。一行是用户名,别的一行是用户别号。
一起,我看一下浏览器的地址栏那里,能够发现url成这样了http://localhost/dvwa/vulnerabilities/sqli/?id=1&Submit=Submit#
咱们能够看到这儿有个id=1的东东,是不是便是咱们输入的user id呢?这儿咱们输入“2”,发现url变成了http://localhost/dvwa/vulnerabilities/sqli/?id=2&Submit=Submit#好了,到这儿,咱们能够得出这儿穿进去的id的值使咱们可控的。咱们输入的什么,则会经过id传进去!2、对id这个参数进行测验,检查一下它是否存在sql注入缝隙!这儿咱们在输入框里边输入“1'”,留意1后边有一个单引号“'”。能够发现,这儿报错了。说咱们的sql句子呈现语法过错。
这儿咱们能够进行一个猜想,首要它这个id是被两个'包住的。查询句子或许像这样select firstname,surname from users where id = '1';当咱们在1之后加了一个引号,则会导致单引号数目不平衡,那时查询句子如下。select firstname,surname from users where id = '1'';能够看到最终一个引号没被闭合,那咱们该怎么办呢?这个时分有好几种方法,(1)咱们在本来的基础上再持续输入多一个引号,也便是“1''”。这时分咱们看一下查询句子select firstname,surname from users where id = '1''';这时分得讲一个mysql的语法,
[1] [2] [3] 黑客接单网