write up
-
[Lord of SQL_injection] #3 goblin$ 웹 해킹 $/los.rubiya.kr 2019. 2. 10. 22:55
2번 문제였던 cobolt와 매우 비슷합니다. Id가 admin이여야 clear가 됩니다. 여기까지는 그냥 똑같은데 난이도가 조금 올라 갔습니다.필터링이라고 해서 어떠한 문자를 못쓰도록 해둔 것입니다. 해당 코드에서는 ' 이랑 " 이랑 ` 를 필터링 해뒀습니다. 문자열 전송하기 위해서는 ' 또는 " 가 필요한데 없이도 전송시키는 방법이 있습니다. 바로 16진수로 전송하고자 하는 문자열을 적어주면 되는 것 입니다. 그럼 한번 문제를 풀어 보겠습니다.?no=0 or id=0x61646d696e 라고 입력해서 clear가 떳지만 no=1이라고 한번 해보겠습니다Clear가 뜨지 않았습니다. no=1은 guest인것 같습니다.no=1을 제외한 나머지 아무숫자나 넣으면 clear라는 문구가 나옵니다. 다른 방법 :..
-
[Lord of SQL_injection] #1 gremlin$ 웹 해킹 $/los.rubiya.kr 2019. 2. 10. 22:44
php코드가 제공되어 있습니다. If($result['id']) solve("gremlin")에서 id의 결과값이 있다면 해결되는 문제 입니다. 하지만 query를 보면 select id from prob_gremlin where id='' and pw='' 에서 id와 pw가 and로 연결 되어 있기 때문에 두값이 전부 참이어야 한다는 것을 알수 있습니다. 파라미터값에 id = "1"을 넣어 보겠습니다. 파라미터값을 1개 넣을 때는 ?id=1과 같이 ?를 사용해 줍니다.파라미터 값에 따라서 query에 나타나 있습니다. 이번엔 id=1와 pw=1을 넣어 보겠습니다.하지만 query빼고는 달라진 점이 없습니다. Id의 값이 무엇이든 간에 pw가 참이어야 할것 같습니다.파라미터를 다음과 같이 ?id=1&p..
-
NCSC CTF 2019 [Reversing]2factorauth write upCTF write_up/NCSC CTF 2019. 2. 9. 01:19
↑문제 파일파일을 실행해 보니 다음과 같이 PASSWORD1을 물어보고는 답이 아닌지 :( 를 출력하네요 어떤 파일로 이루어 졌는지 보겠습니다.ELF 파일로 되어 있네요. IDA를 이용해서 분석해 보겠습니다.↑main 함수 일단 fgets로 11글자를 입력으로 받고 그 길이 만큼 rot13함수를 반복 시키네요 rot13함수를 한번 보겠습니다.아스키 코드를 이용해서 13을 더하고 빼는 함수 같네요 그리고 memfrob함수를 거쳐서 test와 test1을 비교해서 같으면 넘어가고 다르면 아까 처럼 :( 가 출력되는 것 같습니다. memfrob함수는 42랑 XOR하는 함수 입니다. 따라서 역연산 시에 42랑 XOR해야합니다. 25번줄 부터 보면 이번엔 PASSWORD2로 숫자를 입력합니다. v4 = (14 *..
-
NCSC CTF 2019 [Reversing]Warmup write upCTF write_up/NCSC CTF 2019. 2. 8. 23:43
bin파일은 ELF 파일로 되어 있기 때문에 IDA 프로그램으로 바이너리를 분석해 보도록 하겠습니다.↑main() 함수 FLAG 를 입력 하는데 입력한 문자열을 8번째 줄에 의해서 Hex로 변환해 줍니다. 그리고 func()로 들어가게 되는데↑func() 함수 12번줄 에서 재귀함수를 사용하고, 13번 줄에서 입력한 값의 Hex값을 역순으로 바꿔 주는 역할을 합니다. 그리고 나서 main()함수의 10번째 줄의 d71297374333f597374333f597374333b7374756e6962757365637 와 test를 비교해서 참이 되어야 합니다. D71297374333f597374333f597374333b7374756e6962757365637 -> 7365637572696e6574737b333473..
-
NCSC CTF 2019 [Crypto]crypto1 write upCTF write_up/NCSC CTF 2019. 2. 8. 23:17
파일에서 주어진 값은 다음과 같습니다. 1 2 3 n = 93587363287156334812299342740228308093795365883388785316655388313363539378259286962127927636210532538900920198550544117072392764271544799515433876778458261254334996572307192587527399669983018757929928245773886731002488376926853218802124573883439481717837639393599516660701804298344896143670444749710014423277 e = 65537 c = 6708345970428668167609844882584957784741432..
-
NCSC CTF 2019 [Crypto]Hmm.. write upCTF write_up/NCSC CTF 2019. 2. 8. 23:05
서버를 실행해 보면 다음과 같은 문구가 출력됩니다.Key값을 찾기 위해서는 a와 b의 값을 알아야 합니다. a와 b의 값을 찾는 Python코드를 작성해 보았습니다. 1 2 3 4 5 g = 15 p = 9605179 for i in range(0,100): print(str(i)+" "+str((g**i)%p)) ↑ a값구하기.py 1 2 3 4 5 g = 15 p = 9605179 for i in range(0,100): print(str(i)+" "+str((g**i)%p)) ↑ b값구하기.py 디피헬만 알고리즘에 의해서 KeyA = (gb % p)a % pKeyB = (ga % p)b % p 입니다. 값을 계산해 보면 둘다 값이 7901925가 나옵니다. 해당 키를 가지고 복호화를 해야하는데 문제..