sqli-labs(八)——修改密码处sql注入+http头sql注入
第17关:
这是一个重置密码的功能存在sqk注入,尝试账号密码都输入'",发现只会显示登陆失败,没有报错信息。
这个时候先推测一下后台的sql形式大概应该是: update users set password = ? where name =?
那么实际上是有两个处注入,我们可以先尝试name参数的注入
分别输入:
uname=1' or 1=1 # &passwd=1&submit=Submit
uname=1') or 1=1 # &passwd=1&submit=Submit
uname=1"or 1=1 # &passwd=1&submit=Submit
uname=1") or 1=1 # &passwd=1&submit=Submit
发现页面都没有变化,于是我初步判断username参数可能没有注入漏洞
尝试password参数,这里我踩了一个坑,我开始输入的是
分别输入
uname=1 &passwd=1' or 1=1 # &submit=Submit
uname=1 &passwd=1') or 1=1 # &submit=Submit
uname=1 &passwd=1"or 1=1 #&submit=Submit
uname=1 &passwd=1") or 1=1 #&submit=Submit
发现页面也没有变化,后来看了源码才发现
这里会先用uname进行查询操作,存在该用户才会进行修改操作,于是我输入
uname=admin &passwd=1' or 1=1 # &submit=Submit
显示成功页面了,说明后台是使用的单引符号进行的拼凑。
输入uname=admin &passwd=1‘&submit=Submit ,看下程序是否会报错(如果不报错,就只能尝试盲注了)
可以看到有报错信息,可以先尝试报错注入。
后面的就直接将select user()替换成其他的查询语句即可。
这里还有一个点需要注意的,concat里面不能直接使用~,必须用0x7e。
第十八关:
这关是一个关于http header的注入
使用正确的账号密码登陆后发现,会将http header中的User-Agent显示在页面上,这关需要利用到burp,输入正确的账号密码后,提交,使用burp拦截。
我在User-Agent后面加单引符号后,发现页面会爆sql的错误,如下图
从报错信息可以看到后面还有两个参数,一个是ip,一个是用户名。如果对sql语句有一定了解的人,应该知道后台应该是个insert的操作
INSERT INTO 表名称 VALUES (值1, 值2,....)
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) 不管是上面哪一种,我们只需要使用报错注入后将后面的的参数补全,然后加上注释,如下图:
成功查询出数据
后面的操作就不继续了。
HTTP 请求头中除了 User-Agent可能存在sql注入意外,还有referer、X-Forwarded-For可能存在sql注入。
第十九关:
这是一个referer的注入,上一关也提到了,测试方法和上一关完全一样,只是出现的地方不一样而已。
sqli-labs(八)——修改密码处sql注入+http头sql注入的更多相关文章
- 【sqli-labs】 less24 POST- Second Order Injections *Real treat* -Stored Injections (POST型二阶注入 *真的好玩?* 存储注入)
简单登陆浏览一遍后,发现是一个登陆注册修改密码的应用 审查一下代码 登陆页面的username,password使用了转义 注册页面的参数也进行了转义处理 但是在修改password的页面,直接从se ...
- SQL注入系列:SQLi Labs
前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...
- ATM-JAVA程序 //程序有5处相同错误,找不出原因 转账功能没有实现,修改密码来不及实现了
package JCC;//信1705-3 20173681 靳晨晨import java.io.BufferedReader;import java.io.File;import java.io.F ...
- sqlite修改表、表字段等与sql server的不同之处
sqlite中只支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN. 其他类型的 ALTER TABLE 操作如 DROP COLUMN,ALTER COLUMN ...
- 九十八:CMS系统之登录页面CSRF保护和修改密码页面
加上CSRF防御 修改密码页面 视图 class ResetPwd(views.MethodView): decorators = [login_required] # 校验登录状态 def get( ...
- SQLI LABS Basic Part(1-22) WriteUp
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...
- 注入学习1:SQL注入语句大全
学习背景 之前做了xss预防,以及些许的注入预防了,但是不够全面,如果还是搜集了下一些常用的注入手段,以此用来进行更好的预防. 什么是注入 一般来说,SQL注入一般存在于形如:HTTP://xxx.x ...
- Atitit 修改密码的功能流程设计 attilax总结
Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...
- 使用sqlmap注入DVWA的SQL Injection菜单
1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用a ...
随机推荐
- SQL server 清除缓存
在进行性能分析的时候有时候需要清除缓存以便进行下一次分析. SQL Server提供了一些工具来清除缓存的性能数据.使用下面的语句来完成这些任务. 清除全局缓存使用下面的语句: DBCC DROPCL ...
- 一个生产可用的mysql参数文件my.cnf
[client]#客户端选项设置#设置客户端和连接字符集default_character_set = utf8port = 3306socket = /opt/mysql-5.6.24/tmp/my ...
- Redis的概念及与MySQL的区别
学了MySQL相关知识后,了解到很多公司都会用mysql+redis互补使用的,今天学习整理一下Redis的相关知识. 首先是Redis和MySQL的区别: MySQL是典型的关系型数据库:Redis ...
- Chap2:区块链基本技术[《区块链中文词典》维京&甲子]
- 转:环绕通知返回值 object 类型
遇到 AOP 环绕通知报错 “return value from advice does not match primitive return type for: public boolean” 百 ...
- 20165213&20165225结对学习感想及创意照
20165213&20165225结对学习感想及创意照 会JAVA的大学生活好小组 团队感悟: 1+1>2还是1+1<2? 上述两个观点实际没有对错之分,取决点在于个人见解. 相信 ...
- VS2017上在线和离线安装Qt插件(在线安装)
版权声明:如需转载,请告知博主并声明出处 https://blog.csdn.net/CLinuxF/article/details/88816436文章目录前言在线安装离线安装(推荐)前言很多朋友喜 ...
- Python开发【笔记】:从海量文件的目录中获取文件名--方法性能对比
Python获取文件名的方法性能对比 前言:平常在python中从文件夹中获取文件名的简单方法 os.system('ll /data/') 但是当文件夹中含有巨量文件时,这种方式完全是行不通 ...
- Log4j与Logback
一.Log4j简介: 1.Log4j(log for java) 01.是apache的一个开源项目 02.是使用java语言编写的一个日志框架 03.用于记录程序中的日志信息 04.可以将日志信息输 ...
- VS Code对.NET Core项目持续的Build
首先打开csproj文件, 添加一个watcher tool: <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGr ...