第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注入的更多相关文章

  1. 【sqli-labs】 less24 POST- Second Order Injections *Real treat* -Stored Injections (POST型二阶注入 *真的好玩?* 存储注入)

    简单登陆浏览一遍后,发现是一个登陆注册修改密码的应用 审查一下代码 登陆页面的username,password使用了转义 注册页面的参数也进行了转义处理 但是在修改password的页面,直接从se ...

  2. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  3. ATM-JAVA程序 //程序有5处相同错误,找不出原因 转账功能没有实现,修改密码来不及实现了

    package JCC;//信1705-3 20173681 靳晨晨import java.io.BufferedReader;import java.io.File;import java.io.F ...

  4. sqlite修改表、表字段等与sql server的不同之处

    sqlite中只支持 ALTER TABLE 命令的 RENAME TABLE 和 ADD COLUMN. 其他类型的 ALTER TABLE 操作如 DROP COLUMN,ALTER COLUMN ...

  5. 九十八:CMS系统之登录页面CSRF保护和修改密码页面

    加上CSRF防御 修改密码页面 视图 class ResetPwd(views.MethodView): decorators = [login_required] # 校验登录状态 def get( ...

  6. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  7. 注入学习1:SQL注入语句大全

    学习背景 之前做了xss预防,以及些许的注入预防了,但是不够全面,如果还是搜集了下一些常用的注入手段,以此用来进行更好的预防. 什么是注入 一般来说,SQL注入一般存在于形如:HTTP://xxx.x ...

  8. Atitit 修改密码的功能流程设计 attilax总结

    Atitit 修改密码的功能流程设计 attilax总结 1.1. 注意点1 1.2. 设计修改用户密码功能时把用户ID保存在哪里?1 1.3. Ui设计1 1.4. 功能设计源码1 1.5. Agt ...

  9. 使用sqlmap注入DVWA的SQL Injection菜单

    1 使用sqlmap注入DVWA的SQL Injection菜单 本教程中的登陆地址:http://192.168.0.112/dvwa/login.php 1.1 获取cookie信息 1) 使用a ...

随机推荐

  1. SQL server 清除缓存

    在进行性能分析的时候有时候需要清除缓存以便进行下一次分析. SQL Server提供了一些工具来清除缓存的性能数据.使用下面的语句来完成这些任务. 清除全局缓存使用下面的语句: DBCC DROPCL ...

  2. 一个生产可用的mysql参数文件my.cnf

    [client]#客户端选项设置#设置客户端和连接字符集default_character_set = utf8port = 3306socket = /opt/mysql-5.6.24/tmp/my ...

  3. Redis的概念及与MySQL的区别

    学了MySQL相关知识后,了解到很多公司都会用mysql+redis互补使用的,今天学习整理一下Redis的相关知识. 首先是Redis和MySQL的区别: MySQL是典型的关系型数据库:Redis ...

  4. Chap2:区块链基本技术[《区块链中文词典》维京&甲子]

  5. 转:环绕通知返回值 object 类型

    遇到 AOP 环绕通知报错  “return value from advice does not match primitive return type for: public boolean” 百 ...

  6. 20165213&20165225结对学习感想及创意照

    20165213&20165225结对学习感想及创意照 会JAVA的大学生活好小组 团队感悟: 1+1>2还是1+1<2? 上述两个观点实际没有对错之分,取决点在于个人见解. 相信 ...

  7. VS2017上在线和离线安装Qt插件(在线安装)

    版权声明:如需转载,请告知博主并声明出处 https://blog.csdn.net/CLinuxF/article/details/88816436文章目录前言在线安装离线安装(推荐)前言很多朋友喜 ...

  8. Python开发【笔记】:从海量文件的目录中获取文件名--方法性能对比

    Python获取文件名的方法性能对比 前言:平常在python中从文件夹中获取文件名的简单方法   os.system('ll /data/')   但是当文件夹中含有巨量文件时,这种方式完全是行不通 ...

  9. Log4j与Logback

    一.Log4j简介: 1.Log4j(log for java) 01.是apache的一个开源项目 02.是使用java语言编写的一个日志框架 03.用于记录程序中的日志信息 04.可以将日志信息输 ...

  10. VS Code对.NET Core项目持续的Build

    首先打开csproj文件, 添加一个watcher tool: <Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGr ...