记事本

ISG初赛library

子曰:温故而知新。最近一段时间没有练习pwn的题目,正好当时ISG初赛的library还一直没研究,于是练习了下。果然是稍微放一放就生疏了…… 比较明显的问题是在register里,有一个format string attack。但这道题对这里还是有一些限制,比如字符串长度只有15,而且一旦调用过一次就不能再调用了。我最初光考虑这个漏洞了,想好久也没有找到好的方法。因为有ASLR,所以必须...

用QEMU模拟ARM环境

之前遇到ARM逆向的入门题,但没有环境只能静态分析,非常慢;而且我觉得边调试边学应该会快一些,于是决定模拟一个ARM环境装linux系统。 首先是QEMU,由于单位电脑系统是RHEL 6,没有qemu-system-arm,于是我不得不编译了一次。我下的是qemu-2.0.2,运行 $ ./configure --target-list="arm-softmmu arm-linux-u...

第一次做ARM逆向的题目

把ARM环境搭好后,就可以动态调试了。之前一道arm逆向的题目,由于没有环境一直只能静态分析,但对arm完全不熟,进行不下去。果然能动态调试就好了。 题目给了一个.c文件和一个.asm文件。我首先编译.c文件,但发现得到的结果用了好多thumb的16 bits的代码,而这和给的.asm文件是不同的。搜索后发现需要指定-marm。于是 $ gcc leg.c -g -marm -o leg...

webhacking.kr challenge 12

这道题给了源代码,发现过滤了union。于是只能从当前表考虑了。 尝试了取no=1,得到guest,说明其对应的no是1。如果表里还存在id=admin的记录,那么那条记录的id要么比1小,要么比1大。于是分别尝试这两种,发现后一种是正确的 http://webhacking.kr/challenge/web/web-12/index.php?no=9)+or+no>1--+

webhacking.kr challenge 10

这道题其实和web-09非常像。 进入页面,发现有提示,知道了column和表的名字。然后试了下直接把参数no取为查询语句,发现还是很多过滤了,而且最后发现似乎返回值只见到了0和1,估计还是盲注。 过滤的地方,主要是空格有问题,但如果把空格换为换行符%0a就可以了。 然后还用昨天的思路,但一直跑不出来……最后搜了答案。相比我的,主要是这次flag有两个,用我昨天做web-09时的那种对...

webhacking.kr challenge 9

这道题花了好久啊才做出来……不愧是这么大分值的题目 首先,直接点击后就是遇到了HTTP basic auth。由于realm是sql injection world,我开始还以为在这里就要有注入……试了各种知道的payload发现没有用,于是在这里卡住了 然后是搜索时偶然发现这里提到了他的basic auth被GETS方法绕过了,而实际上GETS并不是什么正确的方法,是因为配置时只检查了...

webhacking.kr challenge 7

发现有页面的源代码,发现参数val处存在注入,而且在提示里也说了用union。所做的防御是过滤了一些字符,而且每次随机选一个查询语句,不同的语句需要闭合的括号数目不同。 由于不允许使用空格和注释,我就用TAB来分词;由于最后需要的结果2也不允许出现,加号也不允许出现,我们用减法3-1=2。 由于只有5种随机的情况,所以选定一种一直跑应该就有选中的可能。我选了最简单的只有1个括号的, h...

webhacking.kr challenge 8

接连的几道题都是代码审计的。这道题里,对User-Agent有两个取法,一种是getenv,另一种是$_SERVER,而对两个的不一致的过滤就造成了问题。 具体地,getenv得到的里面不限制单引号、括号和注释符号#,而且会在后面的插入语句里出现。如果我们这里取User-Agent: agent','ip', 'admin')#,那么就会插入一条id为admin的记录。 接下来,我们再请...

webhacking.kr challenge 6

通过阅读源代码,发现只是简单地将cookie做了些字符替换,再用base64解码了20次。于是我们只需要反过来走一遍即可。大部分代码甚至可以直接用他。 <?php $val_id="admin"; $val_pw="admin"; for($i=0;$i<20;$i++) { $val_id=base64_encode($val_id); $val_pw=b...

webhacking.kr challenge 5

打开页面,查看代码发现只有login可用,点击后来到一个登陆页面。试着登陆了下,发现需要登陆admin;而似乎没有找到注入。 紧接着,发现可以直接浏览目录,在该目录下有另一个文件join.php,点进去发现什么都没有。于是查看代码,发现有混淆的js。通过将其内容打印出来,发现需要cookie和URL里包含一定内容才会显示表格。我们直接按照表格内容提交,发现可以注册。 于是试着注册admi...